我们可以在硬件中实现一个java解释器本地执行Java字节码吗?

时间:2009-09-05 18:16:44

标签: java jvm virtual interpreter jit

如果我们在硬件中实现java解释器那么我们如何才能实现java字节码的架构中立性...... java是否使用JIT(只是及时解释器)? 以及如何将这一切与操作系统和Java虚拟机(JVM)的虚拟机概念相关联

4 个答案:

答案 0 :(得分:10)

已经有几个Java系统的硬件实现(即可以执行字节码的CPU),但它们还没有成为主流。这很可能是因为随着CPU变得越来越快,软件实现的性能也越来越好。

正如您在深入研究时所发现的那样,JVM实现的细节并不重要(并且变化很大)但它们都执行JVM的机器语言--java字节代码。如果你留在Java世界中并且没有链接“本机”的东西,你应该没有任何你选择的实现。

该公司致力于提供针对Java程序调整的服务器系统,他们可能会对您感兴趣:http://www.azulsystems.com/

答案 1 :(得分:6)

是的,你可以。虽然这看起来像是停留在规范阶段(或被放弃),但picoJava允许本机执行Java字节码。 picoJava has a port available on a FPGA。 ARM处理器也有Jazelle

鉴于硬件将直接执行字节码,所有优化也必须在硬件中完成。由于处理器将直接执行字节码,因此不需要JIT。毕竟任何硬件实现都涉及实现Java Virtual Machine Specification中定义的JVM模型。可以执行的优化将涉及硬件优化 - 指令流水线,缓存的使用等。

硬件中立性不会丢失,因为在硬件实现上执行的字节码也将继续在软件实现上工作。字节码标准允许Java是硬件中立的。

答案 2 :(得分:6)

是的,有几个硬件Java实现。但是,它们并不总是比在更通用的芯片上运行的软件表现更好。

Mark Lam已就此主题撰写several interesting blogs entries

答案 3 :(得分:3)

  • 在硬件中实现JVM忽略了运行托管代码的优势。与其他任何本机代码有什么不同。是的,平台中立性也受到阻碍。无论如何,有这样的实现,请查看aJile系列处理器和ARM的Jazelle。这些都是针对嵌入式平台的。
  • Sun的编译器,HotSpot使用JIT。我个人没有使用其他人,但它应该是一种高度使用的技术。
  • JVM可以被视为有限的资源VM,仅针对一个特定平台(Java字节码)。