兄弟们,鹏磊今天来聊聊这个 JDK 17 实战教程,说实话,这版本更新得有点猛,变化挺大的,咱得好好捋一捋。
一、这是个啥教程?
这个教程是鹏磊花了不少时间整理的 JDK 17 实战指南,总共 20 个章节,从基础概念到性能优化,从核心特性到迁移指南,基本上把 JDK 17 的新特性都覆盖了。
为啥要写这个教程?其实很简单,JDK 17 变化太大了,密封类、Switch 模式匹配、外部函数和内存 API、向量 API,还有一堆性能优化和安全增强,要是不系统学一下,很容易踩坑。而且 JDK 17 是 LTS 版本,很多公司都在用,不学不行啊。
二、教程都讲啥?
这个教程总共 20 个章节,内容挺全面的,咱一个个说:
基础篇(1 章):先讲 JDK 17 新特性全面了解,让你对整个版本有个整体认识。
01、JDK 17 新特性全面了解 Java 17 的核心改进;
核心特性篇(2-8 章):这部分是重点,讲的是 JDK 17 的核心新特性。密封类(Sealed Classes)JEP 409,能限制类继承的精确控制;Switch 模式匹配(预览)JEP 406,更强大的 switch 表达式和语句;外部函数和内存 API(孵化)JEP 412,与本地代码交互的新方式;向量 API(二次孵化)JEP 414,高性能数值计算与 SIMD 加速实战。
02、密封类(Sealed Classes)JEP 409 基础:限制类继承的精确控制;
03、密封类(Sealed Classes)JEP 409 进阶:密封接口与模式匹配结合;
04、Switch 模式匹配(预览)JEP 406:更强大的 switch 表达式和语句;
05、Switch 模式匹配实战:与密封类结合使用的完整案例;
06、外部函数和内存 API(孵化)JEP 412 基础:与本地代码交互的新方式;
07、外部函数和内存 API(孵化)JEP 412 进阶:内存管理与性能优化;
08、向量 API(二次孵化)JEP 414:高性能数值计算与 SIMD 加速实战;
实用工具篇(9-11 章):这部分讲的是实用工具,增强的伪随机数生成器 JEP 356,灵活强大的随机数生成;恢复始终严格的浮点语义 JEP 306,确保浮点运算的精确性。
09、增强的伪随机数生成器 JEP 356:灵活强大的随机数生成;
10、增强的伪随机数生成器实战:多线程环境下的随机数生成;
11、恢复始终严格的浮点语义 JEP 306:确保浮点运算的精确性;
平台支持篇(12-13 章):这部分讲的是平台支持,新的 macOS 渲染管道 JEP 382,利用 Metal 框架提升图形性能;macOS/AArch64 移植 JEP 391,支持 ARM 架构的 macOS 系统。
12、新的 macOS 渲染管道 JEP 382:利用 Metal 框架提升图形性能;
13、macOS/AArch64 移植 JEP 391:支持 ARM 架构的 macOS 系统;
安全增强篇(14-17 章):这部分讲的是安全增强,强封装 JDK 内部 API JEP 403,提升安全性和模块化;上下文特定的反序列化过滤器 JEP 415,增强反序列化安全性。
14、强封装 JDK 内部 API JEP 403:提升安全性和模块化;
15、强封装 JDK 内部 API 迁移指南:如何适配被封装的内置 API;
16、上下文特定的反序列化过滤器 JEP 415:增强反序列化安全性;
17、上下文特定的反序列化过滤器实战:防止反序列化攻击;
性能优化篇(18-20 章):最后这部分是性能优化和迁移指南,JDK 17 性能优化:ZGC 和 Shenandoah 垃圾回收器的增强;JVM 性能调优与最佳实践;JDK 17 迁移指南:从 JDK 8/11 升级的注意事项。
18、JDK 17 性能优化:ZGC 和 Shenandoah 垃圾回收器的增强;
19、JDK 17 性能优化:JVM 性能调优与最佳实践;
20、JDK 17 迁移指南:从 JDK 8/11 升级的注意事项;
三、适合谁看?
这个教程适合以下几类人:想学习 JDK 17 新特性的兄弟们,教程里有详细的讲解和实战案例;想从 JDK 8 或 JDK 11 升级的兄弟们,教程里有完整的迁移指南;想提升性能的兄弟们,JDK 17 在性能方面做了不少优化,ZGC、Shenandoah 垃圾回收器的增强,JVM 性能调优这些都能帮你提升应用性能;想搞安全开发的兄弟们,强封装 JDK 内部 API、反序列化过滤器这些内容都有实战案例。
四、怎么用这个教程?
这个教程可以按顺序看,也可以跳着看,看你的需求。如果你是新手,建议从第一章开始,按顺序看;如果你已经有基础了,可以直接跳到感兴趣的章节。代码示例可以直接复制到项目里用,但要注意版本兼容性;JDK 17 是 LTS 版本,如果你的项目还在用 JDK 8 或者 JDK 11,得先升级 JDK。另外,有些特性是预览特性,得用 --enable-preview 参数才能用。
五、最后说几句
这个教程是鹏磊自己整理的,不是官方文档,就是实战经验总结。可能会有错误,可能会有遗漏,但都是真实踩坑的经验,希望能帮到兄弟们。好了,废话不多说了,开始整活吧;JDK 17 确实是个好东西,值得好好学一下。别磨叽了,赶紧开始吧。