2018年左右,Detroit项目在失去赞助团队后陷入停滞,但现在它要重新启动了,目标是要在Java和JavaScript之间搭建桥梁。这个项目原本设计给JavaScript当Java应用的扩展语言,但后来没人接盘,直到2月25日一份新提案在OpenJDK邮件列表里引起了大家的兴趣。本周大家聊得特别热烈,Sundararajan Athijegannathan表示愿意来牵头。他觉得现在大家还想从Java应用里调用Python写的AI功能,于是除了JavaScript当Java的扩展外,这次还能让JavaScript反过来用Java的库。他还给大家看了基于Chrome V8引擎弄出来的javax.script包本地实现的原型,还有基于CPython搞的Python脚本引擎原型。Athijegannathan说,用现成的JavaScript和Python实现比从头造轮子省事多了,维护成本低,也不容易和现有的代码打架。他打算把这些原型转给正式的OpenJDK项目加快进度,还觉得这活儿可能会跟Panama项目扯上关系,因为那是为了让JVM跟非Java的API更好地连在一起的。Panama以后没准儿还会支持别的脚本语言呢。目前只有OpenJDK的成员能投票,投票截止日期定在3月11日。 其实关于Detroit到底是啥很多人不太清楚。简单来说它就是个跨语言互操作的项目。主要目标有两个:一是把JavaScript变成Java应用的扩展语言;二是让JavaScript应用能调用Java的库。 那为啥这个项目要重启呢?原因有两个:一个是2018年前后因为没赞助团队走不动了;另一个是现在大家又有了新需求——想从Java应用里去调用Python写的AI功能。 新的Detroit用了啥技术方案呢?主要是两个方向:一个是用Chrome V8引擎开发javax.script包的本地实现;另一个是基于CPython搞Python脚本引擎的原型。这种方案好处在于直接用现成的实现而不是重写,这样维护成本低还能跟现有的代码兼容。