JDK 5-11官方下载地址大全:安装、JAVA_HOME配置与多版本切换指南

📅 发布时间:2026/9/20 9:59:14
JDK 5-11官方下载地址大全:安装、JAVA_HOME配置与多版本切换指南
干 Java 的尤其是做后端的老哥一定经历过这种尴尬同事发你一个旧项目要用 JDK 7老教材上的代码基于 JDK 8你自己打算玩模块化或者新语法又得装 JDK 11。等到真想把这些版本重新下载一遍打开 Oracle 官网发现页面改版改得亲妈都不认识之前那个能下历史版本的技术网络站点绕来绕去最后要么跳转到当前版本要么提示要登录账号。说白了不是你不会下是 Oracle 把下载入口藏得太深。这篇博文就是一份可以直接当收藏夹用的 JDK / JAVA / JAVA SE 5、6、7、8、9、10、11 官方下载地址大全同时把下载后的安装、JAVA_HOME 配置、环境变量失效、多版本切换这些高频问题一并梳理清楚。适合刚开始学 Java 的小白也适合动不动就切 JDK 版本的老开发。内容和思路都来自我这些年装环境、配服务器、帮同事救电脑的真实经历不是网上随便抄的教程。1. 先弄清楚JDK、JRE、JAVA SE 到底有什么区别1.1 三个概念一句话解释很多新人第一次进官网就被缩写搞懵了JDK、JRE、JAVA SE、J2SE、OpenJDK长得都像一家人到底哪个是哪个。我习惯用一个生活化类比来讲JRE 是电影院负责“看电影”也就是把 Java 写好的程序跑起来JDK 是电影制片厂除了能看电影还能“拍电影”也就是写代码、编译代码、打包程序而 JAVA SE 是“电影行业标准”规定了这个生态里最基础的工具和接口。更准确一点说JDK 的全称是 Java Development Kit是给开发人员用的完整工具包里面包含 JRE、编译器 javac、打包工具 jar、文档生成工具 javadoc以及一系列调试工具。JRE 的全程是 Java Runtime Environment只负责运行 java 程序没有编译器普通用户如果只是运行别人写好的 jar 包装 JRE 就够。JAVA SE 则是 Java Standard Edition标准版平台和 Java EE企业版、Java ME微型版并列是我们日常学习、开发服务端程序最常接触的那一套 API 规范。注意有个历史遗留叫法早期版本的 Java 叫 Java 2所以你会看到 J2SE 这个词。后来 Sun 公司把名字规范化从 1.5 版本开始直接叫 Java SE 5外面包装上不再出现 J2SE。所以你在下载页面看到 Java SE 5 和 JDK 1.5其实指的是同一个东西。1.2 为什么版本号从 5 跳到 11中间却少了很多如果你只用过现在的 Java可能好奇为什么版本号不是从 1 慢慢排到 11。实际上JDK 1.0、1.1、1.2、1.3、1.4 是更早的代号其中在 1.2 到 1.4 时代官方喜欢在外面叫 Java 2。到了 2004 年Sun 发布了 JDK 1.5营销上决定去掉 1.x 的前缀直接叫 Java 5。从这时起版本号对外就说 Java 5、Java 6、Java 7但内部的 java -version 输出还是能看到 1.5.0、1.6.0 之类的格式。后面的节奏大家就比较熟悉了Java 7 在 2011 年发布Java 8 在 2014 年发布然后 Oracle 在 2017 年突然把节奏拉满Java 9、Java 10 一年一个Java 11 在 2018 年 9 月落地。从 Java 9 开始Oracle 调整为每半年发一个大版本同时把少数版本设为长期支持版也就是 LTS。目前最常见的 LTS 是 Java 8、Java 11 和 Java 17。这次要整理的历史版本 9 和 10基本都是“过渡品”它们引入了一些很重要的功能但随后就被更新版本吸收用的人相对少。搞清楚这个背景你在下载的时候就不会疑惑“为什么官网默认给的是 17 而不是 11”了也更容易理解我下面要讲的下载策略。2. JDK 5-11 官方下载地址清单照着抄就行2.1 最稳妥的官方入口Java Archive 页面Oracle 官网改版过很多次以前那种“点进 Java SE 就能看到所有版本”的时代已经过去了。现在最稳妥的做法是直接记住两个入口当前版本下载页和历史版本存档页。当前版本下载页是 https://www.oracle.com/java/technologies/downloads/ 你打开之后能看到最新 JDK包括 Java 17、Java 21 这些。但我们要找 5 到 11 的老版本必须进历史存档页。历史存档页的固定地址是 https://www.oracle.com/java/technologies/downloads/archive/ 。打开之后页面会按版本列出 Java SE 21、17、11、8、7 等存档。你可能会奇怪为什么没有直接显示 JDK 5、6、9、10没关系页面下方有更细的分类还有按“Java SE 5”“Java SE 6”分类的入口。如果你要找 Java 8 的存档可以直接访问 https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html Java 7 类似把链接里的 8 改成 7 就是 Java 7 存档页。这个方法在社区里传了很久至今仍然适用。有一个避不开的环节Oracle 下载历史版本必须登录账号。这个账号可以免费注册不花钱但需要你提前准备好邮箱。点下载按钮后页面会跳转到登录界面登录成功后才会出现真正的文件下载链接。很多人卡在这一步以为是网络问题实际就是没登录。注意如果你是在公司内网或者频繁更换电脑建议把 Oracle 账号信息记在密码管理工具里。否则每次换环境下载老 JDK都要重新走一遍注册流程非常折腾。2.2 逐版本下载注意事项既然要整理大全我就把 JDK 5 到 11 的每个版本单独说一遍尤其是下载时容易踩的坑。JDK 5 是 2004 年的老古董引入了泛型、枚举、自动装箱、增强 for 循环这些被用烂了的语法。现在官网还能找到它的安装包但只支持 Windows 32 位、Linux 和 Solaris没有 macOS 的包。下载时要注意杀毒软件可能把非常老版本的 java.exe 列为风险文件因为老版安全补丁缺失太多误报概率很高。我的建议是如果只是考古或者学习编译原理可以下载如果是生产环境千万别用。JDK 6 在 2006 年发布是很多老企业系统的首选比如一些银行、政府项目里还能看到基于 Java 6 的程序。官方下载存档中提供了 Windows x86、Linux x64 等常见安装包但注意它同样没有现代 macOS 版本。另外JDK 6 和 JDK 5 一样配套的 JRE 需要单独下载如果你只需要运行旧程序下载对应版本的 JRE 就够了。JDK 7 发布于 2011 年新增了 switch 字符串支持、try-with-resources、钻石操作符等功能。它的最后一个公开更新是 2019 年官方早已停止维护。下载时你会发现 8 以前的版本页面风格都比较老链接还是以 .exe 和 .tar.gz 形式提供。JDK 7 的安装包在 Windows 上存在一个常见坑安装路径如果选在 Program Files 下的中文目录很容易出现编译异常尽量保持默认路径。JDK 8 是神版本也是目前绝大多数服务端生产环境的主力。2014 年发布后因为它太稳定、生态太庞大很多公司到 2023 年还在用。下载时要注意授权变化从 2019 年 4 月起Oracle JDK 8 的商用授权从免费变成了收费个人开发和学习不受影响但企业商用需要留意许可协议。如果你不想被授权问题困扰可以直接使用 OpenJDK 8API 和 Oracle JDK 8 基本一致后面我会讲镜像方法。JDK 9 最大的亮点是模块化系统也就是 Jigsaw 项目。模块化思想非常好但对很多老框架不友好所以当时采用率不高。它的下载页在 Oracle 存档里归在 Java SE 9 分类下安装包分为 Windows x64、Linux x64 等。JDK 9 不再是 LTS官方只提供短时间更新不建议新项目使用。JDK 10 引入了局部变量类型推断也就是 var 关键字。这个版本生命周期极短2018 年 3 月发布当年 9 月就被 JDK 11 取代官网下载页也把它和 9 混在同一个存档区域。如果你只是因为好奇想试试 var装 JDK 10 没问题但正式写代码还是等 Java 11 以上比较稳妥。JDK 11 是继 8 之后第二个被广泛认可的 LTS官方长期支持。从 11 开始Oracle JDK 改用新的许可模式如果你想免费商用可以选择 OpenJDK 11 或者 Oracle OpenJDK 的构建。Oracle 官网存档页提供 JDK 11 的所有版本下载时需要登录。JDK 11 还带了几个重要变化Oracle JDK 不再提供独立 JRE 安装包如果你只需要运行环境得用 jlink 去生成精简运行时。为了让你一眼看清这些版本的关系我做了一个简单表格版本对外名称内部版本号发布时间维护状态典型场景JDK 5Java 51.5.02004已停止老教材、历史系统JDK 6Java 61.6.02006已停止老企业系统JDK 7Java 71.7.02011已停止旧框架项目JDK 8Java 81.8.02014公共更新停止生产环境、面试JDK 9Java 992017已停止模块化学习JDK 10Java 10102018已停止学习 var 语法JDK 11Java 11112018LTS新项目、云原生2.3 国内镜像与 OpenJDK另一个“官方”选择Oracle 官网下载历史版本要登录而且服务器在国外很多人打开特别慢甚至经常下载到一半断掉。这时候我可以负责任地告诉你除了 Oracle 官方源还有一类渠道可以当成“官方”用那就是 OpenJDK 发行版和国内高校镜像站。OpenJDK 是 JDK 的开源参考实现Oracle JDK 在 11 版之前本质上就是在 OpenJDK 基础上加了一些商用功能。所以对于绝大多数开发工作直接使用 OpenJDK 构建版完全没问题。常见的免费发行版包括 Eclipse Temurin以前叫 AdoptOpenJDK、Amazon Corretto、Microsoft Build of OpenJDK 等。它们和 Oracle JDK 都通过了 TCK 兼容性测试运行 Java 程序几乎没有差异。如果你在校园网或者公司内网推荐使用国内镜像站下载。清华大学的 TUNA 镜像站提供了 Adoptium 的完整镜像地址是 https://mirrors.tuna.tsinghua.edu.cn/Adoptium/ 可以在里面找到 JDK 8、11、17、21 的 Windows、macOS、Linux 安装包。阿里巴巴、华为云也维护了 OpenJDK 镜像搜索“阿里云镜像 java”“华为云 JDK 下载”就能找到入口。这些镜像的好处是带宽非常大下载速度快到离谱而且不需要 Oracle 账号。但要注意如果你想下的偏偏是 Oracle JDK 专属安装包尤其是有时候需要和线上生产环境完全一致那就绕不开官方存档。镜像只是 OpenJDK不是 Oracle JDK。3. 下载只是开始安装和环境变量配置实操3.1 Windows 安装与 JAVA_HOME 配置很多人下载完 JDK 就以为完事了结果命令窗口一输入 java 就提示“不是内部或外部命令”。这其实不是安装问题是环境变量没配好。Windows 下的安装步骤看起来简单但有几个细节必须处理好。首先安装 JDK 时安装路径尽量不要有中文和空格。比如 C:\Program Files\Java\jdk1.8.0_202 是常见的默认路径Program Files 中间有空格虽然大多数情况没问题但某些老工具解析路径时会出错。我建议自己建一个干净目录比如 C:\Java\jdk-8 或者 D:\Java\jdk-11 装完之后路径越短越好管理。接着配置环境变量。右键“此电脑”选“属性”进“高级系统设置”点“环境变量”。在系统变量里新建一个变量变量名叫 JAVA_HOME变量值填 JDK 的安装路径比如 C:\Java\jdk-11。然后找到 Path 变量双击编辑在列表末尾新增一行 %JAVA_HOME%\bin。这一步最关键系统就是靠 Path 找到 java.exe 的。配置完打开一个新的命令行窗口输入以下命令java -version javac -version如果能看到 Java 版本信息说明配置成功。这里强调“新开一个窗口”因为老的控制台窗口不会自动加载新的环境变量必须关掉重开。很多人配置完直接在当前窗口测试发现没生效就以为是配置错了其实只是没重开。如果你习惯用命令行配置也可以用 setx 命令setx JAVA_HOME C:\Java\jdk-11 setx Path %Path%;%JAVA_HOME%\bin但 setx 有个坑它会把 Path 的旧值重新格式化如果 Path 已经很长有溢出风险所以我不推荐新手用还是图形界面操作更稳。3.2 macOS 与 Linux 下的安装差异macOS 下安装 JDK从官网下载 dmg 双击安装即可。安装后 JDK 默认放在 /Library/Java/JavaVirtualMachines/ 目录下。你可以用如下命令查看本机所有 JDK 版本/usr/libexec/java_home -V这个命令会列出所有已安装的 Java 虚拟机目录。如果你想指定默认的 Java 版本可以在 ~/.zshrc 或 ~/.bash_profile 里添加export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH添加完毕后执行 source ~/.zshrc 让它生效。macOS 和 Windows 最大的区别是macOS 的 JDK 目录结构里面多了一层 Contents/HomeJAVA_HOME 要指向 Home 那一层而不是 jdk-11.jdk 这一层。这是很多人配错的主要原因。Linux 服务器上安装 JDK 通常有两种方式yum/apt 在线安装或者下载 tar.gz 手动解压。生产环境我更喜欢手动解压因为可以精确控制版本。先把下载好的 tar.gz 上传到服务器然后解压到 /opt 目录tar -zxvf jdk-11_linux-x64_bin.tar.gz -C /opt/解压后目录一般是 /opt/jdk-11.0.26接着编辑 /etc/profile 文件在文件末尾添加export JAVA_HOME/opt/jdk-11.0.26 export PATH$JAVA_HOME/bin:$PATH执行 source /etc/profile 后java -version 就能用了。这里建议在 /etc/profile 里配置而不是只在当前会话里 export因为后者重启服务器之后就会丢等于没配。3.3 环境变量配置失败的几种“死法”我见过太多人在环境变量上折腾一夜这里把最常见的几种“死法”列出来你对照自查。第一种是 Path 被覆盖。有些安装软件或者自己手滑在编辑 Path 的时候误操作导致原本系统需要的路径全没了结果就是很多命令同时失效。所以我一直强调改 Path 之前最好先把原内容复制到记事本备份。真出了问题把备份原样恢复即可。第二种是引号和分号问题。Windows 的老式 Path 编辑框里多个路径用分号分隔而且路径带空格时可能需要加引号。新版的图形编辑器已经改成一行一个路径不需要分号了但如果你还在用旧版写法一定要小心分号别漏。JAVA_HOME 的值本身不需要带分号Path 里的 %JAVA_HOME%\bin 后面按 Windows 语义处理。第三种是变量名写错。我见过有人把 JAVA_HOME 写成 Java_Home 或者 JAVA_HOME 空格导致引用失败。变量名是严格区分大小写的环境变量里必须写成 JAVA_HOME。第四种是权限问题。Windows 装 JDK 到 C:\Program Files 时如果当前用户对那个目录没有写权限某些工具会调用失败。最简单的办法是像我前面说的那样装到 C:\Java 这种普通目录。4. 多版本共存、版本选择与常见问题排查4.1 一台机器装多个 JDK 的优雅方法开发久了你名下不可能只有一个 JDK。老项目要 Java 8新项目要 Java 11偶尔还要看看 17 的新特性。一台机器同时装多个 JDK 完全没问题关键是怎么切换顺手。Windows 上最稳的切换方式就是环境变量。把所有 JDK 都装上然后不把某个具体版本的 bin 直接加进 Path而是只让 JAVA_HOME 指向当前想用的那个版本。想切换时改 JAVA_HOME 的系统变量值再重开命令行。这个方法虽然原始但最通用一切基于 JAVA_HOME 的工具都会同步切换。如果你想更高效可以写一个简单的 bat 脚本里面用 setx 切换。比如我电脑上放了 jdk8、jdk11、jdk17 三个目录然后准备两个脚本setx JAVA_HOME C:\Java\jdk8 setx Path C:\Java\jdk8\bin;%Path%另一个脚本把 jdk8 换成 jdk11。这么做的坏处是 setx 会修改系统级 Path可能残留之前版本路径所以我更推荐只改 JAVA_HOMEPath 里写死 %JAVA_HOME%\bin。这样操作简单还不容易污染 Path。Linux 下切换版本可以用 alternatives 命令也可以直接写一个 shell 函数。macOS 下还可以借助 SDKMAN 这个工具它不仅能管理 JDK还能管理 Maven、Gradle 等适合前端后端都碰的人。4.2 下载后校验SHA256 和安装包损坏问题官网下载 Huge 的安装包时偶尔会遇到文件损坏、下载不完整的问题。如果不校验直接安装轻则安装报错重则装着装着系统里多了一个残缺 JDK后面排查起来非常痛苦。Oracle 在下载页旁边通常会给一个校验和文件后缀是 .sha256。下载完安装包后把安装包和 .sha256 文件放在同一目录然后按系统执行校验。Windows 可以用 certutilcertutil -hashfile jdk-11_linux-x64_bin.tar.gz SHA256Linux 和 macOS 可以用 sha256sumsha256sum jdk-11_linux-x64_bin.tar.gz把输出的字符串和官方页面列出来的哈希值对比一致就说明文件没问题。我个人的习惯是所有生产环境的 JDK 包下载完之后必须做一次这个校验否则部署到服务器上突然启动不了很难判断是包的问题还是自己配置的问题。4.3 面试和学习场景下怎么选版本最后聊聊版本选择和面试的关系因为身边经常有刚转行的人问我我该装哪个 JDK 版本面试会不会考我只会老版本我的答案很直接学习阶段先用 JDK 8 打底再花半天看看 JDK 11 和 17 的新特性。原因很简单目前教科书、培训机构、开源项目默认环境大多还是 Java 8网上搜报错信息也最全。如果你一上来就装最新版跑别人项目时一堆兼容性问题很容易打击信心。但面试是另一回事。现在稍微正经一点的 Java 面试都会问 Java 8 的 Stream、Lambda、Optional属于“必考题”中高级岗会继续问 JDK 9 模块化、JDK 11 的 HttpClient、JDK 17 的密封类、switch 表达式以及垃圾回收器变化。所以 8 是地基11 和 17 是加分项。建议你在本机把 JDK 8 和 JDK 17 都装上一边用 8 保持手感一边用 17 追新。如果你已经被环境变量折磨过想彻底换一个新项目直接上 JDK 17 也可以。很多主流框架已经全面支持 17Spring Boot 3 甚至把 Java 17 设为最低要求。不过这时就别纠结 JDK 9、10 的细节了它们只适合在文档里了解历史不适合实际部署。我以前踩过最深的坑是给客户部署老项目时只带了最新版 JDK 17结果对方系统用的 JDK 7API 差别太大足足排查了两天才发现是版本不兼容。现在我的习惯是凡是要进生产环境的项目一定提前问清楚对方用的 JDK 版本然后严格对齐。这也算是我下载过这么多版本后最想提醒你的一件事。如果你只是个人学习照着这篇博文把 JDK 8 和 JDK 11 都下好配好环境变量后面写代码、跑项目基本就一路顺畅了。