QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

JVM 动态语言比武

  • 2008-03-12
  • 本文字数:1298 字

    阅读完需:约 4 分钟

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

2008-03-12 19:072360
用户头像

发布了 225 篇内容, 共 65.4 次阅读, 收获喜欢 50 次。

关注

评论

发布
暂无评论
发现更多内容

怎么转换视频的格式?

InfoQ IT百科

百万奖金,首届船海数据智能应用创新大赛正式开赛

科技热闻

24小时自助洗车加盟怎么收费?

共享电单车厂家

自助洗车加盟 24小时自助洗车

常见的杀毒软件有哪些?

InfoQ IT百科

TASKCTL 调度平台服务节点管理

敏捷调度TASKCTL

DevOps 分布式 自动化部署 Kafka ETL TASKCTL

截图快捷键是什么?

InfoQ IT百科

6. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 收集诊断跟踪信息与如何分析瓶颈

MASA技术团队

C# .net 测试 压测 测试工具

限时好礼 | MongoDB又有新书籍出炉啦!

MongoDB中文社区

mongodb

电脑上微信聊天记录的默认保存路径是在哪里?

InfoQ IT百科

自助洗车加盟!自助洗车品牌大全

共享电单车厂家

自助洗车加盟 自助洗车品牌

java高级用法之:绑定CPU的线程Thread-Affinity

程序那些事

Java Netty 程序那些事 4月月更

淘宝小程序体验优化:数据分析和优化实践

阿里巴巴终端技术

小程序 数据分析 体验优化 性能模型

在 Amazon QuickSight 中使用 Athena 数据连接器可视化 DynamoDB 数据

亚马逊云科技 (Amazon Web Services)

DevOps 亚马逊云科技 career tutorial

2022中国“SaaS”领域十大趋势

小炮

SaaS SaaS应用 SaaS平台

将node项目部署到云服务器详细教程

CRMEB

加盟自助洗车需要符合什么条件

共享电单车厂家

加盟自助洗车 自助洗车加盟条件

深入浅出 Zookeeper 中的 ZAB 协议

悟空聊架构

zookeeper ZAB 4月日更 悟空聊架构 4月月更

怎么建立无法删除的文件夹?

InfoQ IT百科

自助洗车机加盟项目要怎么加盟

共享电单车厂家

自助洗车加盟 自助洗车机项目

如何将PDF转换成Word?

InfoQ IT百科

png、jpg这两种图片格式有什么不同?

InfoQ IT百科

怎么添加或删除电脑上的应用软件呢?

InfoQ IT百科

post接口请求测试,通俗易懂!

Liam

测试 Postman swagger 测试工具 jmetere

24小时自助洗车设备厂家哪家好?

共享电单车厂家

自助洗车机厂家 24小时自助洗车 自助洗车机设备

活动报名 | 如何基于开源项目 Tapdata PDK,快速完成数据源和目标的开发?

tapdata

数据库

如何发起 MQTT 亿级连接和千万消息吞吐性能测试

阿里巴巴云原生

深挖房地产行业数智化转型升级价值,推动地产管理革新

数商云

产业互联网 数字化转型 企业数字化

浅析mysql性能优化

乌龟哥哥

4月月更

如何使用hardhat进行合约uups模式升级

BSN研习社

区块链

百万奖金,首届船海数据智能应用创新大赛正式开赛

科技热闻

TASKCTL 用户权限操作设置

敏捷调度TASKCTL

DevOps 分布式 敏捷开发 ETL系统 自动化运维

JVM动态语言比武_Java_Charles Humble_InfoQ精选文章