如果我们在硬件中实现 java 解释器,那么我们如何实现 java 字节码的体系结构中立性...... java 是否使用 JIT(即时解释器)?以及这一切与操作系统的虚拟机概念和java虚拟机(JVM)有何关系
4 回答
Java 系统已经有几种硬件实现(即可以执行字节码的 CPU),但它们还没有成为主流。这很可能是因为软件实现的性能与 CPU 变得越来越快一样好,甚至更好。
正如您在深入研究时会发现的那样,JVM 实现的细节并不那么重要(并且变化很大),但它们都执行 JVM 的机器语言 - java 字节码。如果您停留在 Java 世界中并且不链接“本机”内容,那么您选择的任何实现都应该没问题。
这家公司以提供针对 Java 程序调整的服务器系统为生,您可能会感兴趣:http ://www.azulsystems.com/
是的,有几种硬件 Java 实现。然而,它们并不总是比在更通用的芯片上运行的软件性能更好。
Mark Lam 就这个主题写了几篇有趣的博客文章。
是的你可以。尽管这看起来像是停留在规范阶段(或被放弃),但picoJava允许 Java 字节码的本机执行。picoJava 在 FPGA 上有一个可用的端口。有Jazelle,以及 ARM 处理器。
鉴于硬件将直接执行字节码,所有优化也必须在硬件中完成。不需要 JIT,因为处理器将直接执行字节码。毕竟,任何硬件实现都将涉及实现Java 虚拟机规范中定义的 JVM 模型。可以执行的优化将基于硬件优化 - 指令流水线、缓存的使用等。
硬件中立性并没有丢失,因为在硬件实现上执行的字节码也将继续在软件实现上工作。正是字节码标准允许 Java 与硬件无关。
- 在硬件中实现 JVM 忽略了运行托管代码的优势。那么它与任何其他本机代码有什么不同。是的,平台中立性也受到阻碍。无论如何,有这样的实现,请查看 aJile 系列处理器和 ARM 的 Jazelle。不过,这些都是针对嵌入式平台的。
- Sun 的编译器 HotSpot 使用 JIT。我个人没有使用过其他人,但它应该是一种高度使用的技术。
- JVM 可以被认为是一个资源有限的虚拟机,只针对一个特定的平台(Java 字节码)。