Java语言的跨平台性:
Java语言的编程过程:
只要实现了特定平台下的解释器程序(JVM),Java字节码就能通过解释器程序在该平台下运行,这是java跨平台的根本,当前并不是在所有平台下都有相应的Java解释器程序,这也是Java并不是在所有平台下都能运行的原因,它只能在实现了Java解释器程序(JVM)的平台下运行
另: Java兼顾解释性与编译性语言的特点:
JAVA源文件—>.class字节码文件 (编译型)
.class文件在OS上运行的过程则是解释型的(JVM充当了解释器的作用)
JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
Java开发环境的搭建:
注:运行一个开发好的Java程序,只需安装 JRE 即可
Javac.exe:是Java源文件的编译工具,例如:Test.java-编译---->Test.class(Java字节码文件)
Java.exe:负责解释执行java字节码文件,其实就是一个JVM.
JRE:
JRE为JavaRuntimeEnvironment的简称,JavaRuntimeEnvironment(包括JavaPlug-in)是Sun的产品,包括两部分:JavaRuntimeEnvironment和JavaPlug-in。
JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机、Java核心类库和支持文件。它不包含开发工具--编译器(javac.exe)、调试器和其它工具。
环境变量的配置:
用户变量与系统变量区别:
设置系统变量:
目的:为了在任意路径下都能运行java.exe,javac.exe等程序
①在我的电脑—>属性—>高级系统设置—>环境变量(永久配置)
优点:设置一次后,系统会保存此设置,对以后在当前OS上运行的任何程序都有效,但不会影响先前(未配置前)已经运行起来的程序
②在命令行窗口下设置(临时配置)
set path=c:\j2sdk1.4.0\bin;%path%;(%path%表示该环境变量的当前取值)
可以把上面的理解为赋值
注意:在命令行窗口下的设置只对当前这个窗口有效,并不会影响到其它命令行窗口和程序,但是如果在当前命令行窗口通过start命令新打开一个窗口,则会沿用原有的环境变量的值
当执行某个命令时:
classpath设置:
Java虚拟机按照classpath环境变量指定的目录顺序去查找这个类,以最先找到的为准,
并且不会当前目录查找.(注意区别path) ,如果未配置classpath默认查找当前目录.
set classpath=c:\ //只找c:\目录下的文件
使其在当前目录查找:
set classpath=%classpath%;//多了个;这种写法也会在当前目录查找(不建议这种写法)
set classpath=%classpath%;.//加了个".”这个".”代表JVM运行时的当前工作目录
关于当前目录举例:
set classpath=c:\mydir;.
c:\myjava>java Test//先查找c:\mydir,之后在查找c:\myjava(当前目录)
c:\myjava>d:
d:\>java Test//先找c:\mydir,之后在查找d:\(当前目录)
注意Java环境变量几种错误:
①set classpath =c:\j2sdk1.4.0\bin;//原本想设置"classpath”的值,设置成了"classpath+空格”
②set classpath= c:\j2sdk1.4.0\bin;//原本想设置"c:\j2sdk1.4.0\bin;"结果设置成了"空格+c:\j2sdk1.4.0\bin;”
③set classpath=c:\Documents and setting;//java不允许有带空格的目录名(关于这点,个人在windows 7 64位下测试是可以的,但仍然建议不要使用空格)
④在classpath的路径设置中避免中文
以上为临时配置classpath,可以在环境变量中新建classpath变量,进行赋值,永久配置.
class Test { public static void main(String[] args) { System.out.println("hello Java");// System.out.println作用打印若干字符并换行 System.out.print("hello world\n");// 与上面等价 } } class Test2// 每个类具备独立运行的能力 { public static void main(String[] args) { System.out.println("hello test2"); System.out.print("hello world\n"); } }