java的平台独立性

一个特点,平台独立性,意味着用 Java 语言编写的程序必须在任何受支持的硬件/操作系统平台上类似地运行。一个人应该能够编写一次程序,编译一次,然后在任何地方运行它。

大多数 Java编译器通过半途编译 Java 语言代码(到 Java 字节码)来实现这一点——特定于 Java 平台的简化机器指令。然后代码在虚拟机 (VM) 上运行,这是一个在主机硬件上用本地代码编写的程序,用于解释和执行通用 Java 字节码。(在某些 JVM 版本中,字节码也可以在程序执行之前或期间编译为本机代码,从而加快执行速度。)此外,还提供了标准化库以允许访问主机的功能(例如图形、线程和计算机网络)以统一的方式。请注意,尽管存在显式编译阶段,但在某些时候,JIT 编译器会将 Java 字节码解释或转换为本机机器码。

该语言的第一个实现使用解释的虚拟机来实现可移植性。这些实现产生的程序比编译成本地可执行文件的程序运行得更慢,例如用 C 或 C++ 编写的,因此该语言以性能不佳而闻名。最近的 JVM 实现使用多种技术生成的程序运行速度比以前快得多。

java的平台独立性

一种称为即时编译(JIT) 的技术在程序运行时将 Java 字节码转换为本机代码,这导致程序执行速度比解释代码快,但在执行期间也会产生编译开销。更复杂的 VM 使用动态重新编译,其中 VM 可以分析正在运行的程序的行为,并有选择地重新编译和优化程序的关键部分。动态重新编译可以实现优于静态编译的优化,因为动态编译器可以基于有关运行时环境和加载类集的知识进行优化,并且可以识别热点(程序的一部分,通常是内部循环,占用最多的执行时间)。JIT 编译和动态重新编译允许 Java 程序在不损失可移植性的情况下利用本机代码的速度。

另一种技术,通常称为静态编译,是像更传统的编译器一样直接编译为本机代码。静态 Java 编译器,例如GCJ,将 Java 语言代码翻译为本机目标代码,去除了中间字节码阶段。与解释相比,这实现了良好的性能,但以牺牲可移植性为代价;这些编译器的输出只能在单一架构上运行。有些人认为以这种方式避免使用 VM 会破坏 Java 开发的意义。但是,提供通用字节码版本以及优化的应用程序本机代码版本可能很有用。

java的平台独立性

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注