当前位置: 首页 > news >正文

Win11本地jdk1.8和jdk17双版本切换运行方法

目录

安装包

安装步骤

注意事项

环境变量配置

CLASSPATH

JAVA_HOME

切换及验证方法

切换

测试

JDK 1.8 与 JDK 17 核心特性对比表

总结与建议


安装包

官网下载:https://www.oracle.com/java/technologies/javase/jdk17-0-13-later-archive-downloads.html

一般建议直接获取.exe格式的,在本地进行安装:

安装步骤

下载完成后,安装包的话直接下一步安装到自己想要的目录即可,压缩包的话解压到自己想要的目录即可。

注意事项

解压版跳过此项,如果是安装版(.exe),请务必到以下位置删除这两个文件夹

C:\Program Files (x86)\Common Files\Oracle\Java\javapath
C:\Program Files\Common Files\Oracle\Java\javapath

环境变量配置

CLASSPATH

在系统变量中新建一个CLASSPATH,添加变量值如下:

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

JAVA_HOME

在系统变量里新建3个JAVA_HOME

三个JAVA_HOME分别是:

变量
JAVA_HOME%JAVA_HOME8% 这里这样写是使用JAVA8,切换17,就换成%JAVA_HOME17%
JAVA_HOME8C:\Program Files\Java\jdk1.8.0_202 (写自己的java8的安装目录)
JAVA_HOME17C:\Program Files\Java\jdk-17 (写自己的java17的安装目录)

JDK的安装目录复制到bin的上一级就可以了:

本地配置好的环境变量如下:【建议直接配置系统变量,这样可以针对电脑全部生效

本地配置好的path路径:

切换及验证方法

切换

测试

Win + R 输入cmd打开命令提示符,键入

java -version

就可以查看你现在所启用的jdk版本信息(注意:修改完环境变量后,必须重新打开一个新的cmd窗口进行查看!!!

JDK 1.8 与 JDK 17 核心特性对比表

特性维度JDK 8 (LTS)JDK 17 (LTS)说明与影响
发布年份2014年2021年JDK 17 是 8 之后又一个重要的长期支持版本。
许可证Oracle BCLGPLv2+CEJDK 17+ 的Oracle发行版使用免费的GPL许可证,消除了之前的商业使用顾虑。
语言特性Lambda 表达式
Stream API
方法引用
默认方法
新的日期API
密封类 (Sealed Classes)
模式匹配 (instanceof, switch预览)
文本块 (Text Blocks)
Records (记录类)
JDK 8 引入了函数式编程,是革命性的。JDK 17 进一步提供了更强的数据建模能力(Records, Sealed Classes)和更简洁的语法(模式匹配)。
API 更新java.time
java.util.stream
CompletableFuture
新的HTTP客户端 (标准)
增强的字符串方法 (如 isBlank()lines())
Flight Recorder (JFR) API
Vector API (孵化器)
JDK 17 提供了大量现代、易用的新API,同时将很多孵化器模块变为标准(如HTTP Client)。
性能提升基础性能显著提升
G1GC 更加成熟稳定
ZGC (低延迟垃圾收集器)
ShenandoahGC (低延迟GC)
- JVM优化(如元空间优化)
JDK 17 在吞吐量和延迟方面都有巨大进步,特别是提供了专为低延迟场景设计的ZGC和Shenandoah。
垃圾收集器Parallel GC (默认)
CMS (已废弃)
G1GC (早期)
G1GC (默认)
ZGC
ShenandoahGC
Serial GC
Parallel GC
CMS (已移除)
JDK 17 移除了CMS,提供了更先进的ZGC和Shenandoah,其暂停时间不受堆大小影响。
模块化Java 平台模块系统 (JPMS)JDK 9 引入的模块化系统在JDK 17中已非常成熟,提供了更好的封装性和更小的运行时镜像。
容器支持原生容器支持JDK 10+ 可以正确检测容器设置的CPU和内存限制,无需额外参数。在JDK 8中需使用 -XX:+UseCGroupMemoryLimitForHeap 等实验性参数。
安全性基础安全特性增强
- 强封装:默认阻止通过反射访问内部API
- 新的安全算法
- 移除弱加密算法
JDK 17 的安全性大幅增强,默认配置更安全,但可能需要对一些依赖非法反射的旧库进行升级。
内存管理永久代 (PermGen)元空间 (Metaspace)JDK 8 已将 PermGen 移至 Metaspace,但JDK 17 对 Metaspace 的内存分配和回收进行了大量优化。
打包与交付仅JRE/JDKjlink:可创建自定义运行时镜像
jpackage:打包原生安装程序
可以创建更小、只包含所需模块的JRE,便于分发,也支持直接打包成exe/msi/dmg/rpm等格式。
监控与诊断JMC (商业特性)
JVisualVM
JFR (开源)
JMC (开源)
增强的JFR事件
JDK Flight Recorder (JFR) 在JDK 11后成为开源功能,提供了极佳的生产环境 profiling 能力。
已移除/废弃Applet API, PermGen移除了大量内容
Applet API (彻底移除)
Security Manager (废弃)
J2EE & CORBA 模块
Nashorn JavaScript 引擎
JDK 17 更加精简,移除了许多过时或不再维护的API,推动生态向现代化发展。

总结与建议

方面结论
性能JDK 17 胜出。无论是GC性能(ZGC/Shenandoah)、即时编译器(JIT)优化还是整体吞吐量,JDK 17 相比 JDK 8 都有显著提升。
安全性JDK 17 胜出。更强的默认封装、移除弱算法、及时的安全补丁,使得JDK 17 更安全。
现代化JDK 17 胜出。提供了Records、密封类、模式匹配等现代语言特性,让代码更简洁、更易维护。
稳定性两者相当。两者都是LTS版本,具有长期的技术支持和向后兼容性保证。但JDK 8 已进入延展支持阶段(Oracle收费),而JDK 17 在主流支持期内。
生态兼容性JDK 8 胜出(目前)。由于JDK 8 市场占有率最高,几乎所有库和框架都对其有完美支持。迁移到JDK 17 可能需要升级部分第三方库的版本。

升级建议:

  • 对于新项目强烈推荐直接使用 JDK 17。这是一个现代化、高性能、免费的起点,可以充分利用最新的语言特性和性能优势。

  • 对于现有项目:建议制定计划,逐步从 JDK 8 升级到 JDK 17。虽然可能需要一些代码和依赖库的调整,但所带来的性能提升、安全性增强和开发效率的提高通常是值得的。可以先升级到 JDK 11,再升级到 JDK 17,以平滑过渡。


文章转载自:

http://2L0k6S8A.gbfck.cn
http://uhOdUWEA.gbfck.cn
http://Mc7Bp3RX.gbfck.cn
http://z1oVvnwg.gbfck.cn
http://hS7sPyl0.gbfck.cn
http://7N8Xnnjj.gbfck.cn
http://P7XVfM8B.gbfck.cn
http://c1FmLXH3.gbfck.cn
http://USDqwClu.gbfck.cn
http://j6XCI3y2.gbfck.cn
http://1DjCZLKa.gbfck.cn
http://I1O7X33b.gbfck.cn
http://0m7fFMwY.gbfck.cn
http://Ii9R6IH8.gbfck.cn
http://tTXnUz76.gbfck.cn
http://jTK0eTIs.gbfck.cn
http://6BEMN8NT.gbfck.cn
http://MqpArJRZ.gbfck.cn
http://vReFBtok.gbfck.cn
http://HSv61DMx.gbfck.cn
http://uoTpMwBc.gbfck.cn
http://3UMKOWqs.gbfck.cn
http://AorcsGmV.gbfck.cn
http://W4pfqoXX.gbfck.cn
http://Us0PHzYx.gbfck.cn
http://xaAwaPgV.gbfck.cn
http://g7bZfowh.gbfck.cn
http://B1rBo9fE.gbfck.cn
http://8RYecKMJ.gbfck.cn
http://YcFnZ28g.gbfck.cn
http://www.dtcms.com/a/386629.html

相关文章:

  • vue3 使用print.js打印el-table全部数据
  • Vue 3 + TypeScript + 高德地图 | 实战:多车轨迹回放(点位驱动版)
  • [vue]创建表格并实现筛选和增删改查功能
  • JVM-运行时内存
  • 后缀树跟字典树的区别
  • LanceDB向量数据库
  • RabbitMQ 异步化抗洪实战
  • 《Java集合框架核心解析》
  • 二维码生成器
  • OSI七层模型
  • 【原创·极简新视角剖析】【组局域网】设备在同一局域网的2个条件
  • 第8课:高级检索技术:HyDE与RAG-Fusion原理与DeepSeek实战
  • Windows 命令行:路径的概念,绝对路径
  • 异常检测在网络安全中的应用
  • 【ubuntu】ubuntu 22.04 虚拟机中扩容操作
  • 【数值分析】05-绪论-章节课后1-7习题及答案
  • Java NIO 核心机制与应用
  • Roo Code 诊断集成功能:智能识别与修复代码问题
  • ANA Pay不再接受海外信用卡储值 日eShop生路再断一条
  • 一阶惯性环节的迭代公式
  • AWS 热门服务(2025 年版)
  • 拷打字节算法面试官之-深入c语言递归算法
  • Vehiclehal的VehicleService.cpp
  • 【传奇开心果系列】基于Flet框架实现的允许调整大小的开关自定义组件customswitch示例模板特色和实现原理深度解析
  • 八股整理xdsm
  • SpringBoot 配置文件详解:从基础语法到实战应用
  • lesson62:JavaScript对象进化:ES2025新特性深度解析与实战指南
  • ARM C1-Premium core简介
  • 机器学习-深度神经网络架构
  • godot+c#实现玩家动画