InfoQ

新闻

JVM动态语言比武

作者 Charles Humble译者 郭晓刚 发布于 2008年3月12日 下午7时7分

社区
Java
主题
动态语言
标签
Groovy,
JRuby,
Jython

JVM在支持多语言方面的能力比较晚才受到Sun的重视。Sun态度上的转变反映出了在JVM上工作的广大开发者的口味变化,一些开发者正打算通过动态语言来加速部分开发过程。通过纳入JSR 223(Java平台脚本),Sun开始正式认可这种变化,JSR 223让Java SE 6能够执行用Ruby、Python、Groovy或JavaScript等动态语言编写的脚本代码。

Travis Jensen是SirsiDynix的一名技术架构师,最近他对Groovy、Jython和JRuby进行了一次对比,看看这三种语言是否适合用来给一个Java开发团队进行Web GUI开发。他按照以下五条粗略的标准来评估这三种语言:

1、 动态语言与Java之间的交互。Jensen觉得Groovy最强,Jython也相差无几:

“因为Groovy支持使用Java类型,所以覆盖类的方法可以很直接。实例化一个Groovy类和实例化一个Java类没什么两样。”

他认为JRuby的困难最大:

“从Java转到JRuby不是一件小事,虽然JRuby也是编译成class文件。编译器主要还是在加速JRuby本身的交互上着墨。”

2、 IDE支持。因为SirsiDynix一律使用JetBrains公司的IDEA,所以这方面的比较不够充分。比如NetBeans的JRuby插件就没有被纳入评估。Jensen觉得IDEA对Groovy的支持让Groovy成为明显的胜利者。

3、Java开发者的学习曲线。Jensen的结论是Groovy又一次胜出:

“因为Groovy是Java的一个超集,所以从Java到Groovy的学习曲线是十分平直的。尤其是在API方面,它可以直接使用Java API。说实话我不知道Groovy的生产效率是不是像Python和Ruby那么高,但我没有看到任何反面的证据。我直觉认为Python和Ruby的库更适合各自语言,因此会有更高的生产效率。”

他还认为尽管JRuby被看作是一种生产力非常高的语言,但它带给Java开发者的挑战却是最大的:

“由于Ruby更接近函数式语言,它的学习曲线是三者之中最高的。它在Java库以及原生库方面也存在相同的问题。不过老实说,我认为一旦越过困难的学习门槛,JRuby的生产效率是最高的。在这方面我对Ruby只有敬佩之情。”

4、可供选择的Web框架。JRuby赢得一票:

“凭着直接移植的Rails,JRuby得到了最高票数。”

Jython是三者当中最弱的:

“CPython有很多不错的选择,而Jython却已经两年停滞不前。主要原因有两重:一是Jython当前版本是2.2.1,而CPython已经是2.5了;二是很多框架都为了性能而要求C代码编译。”

 5、 社区支持:Jensen觉得三种语言的社区支持都很优秀,不过Groovy稍胜一筹:

“因为JVM是Groovy的唯一平台,所以整个Groovy社区同时也属于JVM社区。对于打算部署到JVM上的人来说,这一点显然是重要的优势。而且Groovy挂着‘Java脚本语言’的名头,也吸引了很多注意力,对社区显然是有好处的。”

当然像这样的评价多少都会有点主观,而且情况会随着时间改变。比如最近受到Sun雇佣Frank Wierzbicki和Ted Leung的鼓舞,Jython的活跃程度就在上升,他们未来应该会改善Jython Web框架的状况。无论如何Jensen的文章提供了一个很好的起点,也给面临类似决策的架构师和开发者们设立了一组基本的评估标准。

查看英文原文:JVM Dynamic Language Shootout

6 条回复

回复

偏见啊,偏见 发表人 dennis zane 发表于 2008年3月12日 下午8时26分
Re: 偏见啊,偏见 发表人 Xiaogang Guo 发表于 2008年3月12日 下午8时58分
Re: 偏见啊,偏见 发表人 Jan X 发表于 2008年3月12日 下午11时18分
Re: 偏见啊,偏见 发表人 John Lee 发表于 2008年3月13日 上午6时5分
Ruby 的具体实现有待提高 发表人 blade sun 发表于 2008年3月13日 上午3时50分
意义不大 发表人 Zieke Lee 发表于 2008年3月18日 上午6时21分
  1. 返回顶部

    偏见啊,偏见

    2008年3月12日 下午8时26分 发表人 dennis zane

    1、与java的交互性,JRuby怎么就困难最大了?require 'java',想怎么用就怎么用
    2、Netbeans对Ruby的支持,这位大大没用过怎么评价?
    3、谁说Ruby更接近函数式语言?Ruby比java更OO
    4、社区,我倒是第一次听说Groovy的社区比Ruby活跃
    5、infoq的新闻是不是不要只是简单地翻译英文站,像这样的语言比较新闻实在没什么价值。搞的好像是个外国同胞说的话就比较“正确”似的。

  2. 返回顶部

    Re: 偏见啊,偏见

    2008年3月12日 下午8时58分 发表人 Xiaogang Guo

    不是说了吗“这样的评价多少都会有点主观”,这篇的目的就是刺激您老出来拍砖的。

  3. 返回顶部

    Re: 偏见啊,偏见

    2008年3月12日 下午11时18分 发表人 Jan X

    Ruby的确比Java更OO,也的确比Java更接近functional language.

  4. 返回顶部

    Ruby 的具体实现有待提高

    2008年3月13日 上午3时50分 发表人 blade sun

    Ruby 语言很有吸引力,但是她的具体实现(CRuby JRuby)需要改进的地方很多。

  5. 返回顶部

    Re: 偏见啊,偏见

    2008年3月13日 上午6时5分 发表人 John Lee

    大家都很OO,不过ruby 可以FP,所谓困难主要是解决问题的思路发生了变化

  6. 返回顶部

    意义不大

    2008年3月18日 上午6时21分 发表人 Zieke Lee

    更关注语言特性的实现,成熟度
    Interview里有一个对Ola Bini的访问对开发者还是有些启发的
    环境也有差距,很多community driven的东西还没有呈现在中文里
    QCon好像还有一个Rod等人的集体发言,language不是问题

独家内容

剖析短迭代

敏捷教练Dave Nicolette提出:我们应该如何设定迭代长度?是要根据发布周期的时间么?使用短迭代又有哪些好处?

应用JSF、Ajax和Seam开发Portlets(1/3)

本文主要讲述了如何用JBoss Portlet Container 和JBoss Portlet Bridge创建新项目,怎样配置一个JSF应用去使用JBoss Portlet Bridge,以及JBoss Portlet Bridge所具备的功能。

AtomServer:数据分发的发布动力(第二部分)

在这篇文章里,Bryon Jacob和Chris Berry将和我们继续探讨AtomServer,它是基于Apache Abdera的完整Atom存储实现。作者还创建了几个Atompub规范扩展,其中包括自动标记、批处理和Feeds聚合。

架构师(试刊第二期)

InfoQ中文站的电子杂志《架构师》试刊第二期出版了!相比于上期,我们在内容的选择安排和版式上都根据读者的意见重新做了修正。“细节决定成败”,我们希望基于InfoQ中文站的专业内容,《架构师》能逐渐成为大家喜欢的电子刊物!

一种正规的性能调优方法:基于等待的调优

在本文中,Steven Haines探讨了Web应用性能调优问题。该领域过去更像是一门艺术而不是一门科学。他提出了一种称为基于等待调优的方法,使整个调优过程更加可度量,也因此更具科学性。

Java程序员ActionScript 3入门

通常来说,改变技术路线时最艰难的部分是辨别语言语法之间的不同。这篇文章就为Java开发者提供了一份如何转向Flex基础语言ActionScript的指南。

浅谈如何创建Rails应用

本视频主要以财帮子为例,介绍了如何创建一个PV为百万级的Rails应用。其中包括:Rails应用的服务器架构、Rails Cache的优化、负载均衡的处理、Web服务器的调试、分布式解决方案、Open API的设计等等。

Alexandru Popescu谈InfoQ.com网站架构

InfoQ首席架构师Alexandru Popescu在采访中谈论了InfoQ架构、Webwork与DWR、Hibernate与JCR、Hibernate可扩展性、最新的InfoQ视频流系统和InfoQ的未来规划。