把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

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:072769
用户头像

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

关注

评论

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

速报|StarRocks亮相云栖大会,携手阿里云EMR 打造极速数据湖分析新体验

StarRocks

数据库

数据中台选型必读(一):元数据管理是数据使用与共享的根基

雨果

数据中台

深圳区块链交易所app开发、数字资产交易系统搭建

W13902449729

深圳区块链交易所app

快速应用程序开发

世开 Coding

软件开发 快速开发 敏捷精益

金融服务的超级App

FinClip

FinClip | 2022 年 10月产品大事记

FinClip

论坛回顾|FlyFish 一周年开源圆桌论坛圆满落幕

云智慧AIOps社区

开源项目 开源软件 开源治理 开源贡献 开源运营

华为云从入门到实战 | 云容器服务

TiAmo

华为 华为云 云开发 11月月更

Web渗透测试攻防之浅述信息收集

网络安全学海

网络安全 安全 信息安全 渗透测试 信息收集

思码逸 X 贝壳:用代码分析,升级既有效能度量体系

思码逸研发效能

数据 研发效能 研发管理工具

Spring Boot「23」DAO 模式

Samson

Java spring Spring Boot 学习笔记 11月月更

华为开发者大会2022即将召开 精彩主题演讲线上同步直播

科技汇

2022干货来袭!阿里大佬“亲码”Java全线笔记,差距不止一点点

程序知音

Java java面试 后端技术 Java面试题 Java面试八股文

软件测试面试真题 | 常见网络状态响应码

测试人

软件测试 面试题 状态码 测试开发

走向IPv6,阿里巴巴IPv6规模化部署实践

阿里技术

ipv6

数据中台选型必读(二):数据中台如何搭建元数据管理中心

雨果

数据中台

以开发之名 | bilibili会员购让IP在眼前动起来

HarmonyOS SDK

如何快速优雅的用Know Streaming创建Topic

石臻臻的杂货铺

11月月更

使用 Goland 开发 dubbogo 项目时如何自动快速格式化 import 代码块

apache/dubbo-go

InnoDB与MyISAM的使用,该如何选择?

想要飞的猪

在线KMS激活windows系统

源字节1号

软件开发 小程序开发

沙龙预告 | EPM 业财一体-合并报表(11月8日 14:00)

信通院IOMM数字化转型团队

数智化转型 EPM 业财一体 沙龙预告

活字格低代码开发平台怎么样?靠谱吗?

优秀

低代码平台

Jenkins 构建的时候提示 DOCKER_HOST 错误

HoneyMoose

数仓、湖仓、数据中台都没解决的企业数字化难题,却被它解决了

雨果

数据中台 数据仓库 DaaS数据即服务 数仓一体

订单里的充值卡消费和积分抵扣怎么处理?

产品海豚湾

产品经理 产品设计 电商系统 分析设计 11月月更

MSE 风险管理功能发布

阿里巴巴云原生

阿里云 云原生微服务

Edge 浏览器提供了一个站点信息的按钮

HoneyMoose

深圳区块链交易所的交易方式及开发搭建

W13902449729

深圳区块链交易所开发

Go 云原生实战:如何增加应用配置模块

宇宙之一粟

云原生 配置 Go 语言 Web应用开发 10月月更

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