2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

我们为什么要标准定价?如何定价?

菜根老谭

产品经理 产品标准化

BMF 开箱体验 开源赛道 1:高效视频处理

Echo_Wish

Python 视频处理 开源赛道1 BMF 高效视频处理

软件测试/测试管理圆桌讨论会 | 解锁测试管理的核心问题,提升您的管理实力!

霍格沃兹测试开发学社

每日一题:LeetCode-394. 字符串解码

Geek_4z9ami

Go 算法 递归 LeetCode 字符串

测试开发 | 数字化创新在文化保护中的崭新探索

测吧(北京)科技有限公司

测试

产品破局思考:一个思维,一种策略

菜根老谭

你需要的圣诞祝福模板都在这里了!过不过圣诞都能用!

九凌网络

测试开发 | 数据分析与智能训练:体育领域的技术革新

测吧(北京)科技有限公司

测试

独家好书丨《智算时代的容器技术演进与实践》免费下载

阿里巴巴云原生

阿里云 云原生 容器服务

支持GPU虚拟化的云桌面厂家有哪些?

青椒云云电脑

云桌面 云桌面厂家

【FAQ】运动健康服务云侧数据常见问题及解答

HarmonyOS SDK

软件测试/测试开发/人工智能 | 测试管理核心问题,提升管理实力!

测试人

人工智能 软件测试 测试开发

产品经理该不该设计数据库表?

菜根老谭

测试开发 | 人工智能的未来发展:科技新时代的奇迹之旅

测吧(北京)科技有限公司

测试

【写作训练营打卡|10】内容创作方式

文心一言 VS 讯飞星火 VS chatgpt (160)-- 算法导论12.4 2题

福大大架构师每日一题

福大大架构师每日一题

大模型实践 | 为慧眼智能可观测平台插上ChatInsight的翅膀

网易数帆

可观测性 网易 大模型 AIGC ChatInsight

Google 沙盒效应是什么?网站如何避免谷歌沙盒!

九凌网络

深入解读ReAct框架

Bob Lin

AI Python3 openai GPT-4 #LangChain

智能引领决策:人工智能在决策支持系统中的崭新角色

测吧(北京)科技有限公司

测试

E往无前 | 腾讯云大数据ES日志轻接入和免运维最佳实践

腾讯云大数据

ES

大模型之提示工程的使用与总结 主赛道:技术人的 2023 总结

Echo_Wish

技术 年度总结 大模型 2023 提示工程

MegEngine 优化 dataloader 使用体验!data monitor 帮助更好定位性能瓶颈

MegEngineBot

性能优化 Data 开源框架

火热的低代码,蕴藏怎样的机会和挑战?

互联网工科生

软件开发 低代码开发 JNPF

用AI为AI PC打造最强内核,英特尔是怎么做到的?

E科讯

华为云多活高可用服务MAS荣获“2023年香港星光奖“

云计算 华为云

KubeWharf:云原生操作系统引领大规模分布式应用的新时代

熬夜磕代码、

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