Java语言的工作原理

时间:2011-02-07 16:48:33

标签: java jvm

我对Java的了解不是很好,所以我想问一下这种语言是如何工作的。我不仅指“语言”,还指虚拟机。

这是我的理解。

  1. Java编译器将代码转换为Java Byte-Code。以.java文件的形式
  2. 当文件运行时,JVM会(及时)读取字节码并将其转换为机器码。
  3. 计算机读取机器代码,程序似乎像编译程序一样运行(对用户)。
  4. 这绝对错了吗?

6 个答案:

答案 0 :(得分:3)

已经有很多答案,但我遗漏了一个重点:

  

“2。当文件运行时,JVM读取(及时)字节码并将其转换为机器码。”

这不太正确。

  • JVM以解释代码
  • 开头
  • 它考虑了最耗时的部分,热点
  • 分析跟踪,即典型的执行流程
  • 它生成针对热点和痕迹优化的机器代码

代码耗时较少的部分可能会被解释。如果情况发生变化(例如,通过加载新类),某些已编译的代码可能会显示为不再优化甚至不正确,并且它会被丢弃并且JVM恢复解释一段时间,然后再次重新编译它

答案 1 :(得分:2)

Java虚拟机(JVM)是​​一种软件,它解释编译的Java字节代码并运行java程序。 Java虚拟机语言在概念上代表了面向堆栈的功能架构的指令集。

Java虚拟机没有关于编程语言的任何信息。 JVM只知道二进制字节代码格式。程序员可以在任何编程语言中生成符合此格式的字节码。每个Java程序都在Java虚拟机定义的边界内运行。

在JVM内部运行的java代码不能超出Java虚拟机定义的安全约束。由于该软件,Java应用程序被视为Internet上的安全应用程序。

答案 2 :(得分:2)

答案 3 :(得分:0)

您的理解是正确的。我想添加以下

  1. HotSpot编译器自适应将Java字节码编译为优化机器指令

答案 4 :(得分:0)

几乎:

  • Java编译器创建.class文件而不是.java文件,其中包含字节代码。 .java文件包含源代码。
  • JVM(Java虚拟机)本身就像(虚拟)计算机。它解释字节代码。操作系统只运行JVM。
  • JIT(及时)编译器可以出于性能原因将部分代码编译为机器代码,在这种情况下,JVM将该代码的执行委托给操作系统(我猜)。

答案 5 :(得分:0)

准确地说,

  • 创建java类时,扩展名为.java

  • 在编译期间,编译器将代码(.java文件)转换为 .class(字节代码)。

  • 运行代码时,JVM将字节代码(.class文件)转换为 可由OS解释的机器代码。通过这样做,它成功 Java作为平台独立,JVM作为平台依赖。