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