JDK简介
JDK —— Java Development ToolKit (Java 开发工具包)。JDK 是整个 Java 的核心,包括了 Java 运行环境(Java Runtime Envirnment),一堆 Java 工具( javac/java/jdb 等)和 Java 基础的类库(即 Java API 包括 rt.jar)。
最主流的 JDK 是Sun公司发布的 JDK,除了 Sun 之外,还有很多公司和组织都开发了属于自己的 JDK,例如国外 IBM 公司开发了属于自己的 JDK,国内淘宝也开发了属于自己的 JDK,各个组织开发自己的 JDK 都是为了在某些方面得到一些提高,以适应自己的需求,比如 IBM 的 JDK 据说运行效率就比 SUN 的 JDK 高的多。但不管怎么说,我们还是需要先把基础的 Sun JDK 掌握好。
JDK 是 Java 开发工具包,在其安装目录下面有六个文件夹、一些描述文件、一个 src 压缩文件。bin、include、lib、 jre 这四个文件夹起作用,demo、sample 是一些例子。可以看出来 JDK 包含 JRE,而 JRE 包含 JVM。
- bin:最主要的是编译器(javac.exe)
- include:java 和 JVM 交互用的头文件
- lib:类库
- jre:java运行环境(注意:这里的 bin、lib 文件夹和 jre 里的 bin、lib 是不同的)
总的来说 JDK 是用于 Java 程序的开发,而 jre 则是只能运行 class 而没有编译的功能。
JDK 是提供给 Java 开发人员使用的,其中包含了 Java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独安装 JRE了。 其中的开发工具包括编译工具 ( javac.exe ) 打包工具 ( jar.exe ) 等
在 JDK 的安装目录下有一个 jre 目录,里面有两个文件夹 bin 和 lib,在这里可以认为 bin 里的就是 jvm,lib 中则是 jvm 工作所需要的类库,而 jvm 和 lib 合起来就称为 jre。
JDK的安装
访问 Oracle官网,找到最新版本的 JDK 进行下载
关于环境变量(Environment Variable)
- 变量
就是可以随意给其赋值的一个存储单元。 - 环境
如果把操作系统当做是一个最大的软件,其它软件如Office、JVM、LOL等等都是运行在这个软件之内的小软件。那么,相对于这些小软件来说,它们所处的「环境」就是操作系统这个软件。 - 合起来就是“环境中的变量”
「环境变量」就是操作系统这个软件中的变量,即:操作系统提供给你的全局变量! - 环境变量的作用
环境变量在任何程序中的作用都是“被赋值/被取值”!这个全局变量操作系统可以使用,其内的小软件也可以使用!
Java中的环境变量
环境变量大体上是给操作系统的直接上层程序用的。比如Linux中的
shell
、.sh
文件;Windows中的cmd
、.bat
文件。
常见的Java相关环境变量及其作用
PATH
PATH
是操作系统用的,用来指定操作系统需要使用到的可执行程序的位置。
对于Java来说,通常需要把 JDK 的 bin 目录添加进入PATH
中,这样你就可以在任意目录下使用 bin 下面的可执行程序,如javac.exe
、java.exe
等。
这个变量一定要保证将 JRE/JDK 的 bin 纳入其中(这里我说的其实不严谨,你可以把javaw.exe
等这类文件复制一份放到任意一个PATH
路径下,不一定是JRE/JDK也行),这样很多Java程序才能启动,比如Eclipse
。JAVA_HOME
JAVA_HOME
是一个约定,通常它指的是JDK的目录。如果需要JDK的话,大部分程序会默认去环境变量中取JAVA_HOME
这个变量。> 例如,Tomcat的.bat/.sh
文件中就会默认去取JAVA_HOME
来用。
所以,这个变量最需要设置。设置它,可保你万无一失,一生平安……
JRE_HOME
同样,这也是一个约定的变量,通常指JRE目录。其实大部分Java程序不需要JDK,而是只需要其子集JRE,所以很多程序也会去取这个变量来用。
例如,Tomcat中某些.bat
文件中这样说到:bat rem JAVA_HOME Must point at your Java Development Kit installation. rem Using JRE_HOME instead works as well. rem rem JRE_HOME Must point at your Java Runtime installation. rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME rem are both set, JRE_HOME is used.123456
大意是说:Tomcat去取这俩变量,只要任意一个不为空就行,都不为空就用JRE_HOME了。因为Tomcat不需要JDK中的工具,它只是运行Java程序而已。
这个变量如果你明确知道应用程序只需要设置这个就行(比如上面Tomcat的注释),那么它可以代替JAVA_HOME,且最好就用这个。CLASSPATH
CLASSPATH
是约定的一个可以设置我们自己的.class, jar
文件所在目录的变量。不过某个Java程序可以自己决定取与不取这个变量。Tomcat 在某些情况下会去取,你自己的 Java 程序你不设置就会忽略它的。
这和Java可执行程序:java.exe
的可选配置-cp/-classpath
不是一个东西,仅是用意相似:```log java [-options] class [args…]
或 java [-options] -jar jarfile [args…](执行类)
其中选项包括: -cp <目录和 zip/jar 文件的类搜索路径> -classpath <目录和 zip/jar 文件的类搜索路径>(执行 jar 文件)
```用 : 分隔的目录, JAR 档案 和 ZIP 档案列表, 用于搜索类文件。123456789
结论:基本上,你不需要它。CATALINA_HOME
这是Tomcat用的。叫CATALINA这个名字我估计是因为Tomcat默认服务(也就<Service></Service>
标签)的名字就是CATALINA。当然,是不是其实不重要,毕竟变量的名字可以随意起(但最好见名知意),重要的是它存什么值。它的值代表当前tomat根目录,比如:E:\apache-tomcat-7.0.55
。
这个变量,仅当你移动了.bat/.sh
等用来启动Tomcat的文件(就是不在原来的tomcat\bin
下面了)时才需要指定。比如,在Linux中你将catalina.sh
复制到/etc/rc.d/init.d/
下做自启动服务时就需要设置一下。
Java代码中也有API能获取环境变量:
- 获取并打印```java // 打印单个环境变量 final String env = System.getenv(“PATH”); System.out.println(env);
// 打印所有环境变量
final Map
最后我们总结一下:
1. **需要**在操作系统下设置的变量:
1. `PATH`中包含JRE/JDK的`bin`目录。
2. `JAVA_HOME`或者`JRE_HOME`。都设也可以,偷懒就只设 `JAVA_HOME`就可以。
2. **很少**需要设置的:<br />`CLASSPATH`、`CATALINA_HOME`。
<a name="39532f43"></a>
## window 下 JDK 环境变量的设置
1. 安装完成后,右击"我的电脑",点击"属性",选择"高级系统设置";

2. 选择"高级"选项卡,点击"环境变量";

3. 然后就会出现如下图所示的画面:

在 "系统变量" 中设置 3 项属性,JAVA_HOME、PATH、CLASSPATH (大小写无所谓),若已存在则点击"编辑",不存在则点击"新建"。
> **注意:**如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序。
变量设置参数如下:
- 变量名:**JAVA_HOME**
- 变量值:**C:\Program Files (x86)\Java\jdk1.8.0_91** // 要根据自己的实际路径配置
- 变量名:**CLASSPATH**
- 变量值:**.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;** //记得前面有个"."
- 变量名:**Path**
- 变量值:**%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;**
<a name="2f72cd64"></a>
#### JAVA_HOME 设置


<a name="ab665574"></a>
#### PATH设置


> **注意:**在 Windows10 中,Path 变量里是分条显示的,我们需要将 **%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;** 分开添加,否则无法识别:
>
%JAVA_HOME%\bin; %JAVA_HOME%\jre\bin;
> 
> 更多内容可参考:[Windows 10 配置Java 环境变量](https://www.runoob.com/w3cnote/windows10-java-setup.html)
<a name="d8827294"></a>
#### CLASSPATH 设置

这是 Java 的环境配置,配置完成后,你可以启动 Eclipse 来编写代码,它会自动完成java环境的配置。
<a name="ad3fde80"></a>
#### 测试JDK是否安装成功
1、"开始"->"运行",键入"cmd";
2、键入命令: **java -version**、**java**、**javac** 几个命令,出现以下信息,说明环境变量配置成功;

<a name="ca3d014f"></a>
## MACOS 下设置 JDK 环境变量
1. 打开终端,输入:```bash
open -e .bash_profile
- 设置一个
JAVA_HOME
的环境变量,它指向JDK的安装目录。在打开的 .bash_profile 中添加:bash export JAVA_HOME=`/Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home`
注意:在 Mac 上,JDK 的路径和 window 上不同
- 设置
PATH
环境变量,把JAVA_HOME
的bin
目录附加到系统环境变量PATH
上。在打开的 .bash_profile 中添加:bash export PATH=$JAVA_HOME/bin:$PATH
把JAVA_HOME
的bin
目录添加到PATH
中是为了在任意文件夹下都可以运行java
。 - 最后,保存 .bash_profile 文件,在终端输入:
bash source .bash_profile
打开终端,输入命令java -version
,如果一切正常,你会看到如下输出:
最后
细心的童鞋还可以在JAVA_HOME
的bin
目录下找到很多可执行文件:
- java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
- javac:这是Java的编译器,它用于把Java源码文件(以
.java
后缀结尾)编译为Java字节码文件(以.class
后缀结尾); - jar:用于把一组
.class
文件打包成一个.jar
文件,便于发布; - javadoc:用于从Java源码中自动提取注释并生成文档;
- jdb:Java调试器,用于开发阶段的运行调试。