- 编程语言分为:编译型语言和解释型语言。
- 编译型语言需要经过特定编译器通过一次性编译,成为该特定平台硬件可执行的机器码,可脱离开发环境独立运行,运行效率较高,但是无法跨平台移植。
- 解释型语言需要经过特定解释器逐行解释成特定平台的机器码并立即执行的语言。不能脱离解释器独立运行,运行效率较低,跨平台比较容易,只需提供特定平台的解释器。
- Java语言既是编译型语言,也是解释型语言。Java程序的执行过程必须经过先编译,后解释两个步骤。Java源程序经过编译生成一种与平台无关的字节码(*.class文件),该字节码不是可执行性的,需要Java解释器来解释执行。Java语言里负责解释执行字节码文件(*.class)的是JVM。
- *.class字节码不面向任何平台,只面向JVM。所有平台上的JVM不同,但是它们都向编译器提供相同的编程接口,只要为不同平台实现了相应的JVM,编译后的Java字节码就可以在该平台上运行,从而实现了跨平台。
- Windows通过Path环境变量来查找命令,Windows大小写不敏感,Path和PATH没有区别;Linux通过PATH环境变量来查找命令,Linux大小写敏感,必须设置为PATH。Windows平台多个路径之间以分号(;)作为分隔符,%PATH% 来引用原有路径;而Linux则使用冒号(:)作为分隔符,$PATH 来引用原有路径。
- 设置Path环境变量时,系统变量排在用户变量之前,在系统变量中找到Path,则不会再去查找用户变量。
- 1.5之后版本的JDK,JRE会自动搜索当前路径下的类文件,而且使用java编译和运行工具时,系统可以自动加载dt.jar和tools.jar文件中的java类,因此不再需要设置CLASSPATH环境变量。
- JDK1.5以上也可以设置CLASSPATH环境变量,一旦设置了CLASSPATH,JRE将在环境变量指定的路径下搜索java类。这意味着,CLASSPATH的路径中不包含(.),也就是没有包含当前路径,JRE也不会在当前路径中搜索java类。