Java需要经过先编译Compile,生成与平台无关的字节码 即 *.class文件,不会生成特定平台的机器码。这种编译后的*.class字节码是不可执行的,不面向具体平台,只面向JVM,必须使用Java解释器来解释执行。所有Java语言要先编译,再解释。
JDK:全称 Java SE Development Kit ,几Java标准版开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、JRE、及常用Java类库。 开发环境包括编译程序的编译器即javac命令。
JRE:Java Runtime Environment , Java运行时环境。
JVM:Java Virtual Machine , Java虚拟机,JVM是转换器,可运行Java字节码文件的虚拟计算机,负责解释执行字节码文件,所有平台上的JVM向上提供给Java字节码程序的接口完全相同,但向下根据不同的平台提供的接口则不同。即所有平台上的JVM向编译器提供相同的编程接口,编译器只需要面向虚拟机,生成虚拟机理解的代码,然后由虚拟机解释执行。不同平台的JVM都不同,但它们都提供相同的接口。为不同平台实现相应的JVM,编译后的Java字节码就可以在该平台运行。
JIT:即时编译,JIT会将经常用到的指令保存到内存中,当下次调用的时候,就不需要重新编译了,这种即时编译能让JDK提高效率。
JRE和JVM的联系区别:JRE包含JVM,JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要JVM,还需要其他的类加载器、字节码校验器及大量的基础类库。JRE除了包含JVM外,还包括运行Java程序的其他环境支持。开发Java程序,要安装JDK,安装JDK后,就包含了JRE,就可以运行Java程序。如果只运行Java程序,需要安装JRE,仅安装JVM是不够的。
Java SE对应JDK,Java EE对应Java EE SDK (Software Development Kit)