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

如果我们在硬件中实现java解释器那么我们如何实现java字节码的架构中立性… java是否使用JIT(只是在时间解释器中)? 以及这些与虚拟机概念的操作系统和java虚拟机(JVM)有何关系

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

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

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

是的你可以。 虽然这看起来像是停留在规范阶段(或被放弃),但picoJava允许Java字节码的本机执行。 picoJava在FPGA上有一个端口 。 还有Jazelle ,以及ARM处理器。

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

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

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

Mark Lam在这个主题上撰写了几篇有趣的博客文章 。

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