9个杀手级 JVM 编程语言

junwong 发布于 2012/03/23 17:56
阅读 27K+
收藏 81


 Java虚拟机已经不再是仅仅局限在 Java 了,很多语言提供了脚本转换,可以让其他的程序在java虚拟机上运行,这样能够让更多的开发者能够依靠JVM在Java平台上大有作为。而且虚拟机以及 对应的字节码都是开源的,所以你也能很容易地生成对应字节码来做一款属于你自己的编程语言。我们今天来看看以下9种新的编程语言。


Groovy是一个被编译成字节码的面向对象的语言。它的语法风格与java很像,但是又没java那么混乱。Java程序员能够很快的熟练使用 Groovy;实际上,Groovy编译器是可以接受完全纯粹的Java语法格式的,这样能够让程序员在学习Groovy时不需要学习任何新语法。需要注 意使用Groovy的一个重要特点就是使用类型推断,即能够让编译器能够在程序员没有明确说明的时候推断出变量的类型。同时Groovy也提供了一个高级 架构来解决字符串处理,xml的序列化与反序列化以及单元测试等等 -- 所有的这一切好处都能为程序员节约不少时间。

JRuby是用来桥接Java与Ruby的,它是使用比Groovy更加简短的语法来编写代码,能够让每行代码执行更多的任务。就和Ruby一 样,JRuby不仅仅只提供了高级的语法格式。它同样提供了纯粹的面向对象的实现,闭包等等,而且JRuby跟Ruby自身相比多了很多基于Java类库 可以调用,虽然Ruby也有很多类库,但是在数量以及广泛性上是无法跟Java标准类库相比的。

Jython,aka JPython,属于第一种专门为JVM专用的脚本语言。它能够用Python语言来高效生成动态编译的Java字节码。一些可选的静态编译方式能够被用 来开发applets,servlets,以及beans。作为Jython的首席程序员,Jim Hugunin,现在已经停止了Jython的相关工作而去微软干活。所以这门语言的发展仅仅也就从2005-2008年,所以就现在看来Jython已 经无法与Groovy以及JRuby作为对手了。现在Jython可以在一些商业应用中找到,也已经得到了WebSphere Application Server以及IMB的商业Java EE产品部门的官方支持。

Clojure是纯粹的函数式编程语言。与Scala类似,Clojure已经有很多内置的并行运行基础建设能够让很多方法同时执行。Clojure也是 被设计为生成通用语言,能够生成.NET以及JavaScript。虽然Clojure也能被直接编译成Java字节码,但是无法使用动态语言特性以及直 接调用Java类库。与其他的JVM脚本语言不一样,Clojure并不算是面向对象的。

Scala经常被我们描述为多模式的编程语言,因为它混合了来自很多编程语言的元素的特征。但无论如何它本质上还是一个纯粹的面向对象语言。它相比传统编 程语言最大的优势就是提供了很好并行编程基础框架措施了。这是唯一一个在JVM中拥有actors -- 另一种并行编程代码生成器。Scala代码能很好的被优化成字节码,运行起来和原生Java一样快。
Kotlin是静态类型的语言,也可以编程成Java字节码以及JavaScript,作为一个时髦又表现丰富的编程语言,Kotlin就是被设计用来生 产高性能要求的程序的,所以运行起来和Java也是不相上下。Kotlin可以从 JetBrains InteilliJ Idea IDE这个开发工具以插件形式使用。

Rhino是使用Java编写的开源的JavaScript引擎。当前是Mozilla公司在主导它的发展,Rhino的特点是为JavaScript加 了个壳,然后嵌入到Java中,这样能够让Java程序员直接使用。其中Rhino的JavaAdapters能够让JavaScript通过调用 Java的类来实现特定的功能。

Ceylon是一个通用的,静态类型编程语言,也是基于阻塞以及面向对象的。据说这个语言深受Java的影响,而且它一开始就是被Red Hat公司设计为给大型团队合作完成大型项目来的。Ceylon的主要努力方向是将语言变得更加可读,更加可预期,更加工具化以及更加模块化。据 Gavin King所说,Ceylon将不仅仅只是个编译器,而将是一个可以取代Java SDK的新Ceylon SDK。

Fantom能够在运行时为JVM以及.NET或者JavaScript平台生成字节码,Fantom是与Groovy以及JRuby差不多的一样面向对 象的编程语言,但是悲剧的是Fantom无法使用Java类库,而是使用它自己扩展的类库。忘了说Fantom也包括actors,而且它最大的优势就是 在网站上有一个非常完备卓越的API文档系统。
加载中
1
wendal
wendal
Jython 还在开发呢!!!!!!!!
1
ExtremeTalk
ExtremeTalk
挺Groovy,我正在用Groovy进行开发,开发效率提高不少
0
chunquedong
chunquedong
Fantom是可以使用Java类库的
0
王君
王君

什么叫 “JVM脚本转换编程语言” ????

 

 基于JVM编程语言

 

 

 

0
崔钢
崔钢
Clojure是LISP的一种方言,这才是它最独特的地方。
wq187731
wq187731
回复 @崔钢 : 这么来说的话,那要调用java的类库的话只能以解释执行的方式了,性能就比生成java class的静态编译要低了。不知道我这样理解对不对呢?谢谢
崔钢
崔钢
回复 @wq187731 : 如果你不需要生成java class 文件,在clojure里面是可以直接调用java的类库的。
wq187731
wq187731
“但是无法使用动态语言特性以及直 接调用Java类库” 我要调用java类库怎么办?
0
JavaGG
JavaGG
关键是看性能~~~~
0
mj4738
mj4738
Scala是面向对象和函数式语言
0
Mr.CT
Mr.CT

有class 2 dll不?

0
南湖船老大
南湖船老大

引用来自“Mr.CT”的答案

有class 2 dll不?

有,是Net的工具
0
大漠穷秋
大漠穷秋

以Rhino目前的状态,称不上【杀手级】吧!

而且JDK8已经全部自己实现了JS引擎,不再使用Rhino了!

返回顶部
顶部