InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

JRuby:该不该转向Java 5?

作者 Werner Schuster 译者 Jason Lai 发布于 2007年7月30日

领域
架构 & 设计,
运维 & 基础架构,
语言 & 开发
主题
Ruby ,
编程 ,
配置管理 ,
Java
标签
语言特性 ,
部署 ,
JRuby ,
Apache Harmony ,
开源Java

jruby-dev邮件列表中,一个关于向Java 5迁移的讨论已经展开。早在Java 5被引入之时,这就已经是对于Java项目频繁讨论的话题了。有许多项目,例如Eclipse,选择尽可能久地保持对1.4的兼容性,甚至有一些基本技术,例如OSGi或者SWT还在保持对1.1和1.2的兼容性

独立应用程序在这方面问题则少了很多,尤其在它们的发行版附带了JVM的情况下更是如此。而在另一方面,类库则像个烫手山芋,因为向Java 5的迁移,从根本上意味着被强制部署在Java 1.4环境下的类库使用者将无法使用该类库,或者他们必须使用类库能够支持Java 5的较新版本。

JRuby则处在独立应用程序和类库之间。毕竟,人们可以使用下面的一行命令来运行任意的Ruby程序:

jruby filename.rb

对于这种情况,JRuby需要某个特殊的Java版本并不会成为问题,除非JRuby中的特定代码需要Java 5类库。当然,如果公司在某个Java版本上进行了标准化的话,那么这就会成为一个问题了。

当JRuby被用在应用程序内部作为Ruby解析器的时候,它的身份也就变成了一个类库。在这种情况下,如果提高了JRuby所需的Java版本,也将迫使宿主应用不得不升级相应的需求(如果这些应用还没有使用Java 5)。

除了允许JRuby团队使用诸如Annotation或者Enum这样的新语言特性以外,人们对打破与1.4的兼容性以及使用Java 5的新特性方面,还有一些相当有力的支持论据。其中之一就是在Java 5新增的高级并发类库。目前,JRuby的分发包中还附带了用于早期Java版本的java.util.concurrent移植版类库,这就意味着下载大小的增加。此外,由于这个移植版无法使用Java 5中针对并发支持的类,它其中的某些功能无法和Java 5的java.util.concurrent系列类相匹敌的性能。

保持1.4版本兼容性的主要原因是大公司的升级周期一般都非常长,因此他们会试图在软件版本上进行标准化。然而,由于绝大多数平台都提供了Java 5的支持,当然也就是Windows、MacOS X和Linux的三重唱,因此反对向Java 5迁移的理由已经很快变得非常微不足道了。在Java 5发布了三年之后,有了早期采用者发现并报告问题之后,JVM及其类库也已经可以很安全地被认为是成熟了的。

另外一个原因相比起来就不是那么重要了,即缺乏一个基于自由(文如其名)软件许可,与Java 5完全兼容的实现。尽管GNU Classpath以及Apache Harmony项目正在一步一步朝着完全兼容的目标挪进,但它们都还不到火候。实现95%以上的API完成度,已经是这些项目所取得的极大成功,但比起和Java 5 100%兼容的目标,还仍显不足。尽管类似于Eclipse这样的大型应用可以运行在开源JVM之上,但仍有一些小的不兼容问题会随时跳将出来,也可能成为支持部门头上的一道金箍。

随着Sun公司OpenJDK项目的产生,一个完全以GPL授权的Java将会在不久的将来问世。(注意,Java的其中一些部分还没有以GPL的形式授权,因为Sun还不具备将这些部分用GPL授权的权力)。

应该提到的是,已经发布的JRuby 1.0是兼容于Java 1.4的,并且也将一如既往保持对1.4的支持。

对此您又是什么样的想法呢?您是否还在从事需要保持1.4兼容性项目的开发呢?如果是的话,在公司标准之外是否还有其它原因呢?

查看英文原文:JRuby: Java5 or not?

翻译的真不怎么样. 发表人 wei Kent 发表于
  1. 返回顶部

    翻译的真不怎么样.

    发表人 wei Kent

    看文字很别扭.

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。