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

par*_*ain 19 java virtual interpreter jit jvm

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

Tho*_*sen 11

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

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

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


eri*_*son 7

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

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

  • 实际上,软件实际上不可能比硬件更快.如果硬件较慢,则意味着它不发达.例如,如果Hotspot JIT比Java的某些硬件实现更快,您可以将Hotspot JIT移动到硬件,这肯定会比现有的更快.但无论如何,我怀疑JIT是在硬件中实现JVM的最快方式.@Vineet:1.任何可以在软件中完成的事情都可以在硬件中完成.2. x86在硬件级别进行严格的优化. (4认同)

Vin*_*lds 6

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

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

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