当甲骨文通过Dalvik VM起诉Google时,很明显,如果没有Oracle的许可,你就无法实现Java VM(编辑:Matthew Flaschen指出,Oracle的主张可能无效。无论如何我们目前的情况是Oracle,威胁VM实现。)。这可能成为Java的开源实现(如Apache Harmony)的死亡。
我不想讨论这起诉讼的影响或合法性。但作为一名Java程序员,我想深入研究替代方案,为每个案例做好准备。当我将编译器的创建视为一个小问题时,我的主要兴趣是替代的VM实现,其用途与JVM类似。
我正在寻找的VM应该满足一些条件:
请为我添加一些建议。
LLVM是一个非常好的优化,低级虚拟机。它可以支持C和C ++等语言,并且没有内置支持垃圾收集等高级功能。
VMKit是LLVM之上的Java和CLI虚拟机的实现。由于它使用Java字节码,这可能无助于专利问题。
HLVM是另一个有趣的高级虚拟机,建立在LLVM之上。它可能与避免大多数众所周知的专利有所不同,但它主要针对数值计算和函数式编程。
在动态类型方面,有Parrot。
我实际上是在为我自己设计的语言编写一个编译器和VM,但是不要指望它永远都没有完成。 ;-)
请记住,任何大型软件都会侵犯众多专利,重要的是它们的知名程度(以及专利所有者积极寻找侵权者的程度)。当然,整个专利制度都是荒谬的,我们摆脱它会好得多。
我认为没有任何重要的软件可以免于专利问题。
如果您是独立开发人员或为较小的公司工作,您可能不会直接遇到问题。持有专利的大公司不太可能追求大量的小额索赔 - 这是一个昂贵的过程并引起很多不满。 SCO尝试过类似的东西,对他们来说效果不佳。
我会集中精力找到最好的工具,而不必过多担心专利问题,否则你永远不会做任何事情。
GraalVM是由Oracle实验室开发并已在Twitter上制作的研究项目。我无法相信我的眼睛,没有人提到它,它是如此奇怪。无论如何,GraalVM是一个很有前途的Java虚拟机扩展,支持更多的语言和执行模式,用于运行JavaScript,Python,Ruby,R,基于JVM的语言,如Java,Scala,Kotlin,Clojure和基于LLVM的语言。 GraalVM项目包括一个新的高性能Java编译器,它本身称为Graal,可用于HotSpot VM上的即时配置,或者在之前的配置中使用。 SubstrateVM。该项目的主要目标是提高java虚拟机基本语言的性能,以匹配本机语言的性能。让我们总结一下这个项目提供的新颖功能,并根据你应该采用它的文档做一个简短的解释
- Polyglot:所有语言(甚至基于LLVM)共享相同的VM及其功能。编程语言之间的零开销互操作性允许您编写多语言应用程序并为您的任务选择最佳语言
- Native:使用GraalVM提前编译的本机映像可以缩短启动时间并减少基于JVM的应用程序的内存占用。
- 可嵌入:GraalVM可以嵌入托管和本机应用程序中。现有的OpenJDK,Node.js,Oracle数据库和MySQL的集成GraalVM消除了编程语言之间的隔离,并实现了共享运行时的互操作性。它既可以独立运行,也可以在OpenJDK,Node.js,Oracle数据库或MySQL环境中运行。
- 性能:由于GraalVM执行对象分配的方式,Graal基准测试报告显示其几乎所有实现都有出色的性能改进
如果现在有人不相信这是一个很好的选择并且它是一个非常棒的项目你可以看到Christian Thalinger的这个talk“关于为什么Graal非常适合Twitter”