本文共 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项目具有如下组件:
\\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大会上所作的演讲,。
\\ \\ \\该幻灯片中给出了更多关于使用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(),并且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/