和其他编译型以及解释性语言相比,Java语言比较特殊,它的编译过程比较特殊,并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(也就是*.class文件)。当然,这种字节码不是可执行性的,必须使用Java解释器来解释执行。
因此可以认为:Java语言既是编译型语言,也是解释性语言。Java程序执行过程必须经过先编译,后解释的步骤。
Java语言里负责解释执行字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。所有平台上的JVM向编译器提供相同的编程接口,因此编译后的Java字节码就可以在该所有平台上运行,做到平台无关。
与JVM经常混淆的两个概念是JDK和JRE:
1>JDK(Java SE Development Kit)即java标准开发包,是提供给开发人员的一套应用程序开发包。
2>JRE(Java Runtime Environment)java运行时环境,它是运行java程序的必须条件。
JRE和JVM的关系:
JRE包含了JVM。JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要核心虚拟机,而运行Java程序不仅需要核心虚拟机,还需要其他的 类加载器、字节码校验器以及大量的基础库类。JRE除了包含JVM之外,还包含了运行Java程序的其他环境支持。
一般而言,如果只是运行Java程序,只需要安装JRE,无需安装JDK。