目录
执行流程图
Java是一种编译型与解释型语言的混合体。Java源代码首先被Java编译器(例如javac
)编译成字节码(.class
文件)。这些字节码是平台无关的,并且可以在任何安装了Java运行时环境(JRE)的机器上执行。
然后,Java虚拟机(JVM)负责加载和执行这些字节码。JVM中有一个组件叫做Java解释器(Interpreter),它确实会逐条解释并执行字节码指令。但是,为了提高性能,现代JVM还使用了即时编译器(Just-In-Time Compiler,JIT)。
JIT编译器会将热点代码(即经常执行的代码片段)编译成本地机器代码,这样可以直接由硬件执行,而不需要逐条解释,从而大大提高了执行效率。
更多参考前辈的详细文章:http://t.csdnimg.cn/KzuvU
Java底层题
答案:CD
C:Java源文件并不需要在不同平台上进行编译才能实现跨平台运行。实际上,Java源文件只需要在一种平台上编译成字节码,然后这些字节码可以在任何安装了相应JVM的平台上运行。
D:JVM(Java虚拟机)是Java实现跨平台的关键。Java语言本身是一种高级语言,它编写的程序需要被转换成机器语言才能在特定的硬件平台上运行。然而,不同的硬件平台使用不同的机器语言,这就导致了传统的编译型语言(如C++)编写的程序通常只能在特定的平台上运行。为了解决这个问题,Java引入了JVM。JVM是一个抽象的计算机,它定义了自己的字节码指令集、寄存器集、类文件格式、栈、垃圾回收堆等。Java编译器(javac
)将Java源代码编译成一种平台无关的字节码(即Java字节码),这种字节码不是任何特定硬件平台的机器语言,而是JVM的“机器语言”。然后,这些字节码可以在任何安装了JVM的硬件平台上运行。当JVM加载并执行这些字节码时,它会将这些字节码动态地转换成适合当前硬件平台的机器语言,从而实现了Java程序的跨平台运行。因此,可以说JVM是Java实现“一次编写,到处运行”这一跨平台特性的关键所在。通过JVM,Java程序可以在不同的操作系统(如Windows、Linux、macOS等)和不同的硬件架构(如x86、ARM等)上无缝地运行。