写点什么

JRuby:该不该转向 Java 5?

  • 2007-07-30
  • 本文字数:1338 字

    阅读完需:约 4 分钟

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 版本的 <strong>java.util.concurrent</strong>移植版类库,这就意味着下载大小的增加。此外,由于这个移植版无法使用 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?

2007-07-30 01:001168
用户头像

发布了 117 篇内容, 共 21.2 次阅读, 收获喜欢 0 次。

关注

评论

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

PPT如何制作思维导图?这2个工具轻松制作思维导图!

彭宏豪95

思维导图 PPT 在线白板 办公软件 绘图软件

OpenHarmony之NAPI框架介绍

OpenHarmony开发者

Open Harmony

全国独家线下面授 | 上海大规模敏捷LeSS认证2024年3月14-16日开班

ShineScrum

Authing 入选《 2023 年央国企信创应用与实践研究报告》优秀服务商

Authing

Idaas Authing 第一新声

人工智能测试新篇章:有限状态机与知识图谱的融合

测吧(北京)科技有限公司

测试

人工智能 | 智能化升级:测试用例变更与新老版本Diff分析

测吧(北京)科技有限公司

测试

2024第十二届成都国际智能驾驶技术展览会

AIOTE智博会

自动驾驶展 智能驾驶展

基于 Flink SQL 和 Paimon 构建流式湖仓新方案

阿里云大数据AI技术

全新Self-RAG框架亮相,自适应检索增强助力超越ChatGPT与Llama2,提升事实性与引用准确性

汀丶人工智能

AI大语言模型 语义搜索系统 智能检索 self-rag

“数字创新产品课程” 2024年1月20-21日 · CSPO认证周末班【提前报名特惠】CST导师亲授

ShineScrum

ArcGraph 缓存的设计与应用实践丨技术解读

Fabarta

AI 图数据库 数据库缓存 AI基础设施

汇总 | 一文了解常用的 NFT 数据分析平台

NFT Research

NFT 数据分析平台 NFT\ NFTScan

引领Transformer时代的新型大模型架构

百度开发者中心

大模型 LLM

HarmonyOS属性动画开发示例(ArkTS)

HarmonyOS开发者

HarmonyOS

软件测试/测试开发/人工智能丨从面试屡遭失败,到年薪28w

测试人

人工智能 软件测试

让数据库运维审计安全无死角

尚思卓越

数据库 运维审计

如何做好架构设计,架构设计有章可循吗?

不在线第一只蜗牛

架构 架构设计

100天,3个版本,他们让营销AIGC起来了

脑极体

AI

软件测试 |人工智能在软件测试中的崭新应用

测吧(北京)科技有限公司

测试

软件测试/测试开发/人工智能丨知识图谱实现精准测试效果

测试人

人工智能 软件测试

[WPF]动手写一个简单的消息对话框

不在线第一只蜗牛

WPF 造轮子 消息

赋能自然语言处理的强大模型

百度开发者中心

nlp 大模型

糟糕!试用期被裁了

王磊

Java

人工智能 | 知识图谱引领精准测试:人工智能在软件测试的新风向

测吧(北京)科技有限公司

测试

人工智能的历史演进:从专家系统到机器学习的蜕变

测吧(北京)科技有限公司

测试

人工智能测试演进:测试覆盖度分析技术的巅峰

测吧(北京)科技有限公司

测试

E往无前 | 日志成本下降25%+!腾讯云大数据ES Lucene压缩编码深度优化大揭秘

腾讯云大数据

ES

JRuby:该不该转向Java 5?_Java_Werner Schuster_InfoQ精选文章