JDK,JRE,JVM三者关系简述
JDK,JRE,JVM三者的关系和区别在这里只简单说明,不作详细说明,baidu一下会有一堆详细说明。
JDK:是JAVA开发程序包,在JDK中有一个私有的JRE,这里的私有JRE方便程序员在开发完后,运行JAVA程序。私有JRE中也有JVM。
JRE:JAVA程序的运行环境,JRE中有JVM(java虚拟机),可以运行JAVA程序,还有JAVA的类库lib。在解释.class程序时,JVM需要调用解释所需要的的类库。一般有tools.jar和dt.jar。
JVM:JAVA的运行环境,一般都是在JRE中,也称JAVA虚拟机。
修改JAVA版本问题
在这主要说明安装了JDK的时候若是选择了安装外部公共JRE。那么计算机的系统环境变量可以不用设置。因为当你选择安装了外部公共JRE时,安装程序会把公共JRE的路径自己写入path,所以在安装完成后会看到path中自动添加了C:\ProgramData\Oracle\Java\javapath。并且在注册表中还会写入JRE路径和版本信息。并且会把java.exe,javaw.exe,javaws.exe三个程序放到C:\ProgramData\Oracle\Java\javapath文件夹下(java.exe可以运行java程序)。
所以一般修改JAVA版本的时候,把C:\ProgramData\Oracle\Java\javapath下的3个程序删除,复制你要的JRE版本的那3个程序到该文件夹下。然后到注册表的HKEY_LOCAL_MACHINE下的SOFTWARE找到JavaSoft修改Java Runtime Environment的CurrentVersion值为JAVA版本数值
如上图所示。
环境变量问题
一般安装了公共JRE,就不需要再设置环境变量。在IDE中也只用指定JDK的路径即可编写运行JAVA程序。
关于环境变量的问题,若是不安装公共JRE,那么则需要配置环境变量。即在系统环境变量中,新建变量JAVA_HOME存放安装的JDK路径。在Path中加入%JAVA_Home%/bin路径,使得系统可以运行java指令等。至于CLASSPATH变量是否有必要创建,应该在JDK高版本中不用再设置CLASSPATH变量。
CLASSPATH:环境变量。作用是指定类搜索路径,要使用已经编写好的类(如在程序中improt java.util.*,表示使用java.util下的类,这些类在tools.jar工具类库中。),前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
对CLASSPATH变量的作用下面再举一个例子:
用import语句就可以引入所需的公共类,如:
import java.io.*;
这个语句表示java.io中所有的公共类被引入当前包。系统先根据classpath指示的路径,然后按照包名找到所需的类,如classpath为c:\package\mypakage,而包名为cn.com.companyname.myname,系统则按照以下路径去寻找所需的类:c:\package\mypackage\cn\com\companyname\myname,也就是把环境变量和包名相连,形成路径,然后在这个路径下寻找类。对于Java类库,由于安装时已经自动注册了路径,所以不需要添加classpath,而使用自己定义的包中的类就必须更改classpath。
在以前一般CLASSPATH变量设置为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
现在的应用基本上不需要设置CLASSPATH,尤其是指向tools.jar 和rt.jar,只要能够找到jre,系统自动会找到这些jre自带的classpath(除非你人为地把这些jar文件移动到其他地方去了)