NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

IBM 开源 JVM 实现 OpenJ9,并提交 Eclipse 基金会托管

  • 2017-09-26
  • 本文字数:2364 字

    阅读完需:约 8 分钟

近日,IBM 将其 J9 Java 虚拟机命名为 OpenJ9,托管至 Eclipse 基金会并在 GitHub 上开源,OpenJ9 的定位是企业级的开源 Java 虚拟机。

在 2006 年 9 月 20 旧金山举办的 JavaOne 上,IBM 就曾宣布开源其 Java 虚拟机 OpenJ9,该项目的领导者 Dan Heidinga 做过 J9 相关的技术演讲,阐述了该虚拟机的技术架构和相关的生态系统。当时,IBM 计划随Java 9 一起开源其OpenJ9。根据Dan Heidinga 的描述,OpenJ9 的核心价值在于高性能、高可用性和适用性。OpenJ9 的技术架构如下所示:

为了实现性能的提升,OpenJ9 在数据结构、类加载、线程管理、解释器等方面都进行了优化。按照IBM 的规划,OpenJ9 与Eclipse OMR 的关系如下图所示:

其中, Eclipse OMR 是用于构建可靠、高性能语言运行时的跨平台组件。这组件使用 C 和 C++ 编写,借助它能够构建跨不同硬件和操作系统平台的语言运行时,该项目也在 GitHub 开源。根据 RednaxelaFX 的解读,OMR 是最上游,OpenJ9 基于OMR 构建出一个完整的JVM,OpenJ9 + OpenJDK Java Class Library 构成出一个完整的Java 运行时环境,然后在此基础上添加IBM 的特化功能最终构成IBM 发行版J9 及其配套库。

关于公众可能关注的问题, Eclipse OpenJ9 在官网上进行了回应

Eclipse OpenJ9 是 OpenJDK 的替代方案吗?

不是。Eclipse OpenJ9 是一个 Java 虚拟机 (JVM),也就是运行 Java 应用程序的引擎,而 OpenJDK 是一个完整的开发工具包,除了 JVM 还包含其他的组件比如 Java 类库。默认情况下,OpenJDK 使用名为 Hotspot 的 JVM 进行构建。简单来说,OpenJ9 是 JVM 的替代方案,可将其包含到 OpenJDK 的二进制文件中。

Eclipse OpenJ9 与 Hotspot 的差别在哪里?

Hotspot 和 Eclipse OpenJ9 都是可以包含在 OpenJDK 中的 Java 虚拟机,但它们具有不同的功能。按照不同的构建过程,你可以让 OpenJDK 二进制文件中包含 Eclipse OpenJ9 ,也可以包含 Hotspot。

OpenJ9 中的 J9 代表什么含义呢?

为了澄清公众的误解,J9 != Java 9。如果读者对它名字的来源感兴趣的话,可以参考这篇博客文章

既然如此,我们为什么要使用 Eclipse OpenJ9 而不是默认的 JVM 呢?

如果你正在为应用程序寻找企业级的运行时环境,那么建议使用 Eclipse OpenJ9 构建 OpenJDK。这个高性能、可扩展的虚拟机是众多 IBM 企业软件产品的核心。你还可以进一步地优化 OpenJ9,提升特定场景下 Java 应用的性能。

为什么 IBM 将他们的 J9 虚拟机贡献给了 Eclipse 基金会?

IBM 公开承诺要将创新带入开源开发社区。多年以来,J9 虚拟机是 Java 版 IBM SDK 的核心,将它开源,阐明了 IBM 的兑现承诺的决心。
OpenJ9 虚拟机构建在 Eclipse OMR 项目的核心技术之上,OMR 是由 IBM 在 2016 年贡献给 Eclipse 基金会的。IBM 持续地投入资源到 Eclipse OpenJ9 和 Eclipse OMR 项目中,以确保企业级产品能够利用最新的硬件技术。

OpenJ9 的网站上提供了预构建版本的下载地址(通过AdoptOpenJDK 下载)以及自行打包构建的完整教程。OpenJ9 本身对Java 应用进行了一些优化,我们无需再调整命令行选项。如果你想配置不同的垃圾收集器或者要探索特定硬件的特性的话(比如GPU),那么可以读取 IBM 知识中心上已有的用户文档

OpenJ9 的关注点主要在性能方面,因此 Phoronix Media 站点的创始人 Michael Larabel 运行了一些快速的基准(Benchmark)测试,以了解OpenJ9 和Hotspot 之间性能的差异

在测试中,他分别使用了将OpenJ9 打包至OpenJDK 9 的构建版本以及当时的OpenJDK 9 Hotspot 构建版本(作者在进行测试时,正式版本的Java 9 尚未发布——编者注),作为参考,还使用了OpenJDK 8 Hotspot 构建版本。这三个JDK 都可以通过AdoptOpenJDK 站点获取预先构建好的版本

Michael 使用两台 Linux 机器进行了快速的基准测试,其中一台机器的处理器是 Intel Core i9 7900X,操作系统是基于 Linux 4.13 kernel 的 Ubuntu 17.04。另外一台机器是双插槽 Tyan 服务器,处理器是 Xeon Gold 6138,操作系统是 Debian GNU/Linux 9.1。每台机器上都使用这三个 OpenJDK 进行了测试,有一些 Java 基准测试是通过 Phoronix Test Suite 运行的。

首先看一下 Core i9 7900X 机器的结果。Michael 先在这三个 OpenJDK 上执行了 j2dbench 测试,这是一个关注图形处理的基准测试。在使用 OpenJ9 时,文本渲染的速度明显比较慢,而在另外两个基准测试中,它与 OpenJDK 性能差别不大。OpenJDK 8 和 9 本身的差别也不大。该测试结果如下图所示:

同时,他还运行 Java 版本的 SciMark2 进行一些数学相关的基准测试,结果如下:

至少就目前来看,OpenJ9 的性能要比较明显地落后于 Hotspot。

在基于 Java 的 Bork 文件加密方面,Hotspot 也更快:

在这些测试版本中,JMH 的性能表现也非常类似:

在双插槽的 Xeon Gold Tyan 服务器上,Hotspot/OpenJ9 的基准测试结果非常类似,可以参考该文了解详细结果

OpenJ9 是一个非常新的 JVM 项目,几个月之后再来评估它的性能也许更合理一些。在这篇性能对比文章的评论区,有些读者发表了一些有价值的评论。有人认为,不应该像使用OpenJDK 那样使用J9,JVM 的调优知识对于性能改善至关重要。J9 针对x86 架构可能还不太成熟,或者需要一些配置选项。J9 最初是针对大规模System-Z 机器上的应用设计的,因此它需要时间来对JVM 进行预热,从而确定哪些字节码需要进行优化,这个“分析器”需要根据应用的运行来进行调整。如果要在x86 计算机或小型设备上运行J9 的话,毫无疑问需要调整一些JVM 的配置。

随着OpenJ9 开源资料的完善,我们会对这个JVM 有更多的了解,相信它也会对整个Java 社区的发展增加新的推动力。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-09-26 19:004762

评论

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

五种重要的 AI 编程语言

3D建模设计

人工智能 AI

6种限流实现,附代码![通俗易懂]

王磊

Java Java面试题

开源微服务如何选型?Spring Cloud、Dubbo、gRPC、Istio 详细对比

阿里巴巴云原生

阿里云 云原生 dubbo

HoudahSpot最新中文版+补丁安装教程

胖墩儿不胖y

Mac软件 文件搜索 搜索工具 搜索软件

隐语纵向联邦 SecureBoost Benchmark白皮书

隐语SecretFlow

大数据 AI 数据安全 隐私计算 开源社区

高效数据传输与管理利器:镭速传输方案助力企业提升效率与安全

镭速

数据传输 分发数据 管理数据 镭速数据传输

动态规划-编辑距离-两字符串集合重排序

alexgaoyh

重排序 动态规划 编辑距离 文本对齐 编辑距离变化过程

Microsoft Office LTSC 2021 for Mac v16.77 beta中文版

mac

办公软件 苹果mac Windows软件 office2021

Sentieon | 应用教程: TNscope®使用机器学习模型进行有匹配正常样本的体细胞变异发现

INSVAST

基因测序 应用教程 TNscope

Tableau Desktop 2019 for Mac(全能数据分析工具) v2019.1.0激活版

mac

数据分析工具 Tableau Desktop 2019 苹果mac Windows软件

StarRocks 存算分离技术探索活动回顾

StarRocks

数据库 数据仓库 OLAP 存算分离

ARTS 打卡第二周

直须

个人成长 前端 ARTS 打卡计划

BetterZip 5中文下载+BetterZip 5注册码

mac大玩家j

Mac软件 解压缩工具 压缩软件

Paper推荐|「隐私集合求交PSI系列」奖励升级

隐语SecretFlow

大数据 数据安全 隐私计算 开源社区 论文推荐

【中危】Spring Kafka 反序列化漏洞 (CVE-2023-34040)

墨菲安全

网络安全 漏洞情报

ARTS 打卡第二周

直须

个人成长 前端 ARTS 打卡计划

7个用于机器学习和数据科学的基本 Python 库

3D建模设计

Python AI人工智能

推荐前 6 名 JavaScript 和 HTML5 游戏引擎

3D建模设计

游戏引擎

一文讲透低代码开发的优势

高端章鱼哥

软件开发 低代码 应用开发 JNPF

WiFi7 is coming -IPQ9574-QCN9274-speeds up to 30Gbits per second-quaclomm-chipset

wifi6-yiyi

WiFi7 30g

【高危】Kubernetes Windows节点kubernetes-csi-proxy提权漏洞 (CVE-2023-3893)

墨菲安全

网络安全 漏洞情报

文心一言 VS 讯飞星火 VS chatgpt (81)-- 算法导论7.4 6题

福大大架构师每日一题

福大大架构师每日一题

如何在浏览器中启用 WebGL 以使用 HTML5 3D 查看器

3D建模设计

html5 WebGL 3D 查看器

基于 Argo CD 与 Argo Workflows 的 GreptimeDB 云端自动化升级实践

Greptime 格睿科技

rust 时序数据库 云原生数据库 国产时序数据库 自动升级

PyTorch 提高生产力的技巧

3D建模设计

机器学习 PyTorch

Node.js 的 Buffer 是什么?面向开发者的指南

Liam

JavaScript node.js 程序员 后端 buffer

交易所系统开发/秒合约交易所/锁仓挖矿/前端uinapp

V\TG【ch3nguang】

交易所开发 秒合约

质押挖矿模式系统开发,矿池系统部署搭建

V\TG【ch3nguang】

挖矿矿池系统开发案例 质押挖矿

浪潮信息 KeyarchOS 助力 IT 企业安全管理业务完成 CentOS 迁移替换 | 龙蜥案例

OpenAnolis小助手

开源 操作系统 IT 浪潮信息 龙蜥案例

量化智能机器人开发,炒币机器人功能部署搭建

V\TG【ch3nguang】

量化交易机器人开发 炒币机器人

mysql基础——认识索引

树上有只程序猿

MySQL 索引

IBM开源JVM实现OpenJ9,并提交Eclipse基金会托管_IBM_张卫滨_InfoQ精选文章