Java JDK 下载与安装教程

开始正式的 JAVA 语言学习之前,首要的就是完成 Java 程序所需的开发、运行环境搭建——JDK(Java Development Kit:Java 开发工具包)的安装,以及配置。


本篇博文所作目的主要是记录一下 Java 开发环境的搭建过程,即 JDK 的安装以及配置过程

安装以及配置 JDK

这里,首先给出 JDK 各版本下载地址供安装选择:

本文将以 JDK1.8 的安装配置为 Demo,其它 JDK 版本安装过程一样。


JDK Package Download

根据个人的使用需要,从上面选择要访问的 JDK 下载页,选择就可以下载相应的安装包了:

注意:目前从官网下载相应版本 JDK 之前,你需要注册一个 Oracle 账号,并完成登录,才会被授权下载使用。

可以发现,JDK 官网提供了不同平台下(Linux、Mac 以及 Windows)JDK 的安装包。后文我们会给出 Linux & Windows 平台下 JDK 的安装配置方法:

根据需要下载相应平台安装包

1.1 –> For Windows:

对于 Windows 下的安装包,提供了 i586(32 bit)x64(64 bit) 供我们下载使用。

这里我们选择安装包:jdk-8u261-windows-x64.exe 用于后续的安装。

1.2 –> For Linux:

对于 Linux下的安装包,提供了 i586(32 bit)x64(64 bit)RPM 包以及 .tar.gz 包供下载使用。

这里我们选择安装包:jdk-8u261-linux-x64.tar.gz 用于后续的安装。


JDK Setup

上面我们已经下载好了 JDK 的安装包,接下来我们来看如何在不同的平台下安装下载好的 JDK 安装包:

For Windows

1)检查当前系统中是否安装有 JDK

Windows 命令行(Terminal )下执行如下指令:

1
$ java -version

如果原始系统中已安装有 JDK ,则会输出如下 JDK 版本等信息:

1
2
3
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

否则的话,开始安装 JDK(当然,如果系统中已存在某个版本的 JDK 了,我们还可以再同时安装一个其它目标版本的 JDK),接下文。

2)安装 JDK

双击 jdk-8u261-windows-x64.exe 安装包开始进行安装……

安装过程中没有什么难的,Next 即可。需要注意的是,我们可以自定义 JDK 安装路径,不要什么东西都往系统盘安装,这里假设我们安装在:E:\JAVA 目录下。

等待安装完成关闭安装界面即可。

可以发现,JDK 以及被安装到了 E:\JAVA 目录下,包含两个文件:

1
2
jdk1.8.0_261
jre1.8.0_261

自此 Windows 下 JDK 的安装就完成了,但此时仍不能使用,我们还需要为 JDK 配置环境变量,接 【1.3.1 Windows 下 JDK 环境变量配置】。


For Linux

1)检查当前系统中是否安装有 JDK

1
[root@localhost test]# java -version

有些 Linux 系统默认会安装有 openjdk(一种 Linux 开源 JDK),例如会输出如下信息:

1
2
3
openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

我们可以选择先将其卸载掉(当然,不用管也可以):

1
2
3
4
# Centos 下可以使用 yum 进行卸载:
[root@localhost test]# yum remove *openjdk*
# Ubuntu 下
[root@localhost test]# apt-get remove openjdk*

当然系统中还有可能装有其它版本(区别于 openjdk,例如:oracle)的 JDK,例如:

1
2
3
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

否则的话,开始安装 JDK(当然,如果系统中已存在某个版本的 JDK 了,我们还可以再安装一个其它目标版本的 JDK),接下文。

2)安装 JDK

进入到 jdk-8u261-linux-x64.tar.gz` 安装包存放目录(例如:~/Downloads),并且对安装包进行解压:

1
2
3
4
5
6
7
8
9
10
# 查找安装包:
[root@localhost test]$ cd Downloads
[root@localhost Downloads]$ ls |grep jdk*
jdk-8u131-linux-x64.tar.gz

# 解压至 /usr/java 目录下:
[root@localhost Downloads]$ tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/java

# 等待解压完成即可。
# 解压后,我们可以在 /usr/java 目录下可以查看到解压好的 JDK 目录:jdk1.8.0_131

自此 Linux下 JDK 的安装就完成了,但此时仍不能使用,我们还需要为 JDK 配置环境变量,接 【3. 环境变量配置】。


Config Evns

For Windows

Windows 下为 JDK 配置环境变量:

首先打开环境变量配置界面:右键我的电脑 ---> 属性 ---> 高级系统设置 ---> 环境变量。界面如下:

–> 开始设置环境变量:

这里注意,我们既可以设置普通用户变量,也可以设置系统变量。区别在于设置普通用户变量的话,只有该用户下可用,其他用户想要使用的话需要重新配置环境变量。而设置系统变量后,我们可以在所有用户下都可以使用。

–> 故,这里我们选择设置系统变量:

1)点击系统变量下面的新建按钮,变量名设置为:JAVA_HOME(代表 JDK 安装路径),变量值:E:\JAVA\jdk1.8.0_261(具体的 JDK 的安装路径)。如下:

2)继续在系统变量里面新建一个 CLASSPATH 变量,

其变量值为:.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;。如下:

这里注意变量前面还有一个 .;,表示当前路径,不要漏加!!!

3)在系统变量里面找一个变量名是 Path 的变量,找到后进行编辑,在它的变量值最后面追加一段如下的代码:

1
%JAVA_HOME%\bin;

最后点击确定,此时 Windows 下 JDK 的环境变量配置就完成了,还不圆满,需要测试一下。

4)测试

WIndows Terminal 下分别执行如下指令:

–> java -version

1
2
3
4
$ C:\Users\guoji>java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

–> java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
C:\Users\guoji>java
用法: java [-options] class [args...]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
其中选项包括:
-d32 使用 32 位数据模型 (如果可用)
-d64 使用 64 位数据模型 (如果可用)
-server 选择 "server" VM
默认 VM 是 server.

-cp <目录和 zip/jar 文件的类搜索路径>
-classpath <目录和 zip/jar 文件的类搜索路径>
用 ; 分隔的目录, JAR 档案
和 ZIP 档案列表, 用于搜索类文件。
-D<名称>=<值>
设置系统属性
-verbose:[class|gc|jni]
启用详细输出
-version 输出产品版本并退出
-version:<值>
警告: 此功能已过时, 将在
未来发行版中删除。
需要指定的版本才能运行
-showversion 输出产品版本并继续
-jre-restrict-search | -no-jre-restrict-search
警告: 此功能已过时, 将在
未来发行版中删除。
在版本搜索中包括/排除用户专用 JRE
-? -help 输出此帮助消息
-X 输出非标准选项的帮助
-ea[:<packagename>...|:<classname>]
-enableassertions[:<packagename>...|:<classname>]
按指定的粒度启用断言
-da[:<packagename>...|:<classname>]
-disableassertions[:<packagename>...|:<classname>]
禁用具有指定粒度的断言
-esa | -enablesystemassertions
启用系统断言
-dsa | -disablesystemassertions
禁用系统断言
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
-agentpath:<pathname>[=<选项>]
按完整路径名加载本机代理库
-javaagent:<jarpath>[=<选项>]
加载 Java 编程语言代理, 请参阅 java.lang.instrument
-splash:<imagepath>
使用指定的图像显示启动屏幕
有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。

—> javac

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
C:\Users\guoji>javac
用法: javac <options> <source files>
其中, 可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖所安装扩展的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-parameters 生成元数据以用于方法参数的反射
-d <目录> 指定放置生成的类文件的位置
-s <目录> 指定放置生成的源文件的位置
-h <目录> 指定放置生成的本机标头文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <发行版> 提供与指定发行版的源兼容性
-target <发行版> 生成特定 VM 版本的类文件
-profile <配置文件> 请确保使用的 API 在指定的配置文件中可用
-version 版本信息
-help 输出标准选项的提要
-A关键字[=值] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标记> 直接将 <标记> 传递给运行时系统
-Werror 出现警告时终止编译
@<文件名> 从文件读取选项和文件名

For Linux

开始设置环境变量:

这里注意,我们既可以设置普通用户变量(局部变量),也可以设置系统变量(全局变量)。区别在于设置普通用户变量的话,只有该用户下可用,其他用户想要使用的话需要重新配置环境变量。而设置系统变量后,我们可以在所有用户下都可以使用。

–> 故,这里我们选择设置系统变量:

1
2
3
4
5
6
7
8
9
# 打开系统变量配置文件:
[root@localhost test]# vim /etc/profile

# 追加如下内容:
JAVA_HOME=/usr/local/java/jdk1.8.0_131
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASSPATH PATH

–> 生效 /etc/profile 配置文件:

1
[root@localhost test]# source /etc/profile

=============================================

再来看一下普通用户变量如何设置:

1
2
3
4
5
# 在 ~/.bashrc 用户配置文件中添加上述内容即可。
[root@localhost test]$ vim ~/.bashrc

# 追加完配置内容后,需要使配置生效:
[root@localhost test]$ source ~/.bashrc

此时 Linux下 JDK 的环境变量配置就完成了,还不圆满,需要测试一下。

–> 测试

1
2
3
4
5
$ java -version

$ java

$ javac

篇幅原因,输出信息释义见 Windows 中测试部分。


You Need Know More

Path 和 CLASSPATH 详解

1 –> Path

Path,是系统用来搜索可执行文件路径的环境变量。如果所执行的文件不在当前目录下,就会依次搜索 Path 中设置的路径。

而 Java 中的可执行文件路径是存放于 bin 目录下的,所以在 Path 中设置了 JDK 的 bin 路径后,DOS/Shell 中即使不把 jdk 可执行文件的完整路径给出,系统会自动去 Path 中设置的路径查找,然后执行。

这也是很多应用配置系统环境变量(Path)后,就可以直接在 DOS/Shell 中快速调用或启动的原因!


2 –> CLASSPATH

CLASSPATH,是 Java 专用的查找类的路径,用来指定 Java 程序中所用类文件所在的位置。

如 Java 程序中,“import javax.swing.JTable” 就是告诉编译器引入 “javax.swing” 这个包下面的 “JTable”,而 CLASSPATH 就是告诉编译器要去哪里找到这个包。


两套 JRE???

Windows 下 Java 安装完成之后,你会发现有两套 JRE:一套位于 <JDK安装目录>\jre 下,一套位于 C:\Program Files\Java\jre1.8.0_xxx 或和 <JDK安装目录> 同目录下。

并且安装 JDK 可以选择是否只安装 JRE,而不是 JDK,那么只会在安装目录下安装唯一的一套 JRE。

1 –> 两套 JRE 的作用?

两套 JRE 主要体现在工作的职责上,也就是不同的JRE负责不同的工作范围:

JDK 里的工具有些是用 Java 所编写,因此要使用 JDK 所附的工具来开发 Java 程序,也必须要附一套 JRE 才行(如javac.exe、jar.exe…)

例如:

javac.exe 与输入 java -cp c:/jdk/lib/tools.jar com.sun.tools.javac.Main 是一样的,可以认为 javac.exe 只是一个包装器(Wrapper),目的是简写指令。

而,另外一套 JRE 就是专门用来运行开发好的 Java 程序用的。


2 –> 执行谁?

例如 Java.exe 依照顺序来查找 JRE:

自己的目录下有没有 JRE ?

父目录有没有 JRE ?

查询注册表(环境变量):[HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java Runtime Environment] ?


JDK 安装目录详解

JDK安装目录如下(JDK 8):

下面来详细介绍:

1 –> bin

bin(binary) 目录下存放了 JDK 的各种工具的可执行文件:

1
2
3
4
5
6
7
8
# 主要工具可执行文件:
Javac:Java编译器,将 Java 源代码编译为字节码文件;
Java:Java解释器,解释执行 Java 字节码文件;
appletviewer:Java Applet小程序查看器,可以执行 HTML 文件上 Java Applet 程序;
Javadoc:java文档生成器,提取 Java 源码中的注释生成 HTML 说明文档;
Jdb:Java调试器,可以逐行执行程序,设置断点和检查变量;
Javap:Java反编译器,显示编译成的类文件中的可访问功能和数据,同时显示字节代码含义。
jar:java打包器,可将 Java 包结构压缩成以 .jar 为后缀的 JAR 文件

2 –> db

db 目录是从 Java 6 开始新增的一个目录,这是一个纯 Java 实现、开源的数据库管理系统(DBMS),源于 Apache 软件基金会(ASF)名下的项目 Derby。

3 –> include

由于 JDK 是通过 C 和 C++ 实现的,因此在启动时需要引入一些 C 语言的头文件,所以 include目录里面是一些供 C语言使用的标题文件。

支持 Java 本地接口和 Java 虚拟机调试程序接口的本地编程技术。

4 –> jre

jre 目录路径下安装的就是 Java 运行时环境。

5 –> lib

lib(libarary),见名知义,存放类库,存放的是开发工具使用的归档包文件。

6 –> src.zip

该压缩文件里面存放的就是 Java 所有核心类库的源代码。通过该文件可以查看 Java 基础类的源代码。

7 –> javafx-src.zip

存放 JavaFX 脚本,JavaFX 它是一种声明式、静态类型编程语言。(是 JDK 1.8 以上新加的)。


Author

Waldeinsamkeit

Posted on

2017-10-09

Updated on

2022-04-25

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.