安装JDK、Java环境变量设置以及JVM、JRE和JDK的区别

最近准备学习Spring框架,安装eclipse时会提示什么code=13错误提示,百度知eclipse只支持JDK1.7,而自己装的已是JDK1.8。于是卸了8装7,结果。。好像每次装JDK都稀里糊涂会遇到问题然后再稀里糊涂的解决,所以准备整理一篇有关安装JDK的文章。
每个初学者可能对JVM、JRE和JDK都稀里糊涂,先来看一下它们之间的关系。

JVM:Java Virtual Machine即Java虚拟机
Java虚拟机是整个Java实现跨平台的最核心的部分,所有Java程序首先被编译为.class类文件,这种文件通过虚拟机间接与OS进行交互,由虚拟机将程序解释给本地系统执行。因此JVM屏蔽了与OS相关的信息,使得Java只需生成在虚拟机上执行的字节码文件,就可在多种平台上运行程序。
但是只有JVM还不能完成.class的执行,因为在解释class文件时需要调用所需要的类库lib,而JRE就包含lib类库也就是下面要说的Java运行环境。

JRE:Java Runtime Environment即Java运行环境
JRE是运行Java程序必不可少的运行环境,包含JVM和Java核心类库,并不包含编译器调试器等开发工具。对于普通用户来说只需安装JRE即可运行Java程序,安装好目录里会有文件夹bin和lib,我们可以认为bin里的就是JVM,lib中是JVM解释时需要的类库。开发人员写完Java程序编译成class文件后,可以将class文件和JRE一起打包发送给其他人,在别的电脑上就可以运行这个Java程序。

JDK:Java Development Kit即Java开发工具包
JDK是针对Java开发人员的产品,包括Java运行环境、Java工具和Java类库。安装好JDK后我们会看到目录下有bin、include、lib、jre等,其中jre就是Java运行环境,该jre称为专用jre,是开发人员在开发Java程序过程中运行Java用到的运行环境。在JDK的安装过程中会有两个jre的安装目录,独立安装的jre称为公共jre即上面提到的JRE。
Bin中包含最主要的编译器javac.exe,include中包含Java和JVM交互用的头文件,lib就是类库。
综上可知JDK包含JRE,JRE包含JVM。

接下来就开始安装JDK啦~
先去官网上下载相应的JDK安装包,即与系统相匹配的
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
1、选择安装路径,一定要记住安装路径,因为之后设置环境变量会用
我的安装路径是D:\Java\jdk

安装JDK、Java环境变量设置以及JVM、JRE和JDK的区别

2、我们之前说JDK中包含JRE,在JDK的安装过程中会再跳出来单独安装JRE,我们可以点取消不安装这个用户使用的JRE,但是切记如果要安装一定不能安装在JDK的目录下,即这的目录不能是上一步的D:\Java\jdk,因此我在Java文件夹下新建jre

安装JDK、Java环境变量设置以及JVM、JRE和JDK的区别

切记!!JRE和JDK不能安装在一个文件夹中,我就是因为这个错误导致安装JDK1.7后,在命令提示符中输入java正确显示,但是输入javac提示“javac不是内部或外部命令,也不是可运行的程序或批处理文件”;安装JDK1.8后,输入javac提示“错误:找不到或无法加载主类com.sun.tools.javac.Main”。
在环境变量设置正确的情况下,java命令可用说明JRE安装正确,javac不可用则是JDK的原因。由于JDK中包含的JRE和JRE中的文件并不相同,因此我猜想要是把它们装在同一个文件下,JRE会覆盖掉JDK中的JRE导致JDK文件出现错误,所以javac命令报错。
JDK安装完成后,你会看到jdk文件夹中bin中有java.exe(运行)和javac.exe(编译),但是jre文件夹中bin中只有java.exe。

接下来就是设置环境变量了,包括以下三个:
1、JAVA_HOME
2、path
3、classpath
其中path存在,需要新建JAVA_HOME和classpath两个环境变量。

1、JAVA_HOME
变量值:JDK的安装路径(我的是D:\Java\jdk)
一是为了方便引用。比如,JDK安装在C:\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径,那么以后要使用这个路径的时候只需输入%JAVA_HOME%即可,避免每次引用都输入很长的路径串。
(在DOS系统中%%表示引用设定好的环境变量,打开cmd,输入
echo %JAVA_HOME%看一下)
二是归一原则,当JDK路径改变的时候,仅需更改JAVA_HOME的变量值即可,否则就要更改任何用绝对路径引用JDK目录的文档。
三是第三方软件会引用约定好的JAVA_HOME变量,要不然不能正常使用该软件。
安装JDK、Java环境变量设置以及JVM、JRE和JDK的区别
安装JDK、Java环境变量设置以及JVM、JRE和JDK的区别

2、path
变量值: ;%JAVA_HOME%\bin;
path路径已存在直接编辑即可,但是path原有的值不能删除,%JAVA_HOME%就表示D:\Java\jdk。
在命令提示符窗口输入命令时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序并且执行。PATH环境变量中存放的值是一连串的路径。不同的路径之间,用英文的分号(;)分隔开。系统执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件、批处理文件(另外一种可以执行的文件)等。若找不到,再依次在PATH保存的这些路径中寻找相应的可执行的程序文件。系统就以第一次找到的为准;若搜寻完PATH保存的所有路径都未找到,则会提示xxx不是内部或外部命令。我们最常用的javac、java命令就在jdk的bin中。

安装JDK、Java环境变量设置以及JVM、JRE和JDK的区别

3、classpath
变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
一定要加.,表示当前路径
设置的目的是为了程序能找到相应的”.class”文件,当我们在开发java程序时需要引用别人写好的类时,要让java解释器知道到哪里去找这个类。通常,sun为我们提供了一些额外的丰富的类包,一个是dt.jar,一个是tools.jar,这两个jar包都位于JDK的lib目录下,所以通常我们都会把这两个jar包加到我们classpath环境变量中。

设置完成后在命令提示符窗口中输入java、javac出现命令的用法则说明配置成功啦~
呜呜呜写到最后眼花缭乱所以就把其他大神总结的变量作用直接copy过来了,大家一起学习O(∩_∩)O哈哈~