是否可以直接在jvm中实现java应用程序的一部分?
我在我的大学学习了ijvm(jvm 的一个子集),它提出了一个问题:是否可以直接在 jvm 中实现 java 应用程序的一部分以提高性能?... 就像您可以在汇编中实现 C 程序的一部分一样。
如果可能,我将非常感谢展示它的代码片段。
回答
是否可以直接在 jvm 中实现 java 应用程序的一部分?
我认为您的意思是在 JVM 字节码中编程。
对的,这是可能的。但是,您不太可能通过这样做获得显着的改进。
为什么?
因为现代 JVM 1实际上将字节码编译为本机代码,而字节码到本机代码编译器通常会进行一些非常认真的优化。
所以:
-
您对编写更好(更快)字节码的任何见解都可能是错误的。
-
通过优化字节码,您实际上可能会干扰字节码到本机代码编译器的优化能力。
此外,JVM 字节码需要遵循一些相当严格的规则,这些规则旨在避免运行时类型错误。如果您的手写字节码违反了这些规则,它们将(应该!)在类加载时被验证器拒绝。
但是如果你想尝试,有编写字节码汇编语言的工具;请参阅有哪些 JVM 汇编程序?.
1 - JIT 编译首先在 JDK 1.2 中的主流 (Sun) Java 中得到支持。在此之前,JVM 仅解释字节码,而手动编码字节码更有可能产生影响。但在那些日子里,获得更好性能的方法是用 C 编写 Java 应用程序的性能关键部分,并通过 JNI 调用 C。