BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

JSR-292和多语言VM

| 作者 Geoffrey Wiseman 关注 0 他的粉丝 ,译者 郭晓刚 关注 0 他的粉丝 发布于 2007年10月28日. 估计阅读时间: 3 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

从2007年初开始的JSR-292目的在于提高在Java虚拟机(JVM)上对动态语言的支持。一直以来主要的精力都集中在JVM的invokedynamic指令,不过最近的新动向包括了创建多语言虚拟机的项目。John Rose总结了最近一次会议的讨论结果:

  • 我们对JVM的指令架构作了重大的改变。
  • 一批新的动态语言的出现是其诱因。我们有商业上的理由让JVM支持这些语言。
  • 专家组一致同意:我们希望尽早交给公众评议。这意味着要产生一个EDR(早期草案评议,JCP的要求)。
  • 为了公开我们的验证性设计,首先需要通过“红脸测试(red face test)”。也就是说,我们作为专家组,必须觉得设计显示出的发展方向值得深入阐释和改进。因为EDR规范并不是一个要求投票的里程碑版本,所以规范不完整或者存在未解决的问题是允许的。
  • 最初的JSR 292不仅包括invokedynamic,还包括对类的一些修改或扩展。根据最近的经验,除了invokedynamic之外还需要稍微做一些行为上的扩展(method handles、autonomous methods等)。还需要进一步讨论。
  • OpenJDK的一个开源子项目将会帮助创建JSR 292的RI(参考实现,JCP的要求)。
  • 这个项目(MLVM)很可能还会引入其他更改。哪些更改已经准备好标准化,哪些要推到MR(维护版)或者另一个JSR,都要由我们专家组来决定。

为了以上目的,John Rose在OpenJDK的邮件列表上提议了一个多语言VM项目

这个项目鼓励为有效地支持Java以外的语言,进行各种JVM特性的原型试验。

项目的重点将放在用普适性的扩展来补足现有的字节码及执行架构,而不提倡只为一种语言增加新特性,或者加入不相关的新执行架构。

重点还包括消灭那些已经被成功且有影响力的语言在实现中发现的“疼痛点”,而反对为未经证明的特性或者花瓶语言去做一些纯理论的工作。

提议得到的反响大多是正面的:“你吸引到我了”,“很高兴Sun仍然能看出Java的平台本质”。反响也是建设性的,既有Neal Gafter提议的算术精度和效率的矛盾,Attila提议的元对象协议,还有Remi提议的运行时泛型(reified generics)

与此同时,人们也意识到了项目规模带来的内在危险。Attila指出了Parrot的前车之鉴:

当然,如果目标太大,就存在迷失方向的危险;Parrot的历史就是一个可怕的先例。

John Rose对此回应说:

是的。如果要全部完成最初列出来的想法,可能要花几十年。(而且这些只是我按照自己的喜好挑出来的一部分想法。)因此有必要先选出最有利的一些项目。

要获得更多信息,请加入JSR-292 Observers列表JVM Languages群组,盯紧Mercurial项目,当然别忘了留意InfoQ的Java社区

查看英文原文:JSR-292 and the Multi-Language VM

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT