
本系列完整目录20篇全集一、基础语法与 JDK8 核心新特性01-0501、JDK系列01Java环境搭建与JDK版本区别JDK8/11/17安装、环境变量配置全教程02、JDK系列02Java内存分区详解栈、堆、方法区、本地方法栈底层原理图解03、JDK系列03面向对象核心类、对象、继承、多态、接口与抽象类深度剖析04、JDK系列04JDK8 Lambda表达式与函数式接口一行代码简化集合遍历05、JDK系列05JDK8 Stream流式编程集合过滤、分组、求和、去重实战案例二、集合、IO、多线程核心源码06-1006、JDK系列06HashMap底层源码详解扩容机制、红黑树转换、并发安全问题07、JDK系列07ConcurrentHashMap分段锁与CAS原理JDK7与JDK8底层差异对比08、JDK系列08IO与NIO基础BIO/NIO/AIO三种IO模型适用场景完整分析09、JDK系列09Java多线程基础创建线程、锁、volatile、synchronized底层实现10、JDK系列10线程池ThreadPoolExecutor源码核心参数、拒绝策略业务落地三、JDK高版本新特性11/17/2111-1511、JDK系列11全新特性详解本地变量var、HTTP Client、废弃API梳理12、JDK系列12~13Switch表达式、文本块Text Blocks简化字符串拼接13、JDK系列14~15记录类Record、密封类Sealed Class规范化数据载体14、JDK系列17LTS长期支持版本虚拟线程预览、强封装、ZGC垃圾收集器15、JDK系列16~21虚拟线程Virtual Thread正式版轻量级线程解决高并发痛点四、JVM调优、类加载、垃圾回收16-2016、JDK系列16类加载双亲委派模型自定义类加载器打破委派实战17、JDK系列17垃圾回收机制GC标记清除、复制、标记整理算法详解18、JDK系列18主流垃圾收集器对比CMS、G1、ZGC、Shenandoah选型指南19、JDK系列19JVM调优实战内存溢出排查、GC日志分析、核心参数配置20、JDK系列20JDK版本选型指南生产环境JDK8、11、17迁移踩坑解决方案本篇为【JDK核心进阶系列 第01篇】持续更新中欢迎订阅专栏、收藏跟进文章目录第01篇Java环境搭建与JDK版本区别JDK8/11/17安装、环境变量配置全教程文章摘要前言一、前置基础JDK、JRE、JVM 核心概念1. 三者层级关系2. 关键区分3. 重要版本分界线二、JDK8 / JDK11 / JDK17 全方位对比2.1 LTS 支持、商用版权、项目适配总表2.2 核心语法 \ 性能特性拆解JDK8老项目刚需JDK11过渡折中版本JDK172026 新项目首选2.3 精准选型指南三、JDK 下载渠道规避版权坑推荐免费商用发行版避坑提醒安装包格式区分四、Windows10/11 完整安装 环境变量配置4.1 安装规范硬性要求4.2 图形安装包步骤4.3 系统环境变量配置核心步骤区分系统 / 用户变量① 新建 JAVA\_HOME必配Maven/Tomcat/IDEA 依赖读取② 编辑 Path 变量③ CLASSPATH仅 JDK8 需要11/17 可省略4.4 验证环境是否配置成功4.5 Windows 多 JDK 共存 一键切换方案五、MacOS 安装与永久环境变量配置zsh/bash 双适配方式 1Homebrew 一键安装推荐开发方式 2pkg 安装包手动安装永久环境变量配置六、LinuxUbuntu/CentOS服务器部署教程6.1 Ubuntu 在线安装6.2 离线压缩包部署内网服务器七、开发工具适配 JDK 配置7.1 IDEA 切换 JDK7.2 Maven pom.xml 编译版本绑定八、90% 新手高频报错 根治方案报错 1java 不是内部或外部命令报错 2javac 不是内部命令报错 3修改 JAVA\_HOME 后java -version 版本不变报错 4JDK17 运行老框架反射报错无法访问内部 API报错 5JDK8 项目元空间内存溢出 Metaspace OOM报错 6Mac 终端重启后 java 环境失效九、全文总结第01篇Java环境搭建与JDK版本区别JDK8/11/17安装、环境变量配置全教程文章摘要本文面向零基础后端开发者、在校学生、运维工程师完整拆解三大主流 LTS JDK 版本选型差异覆盖 Windows10/11、MacOS、Ubuntu/CentOS 全平台安装流程手把手配置全局环境变量提供多 JDK 一键切换方案汇总 90% 新手踩坑报错修复方案适配 SpringBoot2/3、云原生容器开发全文实测可复现推荐免费商用 OpenJDK 发行版规避 Oracle 版权收费风险。前言Java 开发第一步就是 JDK 环境搭建但绝大多数新手会遇到这些痛点分不清 JDK8/11/17 该选哪个新项目装完 SpringBoot3 直接启动报错环境变量配置混乱java命令正常、javac找不到电脑共存多个 JDK切换版本不生效下载 Oracle 商用 JDK企业使用存在版权收费风险Mac/Linux 终端配置永久失效重启终端就要重配读完本文你将掌握✅ JDK 三大 LTS 版本底层特性、适用项目场景选型标准✅ 免费商用 OpenJDK 发行版下载渠道规避版权问题✅ Windows 可视化图形界面完整安装 系统变量配置✅ Mac Homebrew 一键安装 zsh/bash 永久环境变量✅ Linux 服务器离线 / 在线两种部署方式✅ 多 JDK 共存、一键切换开发环境方案✅ IDEA/Eclipse/Maven 适配 JDK 版本配置✅ 高频报错根源分析 一步到位修复方案一、前置基础JDK、JRE、JVM 核心概念1. 三者层级关系JDKJava开发工具包 ├─ 开发工具javac编译器、jdb调试、jmap性能分析工具 └─ JREJava运行环境 ├─ 核心类库 rt.jar、工具依赖包 └─ JVMJava虚拟机跨平台运行底层核心2. 关键区分JVM只负责运行 Java 字节码无编译能力底层适配 Windows/Mac/LinuxJRE仅运行 Java 程序无javac编译命令纯线上服务器可用本地开发必须装 JDKJDK完整开发套件包含 JRE 编译、诊断、打包全套工具本地开发唯一选择3. 重要版本分界线JDK11 起官方移除内置独立 JRE如需精简运行环境必须使用jlink命令手动打包JDK8 自带完整 JRE 目录新手更友好。二、JDK8 / JDK11 / JDK17 全方位对比2.1 LTS 支持、商用版权、项目适配总表对比维度JDK8JDK11JDK17发布年份2014 年2018 年2021 年长期 LTS 支持是经典常青是是当前新标准Oracle 商用授权收费企业商用需付费授权收费收费免费推荐发行版Amazon Corretto8、Temurin8Temurin11、Corretto11Temurin17、Corretto17SpringBoot 最低兼容SpringBoot1.x/2.x 全系列SpringBoot2.2~2.7SpringBoot3.x 强制最低 JDK17云原生容器适配兼容性差无原生 ARM 优化基础支持ZGC 实验 GC完整 ARM/AArch64、正式 ZGC、虚拟线程淘汰组件永久代 PermGenApplet、WebStart、独立 JRE大量内部 API 强封装、废弃过时安全算法2.2 核心语法 性能特性拆解JDK8老项目刚需Lambda 表达式、Stream 流式 API、函数式接口现代 Java 编码基础全新时间 APIjava.time替代旧Date线程不安全类接口默认方法、静态方法函数式编程落地移除 PermGen 永久代改用 Metaspace 元空间减少 OOM所有遗留系统、外包项目、安卓开发唯一兼容版本JDK11过渡折中版本单文件直接运行java Hello.java省去javac编译步骤新手调试极简TLS1.3 原生支持网络接口性能提升ZGC 低延迟垃圾回收实验特性不可生产模块化 JPMS 完善强隔离模块依赖无内置 JRE部署需手动打包容器镜像体积更小JDK172026 新项目首选虚拟线程 Virtual Thread轻量级协程百万并发微服务高并发神器ZGC 正式版毫秒级 GC 停顿线上生产直接使用密封类 Sealed Classes限制类继承增强代码封装安全Switch 模式匹配、简化instanceof类型转换语法原生 M1/M2 Mac、ARM 服务器完美适配严格封装内部 API禁止非法反射老框架启动需添加启动参数放行2.3 精准选型指南维护 5 年以上遗留系统、SpringBoot2 老项目、外包交付项目 →JDK8新旧项目并行、容器迁移、不想大规模改造代码 →JDK11全新微服务、云原生、SpringBoot3、高并发业务、个人新项目 →JDK17三、JDK 下载渠道规避版权坑推荐免费商用发行版Eclipse TemurinAdoptium社区标准 OpenJDK国内下载速度稳定全平台安装包Amazon Corretto亚马逊维护长期安全补丁Windows 一键安装包避坑提醒不要下载 Oracle 官方商业 JDK公司生产环境商用会产生高额授权费用本地个人学习无限制。安装包格式区分Windows.exe图形安装包 /.zip绿色解压包推荐方便多版本共存Mac.pkg安装包 /.tar.gz压缩包Linux.tar.gz离线压缩包、yum/apt 在线安装四、Windows10/11 完整安装 环境变量配置4.1 安装规范硬性要求安装路径禁止中文、空格、特殊符号标准路径示例JDK8D:\Java\jdk1.8.0_391 JDK11D:\Java\jdk-11.0.23 JDK17D:\Java\jdk-17.0.134.2 图形安装包步骤双击 exe 安装包点击【下一步】点击【更改】自定义无中文路径复制路径保存后续配置使用JDK8 会弹出独立 JRE 安装窗口保持默认路径下一步JDK11/17 无 JRE 步骤等待进度条走完点击关闭完成安装4.3 系统环境变量配置核心步骤区分系统 / 用户变量此电脑右键 → 属性 → 高级系统设置 → 环境变量操作系统变量全局所有用户生效不配置用户变量① 新建 JAVA_HOME必配Maven/Tomcat/IDEA 依赖读取变量名JAVA_HOME大小写严格固定不能写错变量值粘贴刚才保存的 JDK 根目录② 编辑 Path 变量双击系统变量 Path → 新建填入%JAVA_HOME%\binJDK8 可额外添加%JAVA_HOME%\jre\binJDK11/17 无需③ CLASSPATH仅 JDK8 需要11/17 可省略新建变量变量名CLASSPATH变量值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar全部窗口依次点击确定保存关闭所有已打开 CMD 终端旧终端不会加载新变量4.4 验证环境是否配置成功新开 CMD 窗口执行两条命令同时输出版本号即成功# 验证运行环境java-version# 验证编译器缺失代表只装了JRE无完整JDKjavac-version4.5 Windows 多 JDK 共存 一键切换方案系统变量新建 3 个独立根路径变量JAVA8_HOMED:\Java\jdk1.8.0_391 JAVA11_HOMED:\Java\jdk-11.0.23 JAVA17_HOMED:\Java\jdk-17.0.13修改JAVA_HOME值切换对应版本路径切换后必须重启 CMD若版本不变将%JAVA_HOME%\bin移动到 Path 列表最顶部删除C:\Windows\System32自带 java 程序条目五、MacOS 安装与永久环境变量配置zsh/bash 双适配方式 1Homebrew 一键安装推荐开发# JDK8brewinstalltemurin8# JDK11brewinstalltemurin11# JDK17brewinstalltemurin17方式 2pkg 安装包手动安装安装完成默认根路径/Library/Java/JavaVirtualMachines/jdk-xxx.jdk/Contents/Home永久环境变量配置区分终端 shell新版 Mac 默认 zsh旧版 bash# zsh编辑器vim~/.zshrc# bash编辑器vim~/.bash_profile写入多版本共存配置直接复制# 多JDK路径定义exportJAVA8_HOME$(/usr/libexec/java_home-v1.8)exportJAVA11_HOME$(/usr/libexec/java_home-v11)exportJAVA17_HOME$(/usr/libexec/java_home-v17)# 默认使用JDK17切换修改变量名即可exportJAVA_HOME$JAVA17_HOMEexportPATH$JAVA_HOME/bin:$PATH生效配置文件source~/.zshrc# bash执行 source ~/.bash_profile验证java -version六、LinuxUbuntu/CentOS服务器部署教程6.1 Ubuntu 在线安装# JDK17sudoaptinstallopenjdk-17-jdk# JDK11sudoaptinstallopenjdk-11-jdk# JDK8sudoaptinstallopenjdk-8-jdk6.2 离线压缩包部署内网服务器解压安装包至统一目录sudotar-zxvfjdk-17_linux-x64_bin.tar.gz-C/usr/local/java/全局永久环境变量配置所有用户生效sudovim/etc/profile写入配置exportJAVA_HOME/usr/local/java/jdk-17.0.13exportPATH$PATH:$JAVA_HOME/bin全局生效source/etc/profilejava-version七、开发工具适配 JDK 配置7.1 IDEA 切换 JDKFile → Project Structure → Project SDK添加本机已安装 JDK项目单独指定版本7.2 Maven pom.xml 编译版本绑定SpringBoot3 项目强制 JDK17 配置propertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/propertiesSpringBoot2 兼容 JDK8propertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncoding/properties八、90% 新手高频报错 根治方案报错 1‘java’ 不是内部或外部命令根源JAVA_HOME 路径错误、Path 未添加 bin 目录修复核对路径无中文空格Path 置顶 java 路径报错 2javac 不是内部命令根源仅安装 JRE未装完整 JDK环境变量缺失修复下载完整 JDK重新配置 Path报错 3修改 JAVA_HOME 后java -version 版本不变Windows删除 Path 中 C:\Windows\System32 下 java.exe、javaw.exe将 % JAVA_HOME%\bin 上移首位Mac/Linux检查是否存在硬编码 java 路径覆盖配置报错 4JDK17 运行老框架反射报错无法访问内部 API启动参数添加放行配置--add-opens java.base/java.langALL-UNNAMED报错 5JDK8 项目元空间内存溢出 Metaspace OOMJVM 启动参数调整元空间上限-XX:MetaspaceSize128m -XX:MaxMetaspaceSize256m报错 6Mac 终端重启后 java 环境失效根源配置写入错误文件zsh 修改.zshrcbash 修改.bash_profile执行 source 生效九、全文总结版本选型核心老项目 JDK8、过渡项目 JDK11、全新云原生项目 JDK17商用优先选择 Temurin/Corretto OpenJDK规避 Oracle 版权收费环境变量必须配置JAVA_HOME适配 Maven、Tomcat、开发工具多版本共存统一设置独立 HOME 变量一键切换开发环境配置完成必须新开终端验证避免缓存导致命令不生效SpringBoot3 强制依赖 JDK17升级项目前务必统一开发 生产环境 JDK 版本