从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • JavaSE

    • 我的 Java 学习路线
    • 安装 Java
    • Java 数据类型

    • Java 多版本配置
      • 前言
      • Java 版本介绍
      • Java11 的安装和配置
      • 一键切换 Java 版本
    • 面向对象

    • Java 核心类

    • IO

    • Java 与时间

    • 异常处理

    • 哈希和加密算法

    • Java8 新特性

    • 网络编程

  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java
  • JavaSE
2022-11-27
目录

Java 多版本配置

# Java 多版本配置

有时候,我们需要用到多个版本的 Java。

# 前言

虽然目前 Java8 是用的最广泛的,但有时候工作中我们需要用到其他版本的 Java:

  1. 工作中负责维护的系统是十几年前的老古董,用的是 Java5
  2. 为了学习 Java 新版本的特性,需要用新版本的 Java
  3. 有时候为了工作需要,还要版本之间来回切换;如果说每次切换都重新卸载和安装 Java 的话,太麻烦了

在开发阶段,多个版本的 JDK 可以同时安装,当前使用的 JDK 版本可由 JAVA_HOME 环境变量切换。

本文主要在 Windows 下配置,描述如何快速切换 Java 版本。阅读本文前,读者应该具有在电脑上安装 Java 的经验。

# Java 版本介绍

我们打开官网看看 Java 的各个版本的发布信息:Oracle Java SE Support Roadmap (opens new window),可以看到有这样一个表格

Release GA Date Premier Support Until Extended Support Until Sustaining Support
7 (LTS) July 2011 July 2019 July 2022 Indefinite
8 (LTS) March 2014 March 2022 December 2030 Indefinite
9 (non‑LTS) September 2017 March 2018 Not Available Indefinite
10 (non‑LTS) March 2018 September 2018 Not Available Indefinite
11 (LTS) September 2018 September 2023 September 2026 Indefinite
12 (non‑LTS) March 2019 September 2019 Not Available Indefinite
13 (non‑LTS) September 2019 March 2020 Not Available Indefinite
14 (non‑LTS) March 2020 September 2020 Not Available Indefinite
15 (non‑LTS) September 2020 March 2021 Not Available Indefinite
16 (non-LTS) March 2021 September 2021 Not Available Indefinite
17 (LTS) September 2021 September 2026 September 2029 Indefinite
18 (non-LTS) March 2022 September 2022 Not Available Indefinite
19 (non-LTS) September 2022 March 2023 Not Available Indefinite
20 (non-LTS) March 2023 September 2023 Not Available Indefinite
21 (LTS) September 2023 September 2028 September 2031 Indefinite

第一列是 Java 的版本,第二列是 Java 发布的日期,第三列是支持维护的日期(如果该版本有问题,需要修复,那么就会在这个版本上进行更新,等到了 2022 年后,如果有 bug 就不会维护了)

为什么第一列的版本后面有个 LTS 和 non-LTS?LTS 是指 Long-Term-Support,长期支持版;相当于只要有 bug,就会修复;而如果不是 LTS 版(non-LTS),有 bug 的话等到了维护期限就不管了;那我们肯定就是使用长期支持版,不然有问题谁解决呢,是吧 😅

可以看到 2014 年,Java8 就已经发布了,为什么现在还很多人用?因为当时只有它是 LTS 版,所有人都用这个版本;到了后期升级 JDK 版本是非常麻烦的事情,需要考虑和测试的东西很多,所以少有公司愿意花这个精力去升级。

鱼皮如是说:

Spring Boot 船新版本?我却很失望 (opens new window)

1)兼容性

Java 一直是主流的企业开发语言,存量项目非常多,大部分的老项目和类库支持都是 Java 8 及以下的版本,如果强行升级了 JDK 这种基础环境,很难保证项目的运行和之前完全一致。

我自己就经历过一次 JDK 8 升级 JDK 11 的大坑,升级后项目虽然能跑,但在做一个导出 Excel 表格功能时,升级版本后部分字符就乱码了,折腾了好久才搞定,比做几个新需求还心累。

所以还是谨记编程铁律第一条:程序能运行,就不要动它。

2)稳定性

Java 8 已经经过成千上万个企业项目的检验,都很难做到绝对的稳定。如果用一个新版本的 Java,很难说会遇到什么乱七八糟的线上问题,所以建议规模较大的项目慎用太新的东西。

3)生态不足

现在网上的项目教程也好、解决 Bug 的博客方案也罢,几乎都是基于 Java 8 的。如果你使用高版本的 Java,哪怕是同样的代码,可能项目也根本运行不起来,可能还有一些语法细节的不一致等。而且你可能在网上都搜不到相关的解决方案,这个对于 Java 开发经验不足的同学来说,是非常致命的。为什么不建议大家学习小众编程语言,也有这个原因。

我印象中自己使用 Java 11 的时候就遇到过一些莫名其妙的小 Bug,很多是去 stack overflow 等国外平台才找到了解决方案。

# Java11 的安装和配置

先下载 Java11 的安装包。官网下载链接:Java Downloads | Oracle (opens new window)

注意选择是具体平台的,这里选 Windows,下载完后直接一路默认安装即可。这里笔者的安装路径为:

C:\Program Files\Java\jdk-11.0.17
1

需要注意的是,Java11 给 path 变量加了不少东西,我们打开环境变量 path,然后将 JAVA 的配置 上移到最上面。

然后修改 JAVA_HOME 路径为 Java11 的安装路径。

我们打开一个新的 cmd,查看 Java 版本:

C:\Users\peterjxl>java -version
java version "11.0.17" 2022-10-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.17+10-LTS-269)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.17+10-LTS-269, mixed mode)
1
2
3
4

# 一键切换 Java 版本

如果每次切换版本,都重新打开环境变量,然后找到 Java 的安装目录,修改环境变量,稍微有一点麻烦;我们可以借助 Windows 的 bat 快速切换 Java 版本。

如果要切换为 Java8,新建一个文件文件,然后输入以下内容:

@echo off
setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_281" /M
@echo "switch to Java8 finish!"
pause
1
2
3
4

注意 Java8 的路径请自行更改,然后修改该文本文件的后缀为.bat。例如笔者的文件名为 “切换为 Java8.bat”

切换为 Java11 同理,新建一个文件文件,然后输入以下内容:

@echo off
setx JAVA_HOME "C:\Program Files\Java\jdk-11.0.17" /M
@echo "switch to Java11 finish!"
pause
1
2
3
4

注意 Java8 的路径请自行更改,然后修改该文本文件的后缀为.bat

然后双击 bat 即可运行。如果运行的时候提示拒绝访问,请尝试管理员权限运行:在 bat 文件上右键--以管理员身份运行。然后重新打开 cmd 验证 Java 版本即可。

上次更新: 2025/6/3 09:31:54
Java 中的浮点数
枚举类

← Java 中的浮点数 枚举类→

最近更新
01
语雀文档一键下载至本地教程
07-04
02
要成功,就不要低估环境对你的影响
07-03
03
血泪教训:电子设备要定期开机
07-02
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式