Jvm Java虚拟机的替代方案是什么?

Jvm Java虚拟机的替代方案是什么?,jvm,bytecode,portability,vm-implementation,Jvm,Bytecode,Portability,Vm Implementation,随着甲骨文就Dalvik虚拟机起诉谷歌,很明显,没有甲骨文的许可证,你不能实现Java虚拟机(编辑:Matthew Flaschen指出,甲骨文的说法可能是无效的。无论如何,我们目前的情况是甲骨文威胁虚拟机的实现)。这可能会导致Java(如Java)开源实现的死亡 我不想讨论这场诉讼的影响或合法性。但是作为一名Java程序员,我想更深入地研究备选方案,为每种情况做好准备。当我把编译器的创建看作一个小问题时,我的主要兴趣是替代VM实现,它们与JVM的用途类似 我正在寻找的VM应满足以下条件: 无

随着甲骨文就Dalvik虚拟机起诉谷歌,很明显,没有甲骨文的许可证,你不能实现Java虚拟机(编辑:Matthew Flaschen指出,甲骨文的说法可能是无效的。无论如何,我们目前的情况是甲骨文威胁虚拟机的实现)。这可能会导致Java(如Java)开源实现的死亡

我不想讨论这场诉讼的影响或合法性。但是作为一名Java程序员,我想更深入地研究备选方案,为每种情况做好准备。当我把编译器的创建看作一个小问题时,我的主要兴趣是替代VM实现,它们与JVM的用途类似

我正在寻找的VM应满足以下条件:

  • 无专利问题
  • 存在一个开源实现
  • 优化潜力/良好性能
  • 平台独立(VM可以移植到不同的平台,没有更大的障碍)

请为我添加一些建议。

我不认为有任何重要的软件没有专利问题

如果你是一个独立的开发者或者为一个较小的公司工作,你可能不会直接受到问题的影响。持有专利的大公司不太可能追求大量的小额索赔——这是一个昂贵的过程,会引起很多不满。上合组织尝试过类似的事情,但结果对他们来说并不太好

我会集中精力寻找适合这项工作的最佳工具,而不必太担心专利问题,否则你将一事无成。

是一个非常好的优化、低级虚拟机。它可以支持C语言和C++语言,并且没有内置的支持垃圾收集之类的高级功能。 是LLVM之上Java和CLI虚拟机的实现。由于它使用Java字节码,这可能无助于解决专利问题


是构建在LLVM之上的另一个有趣的高级虚拟机。它的不同之处可能足以避免大多数著名的专利,但它主要针对数值计算和函数编程

在动态类型方面,有

实际上,我正在为自己设计的语言编写编译器和虚拟机,但不要指望它会完成

请记住,任何大型软件都会侵犯许多专利,重要的是它们的知名度(以及专利所有者积极寻找侵权者的程度)。当然,整个专利系统是荒谬的,我们最好摆脱它。

是一个由甲骨文实验室开发的研究项目,已经在Twitter上投入生产。我不敢相信我的眼睛竟然没人提起这件事,太奇怪了。无论如何,java java虚拟机是一个很有希望的扩展,它支持更多的语言和执行模式,例如JavaScript、Python、Ruby、R、JVM语言和基于C++和C++的LLVM语言。该项目包括一个新的高性能Java编译器,GRAL,可以在HotSpot VM上的即时配置中使用,也可以在SubstrateVM上的提前配置中使用。该项目的主要目标是提高java虚拟机基础语言的性能,以匹配本地语言的性能。让我们总结一下这个项目提供的新奇特性,并根据文档简要说明为什么您应该采用它

  • Polyglot:所有语言(甚至基于LLVM)都共享相同的VM及其功能。编程语言之间的零开销互操作性允许您编写多语言应用程序,并为您的任务选择最佳语言
  • 本机:提前使用GraalVM编译的本机映像缩短了基于JVM的应用程序的启动时间并减少了内存占用
  • 可嵌入:GraalVM可嵌入托管和本机应用程序中。现有的OpenJDK、Node.js、Oracle数据库和MySQL-GraalVM集成消除了编程语言之间的隔离,并在共享运行时实现了互操作性。它可以独立运行,也可以在OpenJDK、Node.js、Oracle数据库或MySQL的上下文中运行
  • 性能: Graal基准测试报告显示,由于GraalVM执行对象分配的方式,几乎所有实现的性能都有了很大的提高

如果有人现在还不相信这是一个很好的选择,而且这是一个非常棒的项目,你可以在Christian Thalinger的“关于为什么Graal非常适合Twitter”上看到这一点。

IBM有自己的JVM,但我不知道它是否满足了你的前两点(尽管我认为它满足了后两点)“很明显,没有Oracle的许可,你不能实现Java虚拟机。”我不得不强烈反对这种解释。即使谷歌侵权,也不意味着不可能建立一个合法的独立Java虚拟机。“我不想讨论这场诉讼的影响或合法性”听起来你正是这么做的。你不应该已经假设甲骨文的声明有任何效力。我们还在第一次裁决之前,更不用说最后一次上诉了。最后,您应该注意到Oracle不能撤销OpenJDK上的GPL许可证。@Mnementh:我认为(希望如此),这是因为谷歌在这种情况下是一个竞争对手,破坏了兼容性。我怀疑他们会起诉任何人制作他们自己的兼容VM/库(Apache Harmony,GNU Classpath…),这只会损害整个Java社区。还记得Sun起诉微软吗