Jdk,Jre,JVM,跨平台略述。
- JVM就是java虚拟机,可以通过java.exe执行.class文件(当然,这需要核心类库的支持),把二进制字节码转换成机器码。
- Jre是java运行环境,包括Java虚拟机JVM和java程序所需要的核心类库。jre中的bin目录下有java.exe,姑且可以将jre中的bin目录看成是JVM,lib目录就是核心类库。如果想要运行已经开发好的java程序,则需安装Jre。
- Jdk是开发工具包。是给java开发人员使用的,它包含java开发工具,(在bin目录下) 和 Jre。jdk中的也有bin目录,注意它与jre中的bin不同,它的bin目录下有javac.exe,可以把写好的.java文件编译成.class文件。
- 跨平台性就是指编译好的.class文件,可以在不同的操作系统上运行,但是每个操作系统必须安装有相应的java虚拟机,严格来说,是要有Jre。
- 执行过程: java开发人员在安装了jdk的linux系统上编写了源程序,并通过jdk中的bin目录下的javac.exe工具把.java文件编译成.class文件,他可以把.class文件给安装了其他操作系统的电脑,例如windows,该电脑里安装了相应的jre,那么,该电脑就可以通过jre中bin目录下的java.exe,并配合着lib中的核心类库将.class文件解释并转换成自己电脑上的机器码文件,自己电脑再执行机器码文件就行了。
path,classpath环境变量配置。
-
怎么配置path路径:
- 找到自己的jdk所在路径,并复制。比如我的是:D:\Java\jdk1.8.0_171
- 打开自己电脑的高级系统设置,(windows的系统版本不同所以打开的方式不同)
- 打开后找到高级,然后找到环境变量,然后在系统变量上新建,变量名:JAVA_HOME; 变量值:D:\Java\jdk1.8.0_171(把刚才复制的jdk路径粘贴上去),然后确定。
- 最后在系统变量中找到path,编辑,在最前边添加 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意bin后边还有个分号,别掉了,然后就是千万要小心,别把其他的路径删了)
- 至于classpath没有太大必要去配。
-
为什么要配置path?
- 初学时,要通过命令提示符上操作,如果你写了一个A.java的java源文件,若想在命令提示符上操作javac(.exe) A.java成功,则必须满足两个条件1:当前操作目录必须是javac(.exe) 所在的目录,也就是jdk下的bin所在的目录。2:A.java 也必须在当前操作目录下所在目录下。也就是当前操作目录必须有A.java文件。这两个条件缺一不可。
- 所以配置Path后,摆脱了第一个条件的限制,系统会自动根据你配置的路径去找到javac.exe,不用非要在命令提示符上切换到java.exe所在目录,那样比较麻烦。
- 但是还是要保证要编译的.java文件要在命令提示符上的当前目录内。
-
为什么要配置classpath?
- 当你在命令提示符上java(.exe) xx.class 时,也要满足上述的两个条件,其中由于path路径已经配置好了,而且java.exe也在jdk的bin目录下,所以不用管第一个条件,系统会自动找到java.exe所在目录。
- 配置classpath就是为了摆脱第二个条件(.class文件必须要在命令提示符上的当前操作路径内),假如我配置了classpath=c\class,就会去c盘下的class文件夹内寻找xx.class,找不到就会报错。
3.一般情况下,.class文件就在当前命令提示符的路径内,因为javac A.java 时产生的A.class文件和A.java文件默认在同一个路径。当然,如果你直接java.exe一个其他路径的.class文件,就得到那个路径下去找。 - 简而言之,当你 java A.class 时path为你解决了java.exe所在路径的问题,classpath为你解决A.class文件所在路径问题。
写在后头。
后期使用eclipse,idea等开发时本来是不需要配置path和classpath的,原因好像是这些集成开发软件能够找到并运行javac.exe和java.exe。但是还是要配置,是为了向 ANT 、 Maven之类的需要。