【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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:004741

评论

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

中兴ZXR10 160智能集成多业务路由器快速安装指南,图文并茂!

Ethereal

智慧车行预约小程序设计方案

CC同学

适合新手代码审计之熊海cms

H

网络安全 代码审计

基于STM32设计的森林火灾预警系统

DS小龙哥

物联网 3月月更

【架构训练营-模块四】

默光

架构训练营5期 存储架构

微博评论高性能高可用计算架构

唐尤华

架构实战营

Linux 中的 BusyBox 是什么?如何使用它?

Ethereal

【C语言】轻松解决Bug

謓泽

C语言 bug 3月月更

Lyft微服务研发效能提升实践 | 4. 基于自动验收测试的部署门禁

俞凡

研发效能 大厂实践 lyft 3月月更

容器化和编排有什么区别?

Ethereal

2022 C语言学习最强干货分享,值得收藏

C语言与CPP编程

程序员 C语言 编程‘

重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用

bin的技术小屋

JVM 内存 Java虚拟机 false sharing java

千万级学生管理系统的考试试卷存储方案

「架构实战营」

Studio One 5新版本安装包图文教程

茶色酒

Studio One 5 fl水果20.9

Go学习笔记——复合数据结构之结构体

为自己带盐

Go 学习笔记 3月月更

站点可靠性工程之旅

俞凡

研发效能 SRE 3月月更

自己动手写Docker系列 -- 3.1构造实现run命令版本的容器

Go Docker

千万级学生管理系统的考试试卷存储方案

AragornYang

架构训练营 架构实战营

C语言中如何输出汉字;如何用C语言汉字编码输出汉字(超全版)

北极的大企鹅

c 问题处理

c语言怎么避免打印空数据?

北极的大企鹅

c 问题处理

web安全之挖掘Linux内核漏洞

网络安全学海

Linux 网络安全 渗透测试 WEB安全 漏洞挖掘

两会声音|建议完善数字人民币体系 完善数字货币立法

CECBC

深入理解HTML表格秘籍

喀拉峻

命令行管理 Linux服务器困难?别怕,今天介绍一款基于 Web 的Linux管理神器:Webmin

Ethereal

一款开源监控和警报平台:Prometheus

Ethereal

系统学习 TypeScript(六)——认识接口

编程三昧

typescript 前端 3月月更

我的第一个 Flutter 应用之旅

岛上码农

flutter ios 安卓 移动端开发 3月月更

c语言结构体中的一个char数组怎么赋值?

北极的大企鹅

c 问题处理

电商秒杀系统

swallowluo

架构实战营 #架构实战营 「架构实战营」

蚂蚁金服-财富编码军规

Beaver

编码规范 编码军规 蚂蚁金服-财富编码军规

java如何对接企业微信

经典鸡翅

3月月更

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