写点什么

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

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

关注

评论

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

这三道MySQL面试题,99%的人答不出来!

程序员小毕

Java MySQL 数据库 程序员 面试

图灵8月书讯 | 10 本新书上市,本本精选

图灵社区

新书推荐

文本纠错:提升OCR任务准确率的方法

合合技术团队

人工智能 文字识别 OCR 合合信息

保利威荣获「年度最佳直播服务商」!引领视频直播行业创新发展

科技怪咖

RT-Thread记录(十四、I/O 设备模型之ADC设备)

矜辰所致

RT-Thread 8月月更 ADC

左邻云安全 | 全程守护,让园区安全看得见

科技怪咖

泰禾智能:智能改变未来,成就工业设备行业佼佼者

科技怪咖

MobTech ShareSDK 高级接口及配置

MobTech袤博科技

android MobTech袤博科技 sharesdk

Rewind the PlanetScale Rewind | 拆解硅谷当红科技公司如何做 Product Marketing

Bytebase

教你使用Jupyter可视化查询语句的语法树

华为云开发者联盟

人工智能

KubeEdge边缘计算在顺丰科技工业物联网中的实践

华为云开发者联盟

云计算 云原生 工业物联网 顺丰

阿里云 ACK 容器服务生产级可观测体系建设实践

阿里巴巴中间件

阿里云 容器 云原生 可观测

1 分钟在 Serverless 上部署现代化 Deno Web 应用

阿里巴巴中间件

阿里云 Serverless 云原生

“似水无形” 的小程序化技术

Speedoooo

小程序 小程序管理平台 轻应用 快应用 小程序平台

Linux常用命令

楠羽

从实验室到用户桌面,深度解析AI 落地实践之路

云智慧AIOps社区

人工智能 机器学习 AI 算法实践 智能运维AIOps

何去何从的并行计算

博文视点Broadview

从零到一,教你搭建「以文搜图」搜索服务(一)

Zilliz

人工智能 机器学习 深度学习

计费准确率高达100%,是如何实现的?

科技怪咖

Docker与虚拟化技术浅析第一弹之docker与Kubernetes

京东科技开发者

Docker Kubernetes k8s 虚拟机

技术分享| anyRTC 8月更新迭代

anyRTC开发者

音视频 WebRTC 视频通话 实时消息 抓拍图片

解决 NGINX LDAP 参考实施中的安全问题

NGINX开源社区

nginx HTTP 安全漏洞 ldap 身份验证

Kruise Rollout v0.2.0 版本发布:支持 Gateway API、StatefulSet 分批发布等能力

阿里巴巴中间件

阿里云 开源 容器 云原生 OpenKruise

秋招涨薪攻略!拿着GitHub标星80k的阿里性能优化笔记,把项目优化个遍

退休的汤姆

Java 阿里 社招 Java工程师 秋招

马蹄链Dapp系统开发部署技术

薇電13242772558

dapp

B站基于Iceberg+Alluxio助力湖仓一体项目落地实践

Alluxio

B站 iceberg Alluxio 湖仓一体 8月月更

如何应对软件可变性?这4种常用的方法肯定要知道

华为云开发者联盟

云计算 软件 后端

​Black Hat 2022 聚焦软件供应链安全

SEAL安全

网络安全 软件供应链安全

打破数字化盐碱地:传统型企业如何踏稳数字化转型第一步

科技怪咖

打造耳聪目明的MES系统,你准备好了吗?

科技怪咖

105份墨天轮“国产化迁移”干货文档汇总(含TiDB、openGauss、上云等)

墨天轮

数据库 阿里云 TiDB 国产数据库 达梦

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