写点什么

Eclipse Open J9:Eclipse OMR 项目提供的开源 JVM

  • 2018-03-05
  • 本文字数:2883 字

    阅读完需:约 9 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

自 1997 年以来,IBM 一直致力于开发自己的 JVM 产品 J9 JVM。J9 构建为一种闭源的(自有的)JVM 独立实现,其类库基于经授权的 Sun 实现(现在称为 OpenJDK)。J9 中具有多项改进,以及一些引领性的优化技术,包括:分层编译( Tiered Compilation)、共享类、逃逸分析 (Escape Analysis)、一些特定于硬件的优化技术(诸如选取适当的大型页面大小)、软实时(soft realtime)垃圾回收、使用 Apache Harmony 和动态事前编译(AOT,ahead-of-time)的 API 优化,以及多种特定于对象锁的优化等。

自 J9 第五版以来,J9 JVM 已经提供在 IBM 的 JDK 中。在 Windows 平台上,JDK 绑定并随 IBM 的 Websphere Application Server(WAS)交付。而在 Linux、AIX、z/OS 和 IBM I 平台上,JDK(也称为“SDK”,其中“S”指代“Software”)及相应的 JRE 可从 IBM DeveloperWorks 的“ Downloads ”页面下载,也可从 DockerHub 的 https://hub.docker.com/_/ibmjava/ 处拉取(Pull),其中提供了包括 SDK、JRE、SFJ(Small Footprint JRE)和 Alpine Linux 等选项。

Eclipse OMR 项目

在 2016 年早期,IBM 在 Eclipse OMR 项目中开源了 J9 运行时环境核心的非 Java 部分。OMR 项目是一个与语言无关的运行时工具集。关于 OMR 项目的更多细节,可参考项目共同牵头人 Mark Stoodley 博士的一个演讲幻灯片 https://www.slideshare.net/MarkStoodley/omr-a-modern-toolkit-for-building-language-runtimes

下面给出其中整体介绍 OMR 项目的部分幻灯页面。

对于 Java,语言运行时的表示如下:

如果必须对Ruby 给出类似的运行时,表示如下:

如果将Ruby 替换为Python,那么运行时环境模块与Ruby 类似。这样,我们清楚地看出,IBM 可以将J9 运行时组织为一个运行时核心组件层,正如下面的幻灯页面所示:

由此,OMR 项目可以构建为一系列语言无关的运行时组件,因此可构建用于Java、Ruby、Python 及其它语言的运行时。

OMR 项目具有如下组件:

  • 一个管理运行时堆(Heap)的垃圾回收框架,其中包括标记 - 清除(Mark-sweep)、分代(generational)和并行清理(parallel scavenge)垃圾回收。
  • 管理每个解释器和线程上下文的虚拟机 API。
  • 用于生成本地代码(native code)的编译器。
  • 诊断服务,也称为“健康中心”。用于为实时诊断垃圾回收及其他运行时的细节提供帮助,并提供分析方法的能力。
    • 一个追踪库,有助于实现与监控工具的通信。
  • 一些软件库,用于端口、线程等功能,并提供一些用于平台抽象和平台运行时功能的工具。还有一个用于信号处理的软件库。

IBM 工程师已基于 OMR 组件构建了一些语言的运行时和 JIT 编译器,其中包括:Ruby、Python、SOM++(Smalltalk)、一种称为 Lua Vermelha 的 Lua JIT、一种用于 Rosie 模式语言的 JIT、Swift 的部分 JIT、用于 Base9(一种类似于 JavsScript 的简单运行时)和 Kaleidoscope 的教程 JIT 和运行时、一种 LLVM 项目使用教程语言。它们是 IBM 工程师在使用 OMR 项目构建自己的 SDK for Java 8 中额外实现的。

关于 Eclipse OMR 的更多信息,可查看:

Eclipse OpenJ9 项目

在本文开篇处,简要地介绍了 IBM 的 J9 JVM。J9 在 2016 和 2017 年时依然是闭源的。此后,它作为一个开放管理的开源项目,被转交给了 Eclipse 基金会,并重命名为“OpenJ9”。这是因为 IBM 看到了开源社区的巨大影响力,而 J9 是 IBM Java 产品中的核心组件。IBM 期望能鼓励开放社区中的开发,并最终与大型开源社区开展良好的合作。自 2017 年 9 月以来,Eclipse OpenJ9 已成为一个开源项目,IBM 和其它一些贡献者在项目中共同致力于推进 J9 JVM。

OpenJ9 使用了 Eclipse OMR 项目,它本身适合于 OpenJDK 9 及以后版本的 Java 类库,正如下面两页幻灯页面所示。幻灯来自于 Stoodly 在 JavaOne 2017 大会上所作的演讲, https://www.slideshare.net/MarkStoodley/javaone-2017-mark-stoodley-open-sourcing-ibm-j9-jvm

该幻灯片中给出了更多关于使用 OpenJDK with OpenJ9 的信息。下面列出一些有用的链接:

OpenJ9 with OpenJDK 8

对于 Eclipse OpenJ9 项目而言,OpenJ9 with OpenJDK 9 的下载、构建和运行无疑是一个很大的成功。但是,由于 Java 9 的发布并非长期支持(LTS),而还有很多开发人员依然使用 Java 8,很显然项目需要从 OpenJDK 8 移植到 OpenJ9。

2017 年 11 月,正是 OpenJ9 成为开源项目的短短两个月后,Eclipse OpenJ9 宣布使用 OpenJ9 构建了 OpenJDK 8( https://www.eclipse.org/openj9/oj9_build.html ),并且 OpenJ9 with OpenJDK 8 的二进制可从 AdoptOpenJDK 项目网站下载: https://adoptopenjdk.net/releases.html?variant=openjdk8-openj9

根据 Eclipse OpenJ9 for Java 8 文章中所说,“Eclipse OpenJ9 项目使用单一代码流,在所有受支持的 Java 版本中实现了 JVM,从 Java 8 到 Java 9,乃至未来的版本”。通过这种单一流开发模式,Eclipse OpenJ9 瞄准于尽可能为当前所有受支持的各层级 JDK 同时提供 JVM 技术进展。当然,一些 JVM 改进是绑定于一些语言层级上的更改,而这些更改刻意针对 Java 的主要版本边界。Eclipse OpenJ9 将考虑到这些选择,这样编程人员可以继续依赖于他们所熟悉并偏好的某个稳固 Java 平台。

在该文中还引用了一个 OpenJ9 的性能页面,其中给出 DayTrader 3 应用基准测试的结果,测试中对比了 OpenJDK 9 with OpenJ9 和使用了 HotSpot VM 的 OpenJDK9。

从图表中一眼看去,对于运行在 OpenJ9 JVM 上的大型应用而言,共享类和 AOT 编译策略在降低应用启动时间上作用明显。如文中此图所示:

该文还指出,即便将负载应用于系统,在提供相同性能的情况下,OpenJ9 占用的内存只有使用HotSpot 的OpenJDK 的一半。鉴于云服务和PaaS 服务部署通常是按单位时间占用内存的MB 数计费,占用内存减半将可显著节省一些用例的运行费用。

查看英文原文: Eclipse Open J9 – an Open Source Java Virtual Machine Based on the Eclipse OMR Project

2018-03-05 18:008066
用户头像

发布了 391 篇内容, 共 143.7 次阅读, 收获喜欢 257 次。

关注

评论

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

ATC 2024 | 快手开源大模型长序列训练加速技术,性能大幅超越 SOTA 方案

快手技术

开源 #大模型

解读代码检查规则语言CodeNavi的表达式节点和属性

华为云开发者联盟

软件开发 华为云 华为云开发者联盟 代码检查 企业号2024年7月PK榜

飞舞在化工企业的AI大模型梦想

脑极体

AI

自动生成PPT的AI助手有哪些?这5款软件值得推荐!

彭宏豪95

人工智能 职场 PPT AIGC AI生成PPT

蔚来汽车:拥抱TiDB,实现数据库性能与稳定性的飞跃

TiDB 社区干货传送门

社区活动

第三届 TiDB 社区七夕为爱挑战赛正式开启,等你来挑战!把 TiDBer 专属七夕浪漫带给心爱的TA!

TiDB 社区干货传送门

亚马逊API接口推荐:亚马逊商品详情数据接口(amazon.item_get)

tbapi

亚马逊API 亚马逊商品详情数据接口 亚马逊商品详情API 亚马逊商品数据采集

快手可图大模型Kolors全面开源——一个更懂中文的文生图大模型

快手技术

开源 大模型 文生图 企业号2024年7月PK榜

代码将由大模型生成 解密中国电信“星辰大模型·软件工厂”

科技热闻

Beyond the scalability — 回顾 PingCAP 刘奇在日本用户大会上的部分演讲语录

TiDB 社区干货传送门

社区活动

【堡垒机小知识】农业需要堡垒机吗?为什么?

行云管家

网络安全 数据安全 堡垒机

中科九洲科技股份有限公司通过电子标准院《低代码开发平台能力要求》测评

电子标准院软工研究室

上海梦创双杨数据科技股份有限公司通过电子标准院《低代码开发平台能力要求》测评

电子标准院软工研究室

可灵重大升级!新增Web端上线、首尾帧控制、单次生成视频时长增加至10s!

快手技术

大模型 视频生成 可灵 企业号2024年7月PK榜

天水市有等保测评机构吗?在哪里?

行云管家

网络安全 等保 堡垒机 等级保护

Cellebrite UFED 4PC 7.69 (Windows) - Android 和 iOS 移动设备取证软件

sysin

UFED 数字取证

解锁AB测试的力量

FunTester

Java 在成本资源控制下, 千万级别数据查询优化

伤感汤姆布利柏

京东JD商品sku信息API返回值解读:商品规格数据与电商风险管理

技术冰糖葫芦

API 安全 API 文档 API 开发

记一次TIDB开启TLS失败导致PD扩容失败案例

TiDB 社区干货传送门

实践案例 安装 & 部署

天底下没有永远免费的GPT-4;AI产品用订阅制就不合理!让用户掏钱的N种定价技巧

蓉蓉

AI GPT-4 Claude

JavaScript 判断客户端是手机还是pad

源字节1号

微信小程序 开源 软件开发 前端开发 后端开发

详解 Postman 中 OAuth 2.0 授权的步骤

Liam

Java 后端 Postman 授权

仙侠天花板,圆你土豪梦,上古传说手游详细图文架设教程

echeverra

上古传说

全球最大职业社交平台 LinkedIn 为何将 TiDB 应用于大规模服务系统

TiDB 社区干货传送门

社区活动

闯荡西游之路,续写经典传奇,大话西游图文架设教程

echeverra

大话西游

Navicat for MySQL Mac(数据库管理开发工具)v16.3.4汉化版

Rose

记录一次版本升级的过程

TiDB 社区干货传送门

版本升级 6.x 实践

如何通过fomepay自助升级ChatGPT plus

蓉蓉

ChatGPT

总是拿不下大客户 不妨从它的企业全历史行为数据里找找思路

客户在哪儿AI

ToB营销 ToB增长 ToB销售

Eclipse Open J9:Eclipse OMR项目提供的开源JVM_Java_Monica Beckwith_InfoQ精选文章