来源 | Java技术栈(ID:javastack)
大家好,我是R哥。
Java 24 正式发布了:
没错,Java 版本号来到了 24,Java 在发版本这条路上没有回头路了,简直超神了。。。
Java 24 下载地址:
https://www.oracle.com/java/technologies/downloads/
JDK 24 提供了 24 项新功能:
404 |
Generational Shenandoah (Experimental) |
Shenandoah 分代回收 |
实验性特性 |
450 |
Compact Object Headers (Experimental) |
紧凑对象头 |
实验性特性 |
472 |
Prepare to Restrict the Use of JNI |
准备限制 JNI 的使用 |
|
475 |
Late Barrier Expansion for G1 |
G1 垃圾回收器的屏障优化 |
|
478 |
Key Derivation Function API (Preview) |
密钥派生函数 API |
预览特性 |
479 |
Remove the Windows 32-bit x86 Port |
移除 Windows 32 位 x86 端口 |
|
483 |
Ahead-of-Time Class Loading & Linking |
AOT 类加载 & 链接 |
|
484 |
Class-File API |
类文件 API |
|
485 |
Stream Gatherers |
流收集器增强 |
|
486 |
Permanently Disable the Security Manager |
永久禁用安全管理器 |
|
487 |
Scoped Values (Fourth Preview) |
作用域值 |
第四次预览 |
488 |
Primitive Types in Patterns, instanceof, and switch (Second Preview) |
模式匹配支持原始类型 |
第二次预览 |
489 |
Vector API (Ninth Incubator) |
向量 API |
第九次孵化 |
490 |
ZGC: Remove the Non-Generational Mode |
ZGC 删除非分代模式 |
|
491 |
Synchronize Virtual Threads without Pinning |
无需固定即可同步虚拟线程 |
|
492 |
Flexible Constructor Bodies (Third Preview) |
灵活的构造函数体 |
第三次预览 |
493 |
Linking Run-Time Images without JMODs |
无需 JMOD 即可链接运行时镜像 |
|
494 |
Module Import Declarations (Second Preview) |
模块导入声明 |
第二次预览 |
495 |
Simple Source Files and Instance Main Methods (Fourth Preview) |
简化源文件和实例入口方法 |
第四次预览 |
496 |
Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism |
基于抗量子模块格的密钥封装机制 |
|
497 |
Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm |
基于模块格的抗量子数字签名算法 |
|
498 |
Warn upon Use of Memory-Access Methods in sun.misc.Unsafe |
在 sun.misc.Unsafe 中使用内存访问方法时发出警告 |
|
499 |
Structured Concurrency (Fourth Preview) |
结构化并发 |
第四次预览 |
501 |
Deprecate the 32-bit x86 Port for Removal |
弃用 32 位 x86 端口 |
其中包括 2 个实验性特性、7 个预览特性、1 个孵化特性,不管是性能优化、语法增强、安全升级,还是工具链改进,都带来了显著的提升。
完整特性说明可以参考:https://openjdk.org/projects/jdk/24/
这里说明下,Java 24 并不是一个长期支持的版本,上一个长期支持的版本是 Java 21,而下一个长期支持的版本是 Java 25,如图所示:
Java 版本分为 LTS(Long-Term Support,长期支持版) 和 Non-LTS(非长期支持版),它们的主要区别如下:
发布周期 |
每 2 年 一次 |
每 6 个月 发布一次 |
支持时长 |
官方长期支持(8 年+) |
仅支持 6 个月 |
适用场景 |
生产环境、企业级项目、长期维护的系统 |
个人学习、实验性项目、尝鲜新特性 |
稳定性 | 更稳定,企业级可用 |
新特性多,但可能不稳定 |
安全性 |
持续提供安全更新和 bug 修复 |
仅在生命周期内提供短期修复 |
新特性 |
主要以稳定性和性能优化为主 |
包含最新特性,但可能在下个版本修改或移除 |
所以,如果是企业生产项目,Java 24 并不建议大家升级。
可能大部分人还在用 Java 8 吧?
大家都说,你发,任你发,我用 Java 8!
看了下 newrelic 发布的最新的 Java 版本统计报告,到了 2024 年,Java 17 才是主流了。
对于新项目来说,Java 17 是主流无可厚非,因为像 Spring、Spring Boot 等这样的神仙框架都已经把最低依赖升级到了 Java 17,Java 8 已经不再支持了。
所以,Java 17 是最低具备的技能了,都到了 2025 年了,如果一个程序员的知识还停留在 Java 8,那大概率说明他长时间没有学习了。
推荐阅读:
2025 年 03 月编程语言排行榜|老古董语言强势回归,原因是相关开发人员退休了~
阿里巴巴写进Java开发手册里推荐的JUC工具类:LongAdder,确定不点进来学一下嘛?
我敢说:面试问这个,99%的程序员秒挂!!
字节跳动Java岗地狱级一面实录:我如何用27分钟征服面试官?
为什么大厂宁愿用go也不用.net,连微软的TypeScript转译器都用了Go?