1. 为什么今天还在折腾JDK 1.8?
如果你刚接触Java开发,或者正准备搭建一个老项目的本地环境,大概率会听到一个名字:JDK 1.8。你可能会疑惑,Java版本都更新到21了,为什么大家还在用这个2014年发布的“老古董”?这恰恰是JDK 1.8的魅力所在,它就像一个技术界的“钉子户”,凭借其里程碑式的特性更新和极致的稳定性,至今仍是企业生产环境中的绝对主流。
简单来说,JDK 1.8引入了Lambda表达式和Stream API,这彻底改变了Java的编程范式,让代码变得更简洁、更现代。同时,它的长期支持(LTS)特性意味着官方会提供长达数年的安全更新和维护,这对于追求稳定压倒一切的企业级应用来说至关重要。因此,无论是学习经典的Java SE,还是运行Spring Boot 2.x等主流框架,JDK 1.8都是一个绕不开的起点。今天,我就以一个过来人的身份,带你从零开始,搞定JDK 1.8的下载、安装和环境配置,并分享一些官方文档里不会写的“坑”和技巧,确保你一次成功。
2. 下载前的关键抉择:Oracle JDK vs OpenJDK
在点击下载按钮之前,你需要做一个重要的选择:下载Oracle JDK还是OpenJDK?这不仅仅是选哪个网站的问题,它关系到你未来的使用许可、更新策略甚至部署成本。很多新手在这里容易迷糊,我们得掰扯清楚。
Oracle JDK,顾名思义,来自Java的“亲生父亲”甲骨文公司。在JDK 1.8时代,它是最权威、最稳定的发行版。但是,注意这个“但是”——自2019年4月16日后,Oracle修改了其JDK的商用许可协议。简单理解就是:如果你将Oracle JDK用于生产环境(而不仅仅是个人学习、开发),那么就需要付费购买商业许可证。否则,你只能使用旧版本,且无法获得官方的安全更新。这对于企业来说是一个潜在的法律和风险。
OpenJDK,则是Java平台标准版(Java SE)的开源参考实现。你可以把它理解为Java的“开源蓝图”。像亚马逊(Corretto)、微软、红帽(Red Hat)、阿里巴巴等大厂,都会基于这份蓝图,自己进行构建、测试并添加一些额外的修复或优化,然后发布自己的OpenJDK发行版(如Amazon Corretto、Microsoft Build of OpenJDK)。这些发行版通常完全免费,并且提供长期支持(LTS),是当前生产环境更主流、更安全的选择。
那么,对于学习和开发JDK 1.8,我们该怎么选?我的建议是:
- 纯粹学习、做课程实验、搭建本地开发环境:你可以选择下载历史版本的Oracle JDK 1.8。因为学习不涉及商业部署,且我们更需要一个“原汁原味”、与大多数老教程完全一致的环境来避免兼容性问题。
- 为公司的老项目搭建环境,或计划用于任何可能上线的项目:强烈建议使用OpenJDK的LTS发行版,例如Amazon Corretto 8。它在功能上与Oracle JDK 1.8完全兼容,并且免费提供安全更新,能完美规避许可风险。
为了最广泛地覆盖学习场景,本教程将以下载Oracle JDK 1.8u202(一个在许可变更前发布的最终免费更新版本)为例进行演示。但我会同步给出获取Amazon Corretto 8的途径,请你根据自身情况做出明智选择。
注意:网络上流传的很多“绿色版”、“破解版”JDK压缩包存在被植入恶意代码的风险,务必从官方或可信渠道下载。
3. 手把手下载Oracle JDK 1.8u202
由于Oracle官网的下载动线对新手不太友好,且版本更新后旧版本入口隐藏较深,我详细拆解每一步。
3.1 定位官方历史版本归档页
不要直接在Oracle官网搜索“JDK 1.8下载”,那样大概率会引导你到最新的付费版本页面。正确入口是Oracle的**Java存档(Java Archive)**页面。
- 打开浏览器,访问Oracle官网的Java存档页面。你可以直接搜索“Oracle Java Archive”找到它,或者记住这个地址模式(请注意,具体URL可能随时间微调,但搜索关键词最可靠)。
- 在存档页面中,找到“Java SE 8”相关的部分。你会看到一系列以
8u开头的版本号,比如8u341,8u202等。这里有个关键点:8u202和8u201是Oracle JDK 8最后两个基于BCL(Binary Code License)协议发布的版本,对于个人开发使用相对友好。我们选择8u202。
3.2 接受许可协议与选择系统版本
点击8u202链接后,你会看到一个详细的文件列表页面。首先,必须勾选“Accept License Agreement”单选框,否则下载链接是禁用的。
接下来是关键的系统平台选择:
- Windows系统:大多数个人电脑是64位的。请下载
jdk-8u202-windows-x64.exe这个安装程序。如果你的电脑是非常老的32位系统(现在已极少见),则选择windows-i586.exe。 - macOS系统:注意,从macOS Catalina (10.15) 开始,苹果逐渐停止了对32位应用的支持。对于JDK 8,你需要下载
jdk-8u202-macosx-x64.dmg。对于基于Apple Silicon (M1/M2/M3)芯片的Mac,Oracle并未提供官方的ARM原生版本,这个dmg安装包会通过Rosetta 2转译运行,性能足够学习使用。如果你追求原生ARM支持,则应转向Azul Zulu或Microsoft Build of OpenJDK等为ARM Mac提供构建的发行版。 - Linux系统:通常选择
jdk-8u202-linux-x64.tar.gz这个压缩包。.rpm包主要用于像RedHat、CentOS这类使用RPM包管理器的系统。
点击对应的链接,浏览器就会开始下载安装文件。下载速度可能较慢,耐心等待即可。
3.3 备选方案:获取Amazon Corretto 8
如果你决定使用OpenJDK,以Amazon Corretto为例:
- 访问Amazon Corretto官网。
- 找到Corretto 8的下载部分。
- 选择你的操作系统(Windows、macOS、Linux)和架构(x64、ARM64),下载对应的安装包或压缩包。Windows通常是
.msi安装包,macOS是.pkg,Linux是.tar.gz。 - 其安装过程与下文将介绍的Oracle JDK安装类似,甚至更简单。
4. 安装过程中的“下一步”里藏着什么?
安装本身看似无脑点击“下一步”,但有几个选项决定了JDK的安装位置和后续配置的复杂度,值得细说。
4.1 Windows系统安装详解
双击下载好的jdk-8u202-windows-x64.exe。
- 欢迎界面:直接点击“下一步”。
- 选择安装组件:默认会安装“开发工具”(JDK本身)和“源代码”(Java类库源码)。强烈建议勾选“源代码”,这样以后在IDE里查看Java内置类的实现时(比如按Ctrl+鼠标点击
String),就能直接看到源码,对学习大有裨益。“公共JRE”是一个独立的Java运行时环境,如果你只做开发,可以不安装,因为JDK里已经包含了运行所需的JRE。点击“下一步”。 - 更改安装路径:这是第一个关键点。默认路径通常是
C:\Program Files\Java\jdk1.8.0_202\。我个人的习惯是安装到一个没有空格和中文的路径,比如D:\DevTools\Java\jdk1.8.0_202\。这样做可以避免未来某些极端情况下(如古老的构建脚本)因路径空格导致的诡异问题。记住这个路径,稍后配置环境变量要用。点击“下一步”开始安装。 - JRE安装路径:如果上一步你选择了安装公共JRE,这里会再让你确认一下JRE的路径,同样可以修改到一个简单路径,如
D:\DevTools\Java\jre1.8.0_202\。然后继续安装直至完成。
4.2 macOS系统安装详解
macOS的安装更“傻瓜化”。
- 双击下载的
.dmg文件,会打开一个安装器窗口。 - 将窗口中的“JDK 8 Update 202.pkg”图标拖拽到“Applications”文件夹的快捷方式上(这只是个指引,实际安装位置由系统决定)。
- 随后会启动安装程序,按照提示输入你的电脑密码,一路点击“继续”、“同意”、“安装”即可。
- 安装完成后,JDK会被放置在
/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home这个标准路径下。你不需要记住它,但知道它存在有好处。
4.3 Linux系统安装详解(以Ubuntu为例)
Linux下我们通常使用压缩包进行安装,这样更灵活。
- 打开终端,使用
cd命令进入你下载的tar.gz文件所在的目录。 - 解压文件到你想要的目录,通常习惯放在
/usr/lib/jvm/或/opt/下。这里以/usr/lib/jvm/为例:
这条命令中,sudo tar -xzf jdk-8u202-linux-x64.tar.gz -C /usr/lib/jvm/-xzf是解压参数,-C是指定解压目标目录。 - 解压后,你会在
/usr/lib/jvm/目录下看到一个名为jdk1.8.0_202的文件夹。这就是你的JDK根目录。
5. 配置环境变量:让系统认识你的Java
安装完JDK,如果你直接在命令行输入java -version,系统很可能会说“找不到命令”。这是因为操作系统不知道你刚安装的Java程序在哪里。我们需要通过配置“环境变量”来告诉系统。
环境变量PATH的作用是:当你在命令行输入一个命令(如java)时,系统会去PATH变量所列出的所有目录里挨个寻找这个命令对应的可执行文件。JAVA_HOME则是一个约定俗成的变量,很多Java开发工具(如Maven、Gradle、Tomcat、IDE)都依赖它来定位JDK的位置。
5.1 Windows系统环境变量配置
Windows的配置在图形化界面里完成,但步骤稍多。
打开环境变量设置:
- 右键点击“此电脑”或“我的电脑”,选择“属性”。
- 点击“高级系统设置”。
- 在弹出的系统属性窗口中,点击右下角的“环境变量”按钮。
新建系统变量
JAVA_HOME:- 在下面的“系统变量”区域,点击“新建”。
- 变量名输入:
JAVA_HOME - 变量值输入:你安装JDK的根目录路径,例如
D:\DevTools\Java\jdk1.8.0_202 - 点击“确定”。这个变量本身不直接影响命令行,但为其他工具提供了标准化的JDK位置信息。
编辑系统变量
Path:- 在“系统变量”列表中找到
Path变量,选中并点击“编辑”。 - 在打开的编辑环境变量窗口中,点击“新建”。
- 添加一条新的路径:
%JAVA_HOME%\bin - 重要技巧:为了确保系统优先使用我们配置的JDK,最好将这条新路径上移到列表的顶部(使用右侧的“上移”按钮)。因为Windows会按顺序在
Path中查找命令,如果旧版本或其他软件的Java路径在前,可能会产生干扰。 - 逐一点击“确定”关闭所有窗口。
- 在“系统变量”列表中找到
5.2 macOS / Linux系统环境变量配置
在类Unix系统(macOS, Linux)中,我们通过修改shell配置文件(如~/.bashrc,~/.zshrc)来配置。这里以流行的zsh(macOS Catalina后默认)为例,bash的配置文件是~/.bash_profile或~/.bashrc,操作类似。
- 打开终端。
- 使用文本编辑器(如
nano或vim)打开zsh的配置文件:nano ~/.zshrc - 在文件的末尾,添加以下几行:
关键解释:# 设置JAVA_HOME,路径请替换为你实际的JDK安装路径 # 对于macOS通过pkg安装的,路径通常是: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home # 对于Linux通过tar包安装到/usr/lib/jvm/的,路径是: # export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_202 # 将JAVA_HOME下的bin目录加入PATH export PATH=$JAVA_HOME/bin:$PATHexport PATH=$JAVA_HOME/bin:$PATH这行命令的意思是,将$JAVA_HOME/bin这个路径,添加到现有的$PATH变量的最前面(:是路径分隔符)。这样系统会优先从这里查找命令。 - 保存并退出编辑器(在
nano中按Ctrl+X,然后按Y确认,再按回车)。 - 让配置立即生效:
source ~/.zshrc
5.3 验证安装与配置
无论哪个系统,配置完成后,都需要重新打开一个命令行窗口(这是为了让新的环境变量加载生效)。然后依次执行以下命令验证:
java -version javac -version如果配置成功,你会看到类似下面的输出:
java version "1.8.0_202" Java(TM) SE Runtime Environment (build 1.8.0_202-b08) Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)以及
javac 1.8.0_202看到版本号一致,且是1.8.0_202,就大功告成了!java命令用于运行Java程序,javac命令用于编译Java源代码,两者都能正常使用,说明JDK安装和环境变量配置完全正确。
6. 集成到IDE:以IntelliJ IDEA为例
配置好系统环境变量后,我们还需要在集成开发环境(IDE)中指定JDK,这样IDE才能为你提供代码补全、编译、调试等功能。这里以最流行的IntelliJ IDEA为例。
- 打开或新建一个项目。
- 进入
File->Project Structure(快捷键Ctrl+Shift+Alt+Son Windows/Linux,Cmd+;on Mac)。 - 在左侧选择
Project。 - 在右侧的
Project SDK下拉框处,点击New->JDK。 - 在弹出的文件选择器中,导航到你安装JDK的根目录(即
JAVA_HOME指向的目录,例如D:\DevTools\Java\jdk1.8.0_202),选中后点击“OK”。 - IDEA会自动识别出JDK版本和类库。现在你的项目就正式使用JDK 1.8进行开发了。
一个常见坑点:有时IDEA会自带或检测到一个“内部”的JRE,它可能版本不对或功能不全。务必确保在Project SDK这里选择的是你刚刚安装的、完整的JDK目录,而不是一个JRE目录。
7. 疑难杂症与进阶排查
即使按照步骤操作,有时也会遇到问题。这里汇总几个我踩过的坑和解决办法。
7.1 命令提示“不是内部或外部命令”
在Windows上输入java -version后提示这个错误,几乎可以肯定是Path环境变量配置有误。
- 检查路径:确认
%JAVA_HOME%\bin这个路径是否正确指向了JDK安装目录下的bin文件夹。你可以打开文件资源管理器,直接地址栏输入%JAVA_HOME%\bin看能否打开。 - 检查JAVA_HOME:在命令行输入
echo %JAVA_HOME%,看输出的路径是否正确,末尾有无多余分号或空格。 - 重启命令行:修改环境变量后,必须关闭所有已打开的命令行窗口,重新开一个。
- 路径优先级:如果系统里安装了多个Java(比如之前装过JRE),确保你的JDK路径在
Path中排在前面。
7.2 版本号不对(显示的是其他版本)
这说明系统找到了Java,但不是你刚安装的1.8版本。
- 查看完整Path:在命令行输入
path命令(Windows)或echo $PATH(macOS/Linux),检查输出中所有包含java或jdk的路径。系统会使用第一个找到的可执行文件。 - 调整顺序:按照5.1节的方法,将
%JAVA_HOME%\bin在Windows的Path中上移,或在macOS/Linux的.zshrc中确保$JAVA_HOME/bin在$PATH前面。 - 彻底卸载其他版本:如果不需要旧版本,可以到“控制面板”->“程序和功能”中卸载旧的JRE或JDK。
7.3 macOS/Linux下source命令后配置不生效
- 确认配置文件:首先确认你修改的是正确的配置文件。macOS新版默认使用
zsh,其配置文件是~/.zshrc。如果你一直用bash,则可能是~/.bash_profile。可以通过echo $SHELL命令查看当前使用的shell。 - 检查语法错误:配置文件如果有语法错误,可能导致整个文件加载失败。仔细检查添加的行,特别是
export语句的等号两边不能有空格,路径要正确。 - 直接运行命令测试:可以暂时在终端里直接运行
export JAVA_HOME=你的路径和export PATH=$JAVA_HOME/bin:$PATH,然后再运行java -version。如果这样能成功,说明配置语句本身没问题,问题出在配置文件的加载上。
7.4 关于时区问题的特别提醒
在JDK 1.8中,默认的时区资源文件可能不包含最新的时区规则变化(比如某些地区的夏令时调整)。这可能导致运行在1.8上的应用程序时间显示或计算有细微偏差。而OpenJDK 17等新版本则使用了更新的时区数据。
解决方案:如果你遇到与时区相关的bug,可以考虑手动更新JDK 1.8的时区数据。可以从较新版本的JDK(如11或17)中复制jre/lib/tzdb.dat文件,替换掉你JDK 1.8安装目录下jre/lib/中的同名文件。操作前务必备份原文件。对于大多数学习和开发场景,这个问题影响不大,但部署到生产环境时需要留意。