0%

JDK安装说明及环境变量的配置

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 进行下载

Oracle官网

关于环境变量(Environment Variable

  • 变量

    就是可以随意给其赋值的一个存储单元。

  • 环境

    如果把操作系统当做是一个最大的软件,其它软件如Office、JVM、LOL等等都是运行在这个软件之内的小软件。那么,相对于这些小软件来说,它们所处的「环境」就是操作系统这个软件。

  • 合起来就是“环境中的变量”

    「环境变量」就是操作系统这个软件中的变量,即:操作系统提供给你的全局变量

  • 环境变量的作用

    环境变量在任何程序中的作用都是“被赋值/被取值”!这个全局变量操作系统可以使用,其内的小软件也可以使用!

Java中的环境变量

环境变量大体上是给操作系统的直接上层程序用的。比如Linux中的shell.sh文件;Windows中的cmd.bat文件。

常见的Java相关环境变量及其作用

  1. PATH

    PATH是操作系统用的,用来指定操作系统需要使用到的可执行程序的位置。

    对于Java来说,通常需要把 JDK 的 bin 目录添加进入PATH中,这样你就可以在任意目录下使用 bin 下面的可执行程序,如javac.exejava.exe等。

    这个变量一定要保证将 JRE/JDK 的 bin 纳入其中(这里我说的其实不严谨,你可以把javaw.exe等这类文件复制一份放到任意一个PATH路径下,不一定是JRE/JDK也行),这样很多Java程序才能启动,比如Eclipse

  2. JAVA_HOME

    JAVA_HOME是一个约定,通常它指的是JDK的目录。如果需要JDK的话,大部分程序会默认去环境变量中取JAVA_HOME这个变量。

    例如,Tomcat的.bat/.sh文件中就会默认去取JAVA_HOME来用。

    所以,这个变量最需要设置。设置它,可保你万无一失,一生平安……

  3. JRE_HOME

    同样,这也是一个约定的变量,通常指JRE目录。其实大部分Java程序不需要JDK,而是只需要其子集JRE,所以很多程序也会去取这个变量来用。

    例如,Tomcat中某些.bat文件中这样说到:

    1
    2
    3
    4
    5
    6
    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,且最好就用这个。

  4. CLASSPATH

    CLASSPATH是约定的一个可以设置我们自己的.class, jar文件所在目录的变量。不过某个Java程序可以自己决定取与不取这个变量。Tomcat 在某些情况下会去取,你自己的 Java 程序你不设置就会忽略它的。

    这和Java可执行程序:java.exe的可选配置-cp/-classpath不是一个东西,仅是用意相似:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    java [-options] class [args...]
    (执行类)
    或 java [-options] -jar jarfile [args...]
    (执行 jar 文件)
    其中选项包括:
    -cp <目录和 zip/jar 文件的类搜索路径>
    -classpath <目录和 zip/jar 文件的类搜索路径>
    用 : 分隔的目录, JAR 档案
    和 ZIP 档案列表, 用于搜索类文件。123456789

    结论:基本上,你不需要它。

  5. 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能获取环境变量:

  • 获取并打印

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // 打印单个环境变量
    final String env = System.getenv("PATH");
    System.out.println(env);

    // 打印所有环境变量
    final Map<String, String> envMap = System.getenv();
    for (Map.Entry<String, String> env : envMap.entrySet()) {
    System.out.println(env.getKey() + "=" + env.getValue());
    }
    123456789

最后我们总结一下:

  1. 需要在操作系统下设置的变量:

    1. PATH中包含JRE/JDK的bin目录。
    2. JAVA_HOME或者JRE_HOME。都设也可以,偷懒就只设 JAVA_HOME就可以。
  2. 很少需要设置的:

    CLASSPATHCATALINA_HOME

window 下 JDK 环境变量的设置

  1. 安装完成后,右击”我的电脑”,点击”属性”,选择”高级系统设置”;

img

  1. 选择”高级”选项卡,点击”环境变量”;

img

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

img

在 “系统变量” 中设置 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;

JAVA_HOME 设置

img

img

PATH设置

img

img

注意:在 Windows10 中,Path 变量里是分条显示的,我们需要将 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 分开添加,否则无法识别:

1
2
%JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin;

img

更多内容可参考:Windows 10 配置Java 环境变量

CLASSPATH 设置

img

这是 Java 的环境配置,配置完成后,你可以启动 Eclipse 来编写代码,它会自动完成java环境的配置。

测试JDK是否安装成功

1、”开始”->”运行”,键入”cmd”;

2、键入命令: java -versionjavajavac 几个命令,出现以下信息,说明环境变量配置成功;

img

MACOS 下设置 JDK 环境变量

  1. 打开终端,输入:

    1
    open -e .bash_profile
  2. 设置一个JAVA_HOME的环境变量,它指向JDK的安装目录。在打开的 .bash_profile 中添加:

    1
    export JAVA_HOME=`/Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home`

    注意:在 Mac 上,JDK 的路径和 window 上不同

  3. 设置 PATH 环境变量,把JAVA_HOMEbin目录附加到系统环境变量PATH上。在打开的 .bash_profile 中添加:

    1
    export PATH=$JAVA_HOME/bin:$PATH

    JAVA_HOMEbin目录添加到PATH中是为了在任意文件夹下都可以运行java

  4. 最后,保存 .bash_profile 文件,在终端输入:

    1
    source .bash_profile

    打开终端,输入命令java -version,如果一切正常,你会看到如下输出:

    iShot2021-02-23 09.31.21

最后

细心的童鞋还可以在JAVA_HOMEbin目录下找到很多可执行文件:

iShot2021-02-23 09.33.34

  • java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
  • javac:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);
  • jar:用于把一组.class文件打包成一个.jar文件,便于发布;
  • javadoc:用于从Java源码中自动提取注释并生成文档;
  • jdb:Java调试器,用于开发阶段的运行调试。