写点什么

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

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

关注

评论

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

浏览器管理脚本用什么软件?

真大的脸盆

Mac Mac 软件 脚本管理 管理脚本 浏览器脚本插件

电商广告营销中常见公式和优化手段

邴越

广告 营销 电商 信息流

从集成工具到集成资产,企业数智化底座亟待升级

用友BIP

扒去Spring事件监听机制的外衣,竟然是观察者模式

做梦都在改BUG

Java spring 设计模式 观察者模式 事件监听

可观测性平台-数据洞察(2)-网站性能探究

Yestodorrow

前端 可观测性 网站性能

EasyRecovery2024最新版电脑数据恢复软件

茶色酒

EasyRecovery Photo16

FL Studio2024最新中文版本水果编曲工具

茶色酒

FL Studio21

企事业单位通用版招采系统(SRM),招采全过程闭环流程

金陵老街

深入理解 slab cache 内存分配全链路实现

bin的技术小屋

内存管理 Linux Kenel 内存池 slab

Prompt 技巧指南-让 ChatGPT 回答准确十倍!

Zilliz

openai ChatGPT

2023年厦门等保二级备案办理流程

行云管家

等级保护 等保备案 厦门

共享电单车的未来市场如何?值得做吗?

共享电单车厂家

共享电单车投放 本铯共享电动车 共享电动车生产厂家 共享电单车发展趋势

无需nms,onnxruntime20行代码玩转RT-DETR

Openlab_cosmoplat

Spartacus cart id 存储在浏览器 local storage 里面

汪子熙

angular SAP Hybris Spartacus 三周年连更

基于Java的ES全文检索,Neo4J,activiti审批流的知识库管理系统

金陵老街

Java Vue ES

Tuxera NTFS2024Mac专业NTFS驱动软件

茶色酒

Tuxera NTFS2023

单点登录实现思路和方案

做梦都在改BUG

Java 单点登录

AntDB数据库受邀参加第六届上海人工智能大会,分享AIGC时代核心交易系统升级方案

亚信AntDB数据库

AntDB AntDB数据库 企业号 5 月 PK 榜

定档5.14 | 2023宿迁市网络安全大会暨第三届LINKUP+网络安全峰会开放报名中!

权说安全

如何维护好TiDB的三颗仙丹——索引、SQL和IO

TiDB 社区干货传送门

数据库架构设计

工赋开发者社区 | 装备制造企业数字化转型总体框架

工赋开发者社区

Reactive响应式编程系列:解密reactor-netty如何实现响应式

大步流星

Reactive响应式编程系列 reactor-netty reactor-netty原理

免费堡垒机选择开源还是商业免费版好?

行云管家

开源 堡垒机 安全运维 免费堡垒机

软件开发全文档获取(精华版)

金陵老街

ShareSDK Facebook平台注册指南

MobTech袤博科技

TiDB 在 IPv6 的 K8S 和物理机环境的部署

TiDB 社区干货传送门

安装 & 部署 数据库架构选型 数据库前沿趋势

传感器接线方式详解

鸿蒙之旅

OpenHarmony 三周年连更

软件测试/测试开发丨Pytest 测试框架学习笔记

测试人

软件测试 自动化测试 测试开发 pytest

如何在Github参与开源项目的建设

骑牛上青山

GitHub 开源 PR

群星闪耀,众志成城 | 2023年4月《中国数据库行业分析报告》精彩抢先看

墨天轮

数据库 云原生 opengauss 国产数据库 AI4DB

MySQL 分区

潜水员

MySQL 分区

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