写点什么

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:002778
用户头像

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

关注

评论

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

大专学历成功拿下阿里offer,分享面经及我的Java面试复习资料

Java架构之路

Java 程序员 架构 面试 编程语言

获5项大奖,发布《云计算开放应用架构标准》,阿里云持续领航云原生

阿里巴巴中间件

【星环案例】我们用TDH+Sophon把工厂“搬”进高校实验室,推进产学研一体化

星环科技

Fabric架构演变之路

趣链科技

区块链 fabric 联盟链架构 演变

有道精品课全链路测试的改进和思考

有道技术团队

测试 有道精品课

和12岁小同志搞创客开发:如何驱动各类型传感器?

不脱发的程序猿

DIY 传感器 如何驱动各类型传感器? 创客

【融云技术】超大规模并发下自定义属性的设置与分发

融云 RongCloud

2021年阿里/腾讯/美团/字节1万道Java中高级面试题汇总,新鲜出炉

Java架构师迁哥

毕业5年的同学突然告诉我,他已经是年薪50W的Java架构师了

Java架构师迁哥

小树量化机器人系统开发(马丁策略)

薇電13242772558

区块链 数字货币

奉劝各位准备面试的Java程序员耗子尾汁,赶紧扔掉网上那些千篇一律的面试题

Java架构之路

Java 程序员 架构 面试 编程语言

Overbit Flash|5 月加密货币市场风暴抹去了 90% 以上的 NFT 交易量

Overbit学院

比特币 加密货币 NFT Overbit 保证金交易

华为云IoT设备接入服务全体验

华为云开发者联盟

物联网 IoT 华为云 智能IoT边缘服务 华为云IoT云服务

难忘阿里,4面技术5面HR附加笔试面,走的真艰难真心酸

Java 编程 程序员 面试 架构师

一文回顾 Java 入门知识(中)

逆锋起笔

Java 后端 JAVA开发 java基础 javase

将DataX执行结果通过钉钉上报

白粥

DataX

三位一体:打造软硬服一体化的区块链平台

趣链科技

区块链 联盟链 Baas 一体机 底层平台

为鸿蒙OS说两句公道话(我对鸿蒙OS的一些看法)

Phoenix

Qcon全球软件开发大会 融云分享SDK交付质量保障经验

融云 RongCloud

前后端分离浅析以及分离教程

北游学Java

前后

迎战大厂!“金九银十”和秋招通过率达95%的Java面试要点集锦

Java 程序员 架构 面试

GitHub火到糊!这份阿里内部10W字Java面试总结,让你薪资翻倍

Java架构追梦

Java 架构 面试 跳槽

【案例】构建应急指挥体系,实现生产过程实时监控

星环科技

联邦学习这件小事

趣链科技

区块链 联邦学习 技术架构

从一面就被拒到收割字节offer,我花了一年时间,功夫不负有心人

Java架构师迁哥

什么是交叉编译

IT蜗壳-Tango

IT蜗壳教学 6月日更

一周信创舆情观察(5.24~5.30)

统小信uos

拼多多电商部java岗三面落选,记下的面试题,不睡觉都要背下来!

Java 程序员 架构 面试

☕【JVM技术之旅】全流程化分析Java对象的创建过程

码界西柚

JVM 6月日更 对象布局 内存结构

Java日志的心路历程

程序猿阿星

Java log4j logback log4j2框架 Java日志

新手小白必须知道的Linux基础:常用命令(1)

学神来啦

Linux linux命令 linux运维 linux 文件权限控制 Linux教程

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