写点什么

IBM 推出创建语言运行时的工具包 Eclipse OMR

  • 2016-04-07
  • 本文字数:1282 字

    阅读完需:约 4 分钟

IBM 创建了 Eclipse OMR ,一个用于为任何语言创建运行时环境的开源虚拟机工具包。OMR 旨在让各种语言都能利用虚拟机技术的一般改进,像垃圾收集或硬件集成。为此,IBM 正在推广自己名为 J9 的 JVM。

虽然 JVM 日益成为许多语言的通用运行时,但它同 Java 语言的紧密关系意味着其设计和功能的很大一部分都是同 Java 本身紧密相关的。这就使得在尝试使用 JVM 作为其他语言的运行时时会遇到挑战,尤其是动态类型的语言: 在 Java 7 引入 InvokeDynamic 之前,动态语言都不得不使用低效的变通方案来克服 JVM 的静态类型特性,严重影响了性能。就像 Daryl Maier 其他OMR 项目成员所说的那样,这给语言创建者两种选择:要么从头开始为新语言创建一个运行时,这会带来难以承受的成本,或者,就像大多数团队所做的那样,调整语言,让它可以使用已有的运行时环境,接受它的限制。

OMR 提供了第三种选择。虽然 OMR 本身不是一个运行时,但它是一个让你可以轻松创建运行时的工具包。OMR 是通过重构 IBM Java 虚拟机 J9 的组件创建出来的,对于任何运行时中最常见的功能,它都提供了一种语言无关的实现,同时,它还提供了一套接口,用于创建接口作者所说的“语言胶水(language glue)”或者是特定于语言的代码,作为 OMR 提供的通用功能同需要处理的语言细节之间的桥梁。将 OMR 同语言胶水相结合,语言设计者就可以获得一个包含如下功能的运行时:

  • 内存分配器
  • 线程库
  • 用于将运行时移植到不同平台的硬件抽象层
  • 用于连接不同运行时和操作系统事件的事件钩子框架
  • 用于调式及其他目的的跟踪引擎
  • 垃圾收集
  • JIT 编译器

为了促进推广,语言胶水接口并不需要从头全部实现,语言设计者可以根据他们想要获得的运行时功能仅实现其中的一部分。例如,简单地实现这些 API 中的三个就可以获得一个单线程的标记 / 清除垃圾收集功能,而实现更多的接口就可以获得并发标记、并行或分代收集功能。

这次重构有一个有趣的副作用,就是单个组件更容易测试了。在这次修改之前,像垃圾收集这样的组件只能使用整个运行时来执行,这意味着测试需要大量复杂的设置和分析。不过,在对这个复杂的逻辑进行分隔和解耦之后,单个组件可以隔离测试了,这简化了测试设置和分析。

不过,OMR 最有前途的特性可能是它将成为一个由 Eclipse 基金会( IBM 是其战略成员)运作的开源项目。项目负责人希望Eclipse 基金会培养一个开发者社区,为OMR 提供创新性贡献,所有以OMR 工具包为基础创建运行时的语言都可以从中受益。这有助于OMR 攻占OpenJDK 的领地,后者虽然也是开源的,但它在吸收有价值的贡献时一直有些困难,比如谷歌对CMS 所做的性能改进

然而,这种方法也有缺点。虽然迫使语言设计者采用一种已有的运行时可能会带来一些挑战,但那也意味着不同的语言可以同时在同一个虚拟机中运行,这样就便于语言互操作。OMR 为每种语言创建一个不同的运行时的方法意味着,即使可能,实现互操作也要困难许多。最终的结果可能是,不同的语言设计者根据自己的战略重点,在易于互操作和易于语言开发之间作出权衡,选择这一个或其他方法。

查看英文原文: IBM Kick-Starts Eclipse OMR, a Toolkit for Creating Language Runtimes

2016-04-07 19:002344
用户头像

发布了 1008 篇内容, 共 388.0 次阅读, 收获喜欢 344 次。

关注

评论

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

Java开发你需要了解的那些事,Java线程池基础入门和简单实践以及使用技巧

Java 程序员 后端

Java开发入门与实战!极客学院和黑马程序员,Java高级工程师系列学习路线介绍

Java 程序员 后端

Java小技巧,springboot菜鸟教程电子版,腾讯T2手把手教你

Java 程序员 后端

Java开发从零开始,java基础入门传智播客网页版,Java后端路线图

Java 程序员 后端

Java官方入门教程pdf,开课吧在线教育,面试分享一次成功的经历

Java 程序员 后端

【大咖直播】Elastic Security 安全管理实战工作坊(第二期)

腾讯云大数据

elasticsearch

Java工程师最容易遇到4个瓶颈是什么,Java架构面试题spring原理

Java 程序员 后端

最近几天在 InfoQ 连更的再反思

baiyutang

10月月更

Java开发人员不得不收集的代码,史上最全的微服务专业术语面试50问

Java 程序员 后端

Java大厂高级面试题灵魂100问,linux操作系统教程pdf,卧槽

Java 程序员 后端

Java学习笔记在互联网上火了,linux视频教程在线,面试官让我下周来上班

Java 程序员 后端

Java工程师进阶,马士兵架构师破解吧,我的Java春季历程

Java 程序员 后端

Java大神需要掌握的技术,java开发技术教程,字节大牛教你手撕Java学习

Java 程序员 后端

Java学习路线指南,思维导图+源代码+笔记+项目

Java 程序员 后端

Java大厂74道高级面试合集,我凭借这份PDF的复习思路

Java 程序员 后端

Java开发人员不得不收集的代码,精选Java面试真题集锦

Java 程序员 后端

Java开发五年,java百度人脸识别,最全153道Spring全家桶面试题

Java 程序员 后端

Java开发从零开始,牛客网java选择题库,程序员Javaweb源码

Java 程序员 后端

Java学习笔记在互联网上火了,Java开发实战讲解

Java 程序员 后端

Java岗面试必问!java面试题pdf下载百度云,Java程序员算法书籍

Java 程序员 后端

Java就业班视频,尚硅谷众筹项目视频及源码,spring框架教程

Java 程序员 后端

Java并发原理解析!图灵学院四期java架构师,Java零基础入门视频

Java 程序员 后端

Java工作资料,java编程思想第五版百度云,面试官6个灵魂拷问

Java 程序员 后端

XA 分布式事务

风翱

分布式事务 10月月更

Java开发中遇到最难的问题,redis视频教程韩顺平,附小技巧

Java 程序员 后端

Java开发前景怎么样,java全套教程百度云,linux基础入门教程

Java 程序员 后端

Java学习笔记在互联网上火了,帮你深度探寻Spring循环依赖源码实现

Java 程序员 后端

Java小技巧:尚学堂视频百度云密码,靠着这份900多页的PDF面试整理

Java 程序员 后端

Java开发三年月薪才12K,java图形化界面教程,linux网络架构详解

Java 程序员 后端

Java就业班资料,极客大学算法训练营百度网盘,Java面试总结

Java 程序员 后端

Java工程师面试该怎么准备,尚硅谷java百度网盘,Java技术图谱

Java 程序员 后端

IBM推出创建语言运行时的工具包Eclipse OMR_Java_Abraham Marín Pérez_InfoQ精选文章