自从接触java以来一直就没有明白jdk和jre有什么作用以及安装jdk后配置环境变量的意义是什么,所以今天就来认真的学习了一下jdk及环境变量的相关知识。
百度百科对jdk和jre的解释如下:
JDK是Java语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。
JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)–编译器、调试器和其它工具。
可以看出jdk是java运行的核心并且jre是jdk的一部分,而jre中有包含了jvm,众所周知jvm是java程序运行的基础,在之后的博客中我会系统的对jvm进行研究,所以可以看出三者的关系如下图所示:
一般情况下我们安装完jdk后还需要配置环境变量否则java程序将无法执行,接下来我们就一起看看这些配置变量分别有什么作用。
java_home为jdk安装的具体路径,配置这个变量可以在path变量中直接引用,告诉操作系统jdk的安装位置,因为在改目录下包含javac和java这两个命令工具,这两类命令用于java程序的编译和运行,是java程序运行必不可少的工具。
path为外部命令搜索路径,例如:%JAVA_HOME%\BIN; 当你改变javahome时却不必影响到path你设java_home时不用经常改变path,java_home在path里只是一个相对路径。这个path变量是给操作系统使用的,在命令行中执行javac和java命令时会根据path找到这两个命令工具所对应的程序然后执行。
classpath是类资源位置搜索路径,CLASSPATH是给JAVAC和JAVA用的,告诉他们,你写的JAVA类,是放在什么地方的。如果我们没有配置classpath,那么在每次运行java程序时就需要把它所对应的class文件放到java的bin文件夹下面,为什么要这样做呢?因为我们在用到java hello.class这条指令的时候,DOS不知道hello.class这个文件在哪里,他就先到当前目录中去找,如果找到就运行,否则失败。当然,如果说hello.java在D盘根目录下,你也可以用java D:\hello.class这条指令来运行,但是每次这样做也确实够麻烦。所以这时候就需要用到classpath了,classpath被赋予了当前路径,每次java程序执行的时候就在bin下面寻找class文件,如果没有找到就按照classpath路径去寻找相应的文件这样就不会出现文件找不到的情况了。
事实上JDK 5.0默认就会到当前工作目录(上面的.设置),以及JDK的lib目录(这里假设是C:\Program Files\Java\jdk1.5.0_06\lib)中寻找Java程序。所以如果Java程序是在这两个目录中,则不必设置Classpath变量也可以找得到,将来如果Java程序不是放置在这两个目录时,则可以按上述设置Classpath。
安装完jdk并配置好环境变量之后java代码就可以运行了,下面我们动手运行一个小程序来试试jdk是否安装成功。
首先编写一段简单的java代码:
public class JAVA {
public static void main (String arg[]){
System.out.print("hello word");
}
}
把这段代码放到d盘目录下进行编译和执行 :
好了,这样程序就运行成功了!