java 17 的下载安装教程
说明:
本文介绍的是 Windows 下安装 Java 的方法。对于 Linux 下 Java 的安装,可见笔者的另一篇博客:
在 Linux 操作系统中安装 Java:blog.csdn.net/wangpaiblog/article/details/120093325
笔者的安装环境:
JDK 17
Windows 10 教育版
安装 Java 就是安装 JDK。Java 有三大分支,这里选择的是 Java SE。关于这些分支的区别,可见笔者的另一篇博客:
Java SE、OpenJDK、Java EE、Java 框架、Java ME 等概念之间的区别:
blog.csdn.net/wangpaiblog/article/details/112342415
此外,对于 JDK,也更替了很多个版本,其中也分为 LTS 版本和非 LTS 版本。LTS 指长期支持版(Long Term Support)。对于这个概念,这里不多作解释,读者可以简单将它们理解为稳定版与快照版。
(Java 的 LTS 版本目前有:Java 8、Java 11、Java 17。网址:oracle.com/java/technologies/java-se-support-roadmap.html
笔者的意见是,最好下载最新的 LTS 版本。但对于一些刚刚学习 Java 的读者来说,下载哪个版本区别不大,因为它们之间的区别不会在简单的 Java 程序中体现。编写本教程的时候,笔者下载的是当时的最新 LTS 版Java SE 17。
进入 Oracle 官网下载 Java SE,也就是 JDK 的安装包。
Java 的官网下载链接:
Java 17 下载处的最终网址:
(在 Java 17 以前,下载还需要注册一个 Oracle 账号。但在 Java 17 之后,Oracle 决定推出商业免费版。也许是担忧 Java 的市场份额每况愈下,垄断看来不够格。对于 Java 17,下载不需要注册账号,但之前的版本仍然需要。)
因为是国外的网站,所以可能网站加载缓慢。部分浏览器可能禁用此网站上的某些控件,所以如下的过程如果发现网站上缺失某些界面选项,可以试试换个浏览器。
【说明】
在前面的下载中,可以看到,Windows 下的 JDK 数据包有三种可选的下载:Windows x64 Compressed Archive、Windows x64 Installer和Windows x64 MSI Installer。其中,前者为 JDK 的免安装版本,后两者均为 JDK 的离线安装包版本,其中一个是 WIndows 的 EXE 安装包,另一个是 MSI 安装包。这两种安装包没有太大的区别,这里使用的是 EXE 安装包。
也可以选择 JDK 的免安装版。很多“免安装”狂热者很喜欢选择任何软件的免安装版本。不过,由于这两者没有本质上的区别,没有任何理由非要使用免安装版本。通常,使用离线安装包版本能减少很多麻烦。
下载好了之后应该有一个名叫jdk-17_windows-x64_bin.exe的安装包。运行安装包,这里 JDK 的默认路径是C:\Program Files\Java\jdk-17\。请记住这个路径,下面会用上。如图:
这一步完成之后就可以开始设定 Path 路径了,进行这一步是为了能在 Windows 的 CMD 中识别出C:\Program Files\Java\jdk-17\下 Java 的相关命令。
这要进入 Windows 的环境变量界面(这里以 Win10 教育版为例),如图(请顺着图片用鼠标点击画红圈部分):
这里需要在Path中填写 Java 的命令工具的路径。不过在这之前,需要先创建环境变量JAVA_HOME。设置JAVA_HOME的值为C:\Program Files\Java\jdk-17。
(如果电脑不打算设置多用户,则这里选择用户变量还是系统变量的 Path 区别不大。这里选择用户变量。)
在设置完JAVA_HOME之后,在Path中添加新的一行%JAVA_HOME%\bin。
【Q & A】
阅读本教程的很多读者可能是初次学习编程,他们看到此处时可能有如下这些疑问。笔者将这些疑问解答于此。如果这些疑问没有覆盖全部的问题,也可以在下方留言提问。
这些问题与 Java 安装没有必然的联系,如果读者暂时不想了解这些内容,可以先收藏本博客,然后跳过这些内容,日后再来阅读。
Q:环境变量 Path 有什么用?为什么要设置?
A:这个问题解释起来很复杂,限于篇幅,这里简单解释一下。我们知道,使用 Java 之前要先安装,但使用 Java 的应用并不在乎 Java 有没有安装,实际上,它们也无法知道 Java 有没有安装。它们只是需要使用 Java 的一些命令(如java、javac等),这些命令对应着 Java 安装目录下的一些可执行程序。如果设置了环境变量,它们就可以借助操作系统来使用 Java 的命令,否则,对它们而言就相当于没有安装 Java。
在 Windows 中,如果设置了环境变量 Path,则这些命令的来源(路径)可以通过输入命令where来找到,如:
Q:环境变量是什么?为什么要设置?
A:环境变量是操作系统提供的一种简易的、对应用公开的键值数据库。它可以用来存放某应用想要传达给其它应用或记录给自己的信息。可以理解为每个应用自己主动设置的 QQ 签名。
特别地,对于环境变量 Path,它特指可执行文件的绝对路径。其中,该可执行文件的文件名将作为可在 CMD 中输入的命令名。如果不使用环境变量 Path,则执行这些命令时需要输入全路径。其它应用往往只知道所需的命令名,而不知道所需应用的路径,所以需要提前设置环境变量 Path。
Q:为什么要同时设置JAVA_HOME与Path?
A:对于简单的 Java 程序来说,实际上只需要将 Java 的命令工具的路径添加至Path中即可(对于简单的 Java 程序来说,实际上只需要设置Path:C:\Program Files\Java\jdk-17\bin\)。不过,很多依赖 Java 的工具技术还要求设置其它环境变量,如JAVA_HOME,而且这个环境变量非常常用,因此这里选择在安装时就予以配置。换句话说,如果其它工具技术还要求设置更多环境变量,那就还需要单独配置。
环境变量并不是配置的越多越好,冗余是万恶之首,请按需配置。
Q:环境变量Path与JAVA_HOME有什么区别?
A:关于这方面的内容,可见笔者的另一篇博客:
Windows 中的环境变量 Path 与 XXXX_HOME 的区别:
https://blog.csdn.net/wangpaiblog/article/details/112644073
Q:为什么非要手动配置环境变量,为什么 Java 不让安装包来完成这些操作呢?
A:让安装包在安装时自动设置环境变量是一件很简单的事情(任何人使用一种安装包制作工具就可以做到这一点),Oracle 没有选择这么做主要是为了给用户提供更多的自由。用户有可能会在电脑上安装很多个版本 JDK,如果让安装包自动完成这项工作,这将影响用户原来设置的环境变量,因此安装包没有提供这项功能。
并不是所有的安装程序都不会帮用户设置环境变量,实际上,很多应用程序的安装包都会选择帮用户进行这种设定。帮用户设置环境变量一方面可以方便用户,另一方面则会污染操作系统中的环境变量。类似的问题还发生在 WIndows 中的注册表,如果每个应用没有自觉进行合理的使用,那么整个注册表将成为一个垃圾堆。
Q:环境变量CLASSPATH是什么?为什么很多教程都写要加这个环境变量?
A:关于网上其它教程的质量,这里不作评价。首先,对于JDK 1.4及以前的版本,才需要配置环境变量CLASSPATH。它的作用是指定运行 Java 程序所需的.class文件,以及运行所需的 JDK 包(dt.jar、tools.jar)。这涉及 Java 类加载器的类加载机制,此处不做过多介绍。
用户所编写的 Java 程序的源文件的位置是不确定的,为什么可以预先设定呢?原因是可以在环境变量的路径值中使用.来表示当前路径。
为什么不把这个设定提前融入到 JDK 中呢?很遗憾,在JDK 1.4及以前,就是没有提供这样的功能。要知道,JDK 1.4是 2002 年发布的,而 2001 年 Windows XP 才发布。对于JDK 1.5及之后的版本,也可以不用配置CLASSPATH。