本节讨论如何在浏览器中的JavaScript引擎中运行Java平台。在浏览器中运行Java应用程序的标准方式是通过Java小程序。 Applets可以在Web浏览器中提供高级别的交互功能,这将超出HTML的普通功能。如果你想在Java中运行JavaScript,你应该参考nashorn JavaScript引擎。
在客户端脚本方面,JavaScript没有竞争对手。随着现代网络和浏览器的出现,JavaScript更加蓬勃发展。凭借良好的JavaScript技能以及像jQuery这样的库,我们可以轻松地在现在的市场中找到一份好工作。在这种情况下,我只是想了解在浏览器的JavaScript引擎中完全可以运行Java JVM。在这方面是否有任何工作正在进行以及提供这种支持的任何库。
Orto JavaScript JVM
2008年,John Resig在Orto JavaScript JVM上发布了一篇博文。我们可以通过Orto运行Java字节码,它生成一个JavaScript并且可以嵌入网页中。我无法追踪Orto的源项目URL,并且看起来像目前没有被维护。幸运的是,一些好的撒玛利亚人在GitHub上发布了Orto项目。没有关于许可条款和文档的信息都是日文版本。
Jainja Java转为JavaScript
Jainja声称支持Java 1.5规范的所有主要特性。 Jainja JVM的演示版可用作Chrome应用程序。一个俄罗斯方块游戏使用这个JVM托管在appspot中,它非常令人印象深刻。应用程序在浏览器中的响应缓慢。项目源可用并在SourceForge上托管。
BicaVM
这是构建JVM的一部分。这更像是一个概念验证(POC),而不是一个完整的JVM。从这个意义上说,这很有吸引力,我们可以学习如何以及从哪里开始进行类似的项目。
LLVM,VMKit和emscripten组合
“LLVM项目是模块化和可重用的编译器,工具链技术的集合。” VMKit项目是构建在LLVM上的Java和.NET VM的实现。 VMKit目前尚未维护,但代码可用查看其存储库。 emscripten是一个LLVM-to-JavaScript编译器。它可以将LLVM位码转换为JavaScript。所以通过结合这三者,我们应该能够在JavaScript引擎中运行Java。 VMKit目前没有维护,并且考虑到使用这些组合,所以这不是一个有希望的想法。
其他类似的Java JVM
+script- 辅助大学课程的部分实施。
Bck2Brwsr - 这是列出的所有这些项目中最活跃的项目。这是来自NetBeans IDE的创始人之一。
Doppio - 是一个可以在JavaScript引擎中运行Java的Java JVM。它是用CoffeeScript编写的。这是声称对功能支持最多的一个。
jarjvm - 完全是用JavaScript Java JVM编写的。目前它基于GitHub中的提交而不是主动的。
node-jvm - 是纯node.js中的Java虚拟机关于支持哪个版本的Java规范没有太多可用的信息。看起来,它没有积极维护。
在上面列出的所有项目中,Bck2Brwsr和Doppio是看起来很有前途的JavaScript Java JVM。这些项目赶上Java 8并不是一件容易的事情。