微信号:dev-news

介绍:软件开发社区热点跟踪

IBM开源OMR项目 核心源自J9 JVM

2016-03-09 13:18 臧秀涛

在经历了长时间的准备和预热之后,IBM终于在Github上放出了OMR项目(https://github.com/eclipse/omr )。采用的许可证为: Eclipse Public License V1.0和Apache 2.0 license。


OMR项目由一组开源的C和C++组件组成,可用于构建支持诸多不同硬件和操作系统平台的、健壮的编程语言运行时。这些组件包括但不限于:内存管理、线程、平台移植(抽象)库、诊断支持、监控支持、垃圾收集和原生JIT编译。


去年,IBM的开发人员多次公开分享OMR的理念。2015年12月,IBM还放出了一个Ruby+OMR的技术预览(https://github.com/rubyomr-preview/rubyomr-preview ),除了证明OMR技术可以和Ruby虚拟机结合,也希望得到社区的反馈。不过当时并没有放出源代码。


今年1月份,OMR项目进入Eclipse基金会旗下(https://projects.eclipse.org/projects/technology.omr)。时至今日,我们终于可以看到部分代码了。 


OMR的组件主要来自于IBM的J9 JVM,而J9凝聚着IBM很长时间的投入和成果。IBM希望抽取J9的核心技术,脱离Java语义的影响,创建出一系列组件,用于创建不同语言的运行时。不过这个事情确实不轻松,从上面几个时间点也能看出一二。


IBM的JIT架构师Mark Stoodley提到:


尽管今天可以看到很多开源的工具包、框架和项目,但是如果看一下大部分语音运行时的核心实现,你会发现基本没有代码复用。看看CRuby、CPython、V8和JVM的垃圾收集器,几乎没有共享任何代码。很多JIT编译器和其他核心组件也是如此。


他们希望改变这种状况。


要为新的语言构建一个可以与成熟语言相媲美的运行时,通常需要付出巨大努力,甚至需要数十年时间;而且很多时候,这是完全无法实现的。


所以有些语言会选择CLR或JVM之类平台。JVM已经是一个非常成熟的平台。OMR的做法就是剥离Java语义相关的部分,重新组织核心组件,希望供不同的语言运行时使用。



OMR目前提供的组件包括:




想了解更多细节,可以阅读相关代码,或者查看OMR项目的Github上给出的一些演讲链接。

 
开发资讯 更多文章 Go 1.5正式发布:实现自举、引入并发垃圾收集器 Google团队成功的5大关键 Swift正式开源,开启新篇章 Java 9要跳票?又是Project Jigsaw! Microsoft Edge的JavaScript引擎Chakra将开源
猜您喜欢 Android--Vsync代码分析(二) 岁末感恩季大抽奖来了!百分百中奖哦,不信你看~ 野狗 Workshop | 开发实战训练营 VOL.1 关于友情和钱 2016年你应该学习的语言和框架