博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse Open J9:Eclipse OMR项目提供的开源JVM
阅读量:5925 次
发布时间:2019-06-19

本文共 3078 字,大约阅读时间需要 10 分钟。

\

看新闻很累?看技术新闻更累?试试,每天上下班路上听新闻,有趣还有料!

\
\\

自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的“”页面下载,也可从DockerHub的处拉取(Pull),其中提供了包括SDK、JRE、SFJ(Small Footprint JRE)和Alpine Linux等选项。

\\

Eclipse OMR项目

\\

在2016年早期,IBM在中开源了J9运行时环境核心的非Java部分。OMR项目是一个与语言无关的运行时工具集。关于OMR项目的更多细节,可参考项目共同牵头人Mark Stoodley博士的一个演讲幻灯片。

\\

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

\\

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

\\

\\

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

\\

\\

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

\\

\\

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

\\

OMR项目具有如下组件:

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

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 OMR,可访问\\t
  • 如果想根据自身对运行时的需求构建和使用Eclipse OMR,可访问\\t
  • 如果希望向团队提供反馈,可使用邮件列表\\t
  • 贡献者需要在处签署Eclipse CLA。\

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大会上所作的演讲,。

\\

\\

\\

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

\\
  • 要下载OpenJDK with OpenJ9的二进制文件,可访问。\\t
  • 要参与社区,可访问。贡献者需要在此处签署Eclipse CLA。\\t
  • Eclipse OpenJ9的网站地址:。\\t
  • OpenJ9的Docker镜像(由AdoptOpenJDK提供的每日构建版):。\\t
  • 要与从事项目的人员交流并查看每周工作进展,可访问。\\t
  • Eclipse OpenJ9 0.8发布计划:。\

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(),并且OpenJ9 with OpenJDK 8的二进制可从AdoptOpenJDK项目网站下载:。

\\

根据文章中所说,“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数计费,占用内存减半将可显著节省一些用例的运行费用。

\\

查看英文原文:

转载地址:http://travx.baihongyu.com/

你可能感兴趣的文章
煮茶社区AVR开发板第二版[转]
查看>>
Python中*args 和**kwargs的用法
查看>>
袁永福软件行业从业经历
查看>>
循序渐进DB2(第2版)——DBA系统管理、运维与应用案例
查看>>
BZOJ 3434 时空穿梭
查看>>
网游的服务器瓶颈
查看>>
win32的一个售票程序,收获有非常的多
查看>>
erlang 编译之 to_core
查看>>
做移动互联网App,你的测试用例足够吗?
查看>>
Perl的第二纪
查看>>
在Android应用中使用Pull解析XML文件(传智播客视频笔记)
查看>>
常用Jsp命令
查看>>
堆和栈概念整理
查看>>
cmd.exe启动参数说明
查看>>
在PowerDesigner中设计物理模型1——表和主外键
查看>>
Win10系统修改MAC地址
查看>>
Radius 中 与Response Authernticator 与 Message-Authenticator的计算
查看>>
phpstrom 编辑器设置
查看>>
JavaScript中“javascript:void(0) ”是什么意思
查看>>
重要的ui组件——Behavior
查看>>