上个周末我发了一篇名为:Spring 官宣,干掉 Spring 5.3.x! 的技术快报,这篇文章主要介绍了 Spring Framework 6 和 Spring Boot 3 的最新消息。
我在文中提到说:Spring Framework 6 和 Spring Boot 3 在运行时至少需要 JDK 17 。
就在前天,Oracle 正式宣布推出 Java 17[1]。是的!它来了!
如官方所说:
- JDK 17 将取代 JDK 11 作为下一个长期支持的 JDK 版本。
- Java 17 提供了数以千计的性能、稳定性和安全更新,以及 14 个 JEP(JDK 增强建议),进一步改进了 Java 语言和平台,帮助开发人员提高工作效率。
即使你暂时用不到 Java17,我还是建议你一定要多多关注技术最新动态。
目前,国内大部分公司还是坚守 Java8 ,我觉得项目有条件的话,可以尝试使用一下新版本的 JDK。
可能是因为工作比较繁忙的原因,我发现很多人对“新技术”都有一点抵制,大有一种死守 Java8 不放的感觉。果然专一,实属好男人!
不过,大部分人应该都是嘴上说说,等趋势来了,该换还是要换,该学还是要学!嘴上说的好,身体很诚实。
这几年 Java 开发最常用的框架还是 Spring,它几乎没有什么大改。包括,Spring Boot 出来之后也只是让我们使用起来更加简单,学习成本非常低。
你们去看看前端框架更新换代的速度,就知道什么叫做变态了!
说实话。我非常期待这次更新。云原生时代 Java 正在面临前所未有的挑战,是继续辉煌还是成为过去,且看 Java 最新的努力尝试…
一位读者说的挺好 : “学不学,用不用,搁一边。至少得知道趋势是啥!”。
新特性概览
根据官方介绍, Java17 共有 14 个 JEP:
- 306:恢复始终严格的浮点语义
- 356:增强型伪随机数发生器
- 382:新的 macOS 渲染管道
- 391:macOS/AArch64 平台支持
- 398:标记删除的 Applet API
- 403:强封装 JDK 的内部 API
- 406:Switch 模式匹配(预览)
- 407:删除 RMI Activation
- 409:密封类
- 410:删除实验性 AOT 和 JIT 编译器
- 411:弃用即将删除安全管理器
- 412:外部函数和内存 API(孵化器)
- 414:Vector API(第二次进行特性孵化)
- 415:特定于上下文的反序列化过滤器
关于新特性和预览特性的详细介绍可以查看 Java17 官方文档介绍[2]。
密封类转正
密封类(Sealed Classes)是 Java 15 引入的, Java 17 正式转正。
密封类可以对继承或者实现它们的类进行限制。
比如抽象类 Person
只允许 Employee
和 Manager
继承。
public abstract sealed class Person
permits Employee, Manager {
//...
}
另外,任何扩展密封类的类本身都必须声明为 sealed
、non-sealed
或 final
。
public final class Employee extends Person {
}
public non-sealed class Manager extends Person {
}
JDK 内部元素强封装
很多程序员以损害安全性和可维护性的方式使用 JDK 的内部元素比如一些非public
类、方法和字段。
为了继续提高 JDK 的安全性和可维护性,默认强封装 JDK 的所有内部元素,从而限制对它们的访问,除了关键的内部 API 如sun.misc.Unsafe
。
macOS/AArch64 平台支持
由于 JDK 在 macOS/AArch64 的广泛需求,Oracle 宣布将 JDK 移植到 macOS/AArch64 平台,增加了 Apple 去年发布的新 CPU 系列 (M1) 的支持。
标记删除 Applet API
Applet API 提供了一种将 Java AWT/Swing 控件嵌入到浏览器网页中的方法。不过,目前 Applet 已经被淘汰。大部分人应该和我一样,压根就没有用过 Applet。
Java 9 的时候,Applet API 已经被标记为启用,Java 17 的时候终于标记为删除了。
删除 RMI Activation
RMI 即 Remote Method Invocation ,其为 Java 提供了远程方法调用的能力,不过,比较鸡肋,基本不会用到。RMI Activation 为激活分布式对象提供支持,不过,一般也不会用到。
Java 15 的时候, RMI Activation 已经被弃用,Java 17 的时候终于被删除了。
参考资料
[1]
Oracle 正式宣布推出 Java 17: https://www.oracle.com/news/announcement/oracle-releases-java-17-2021-09-14/
[2]
Java17 官方文档介绍: https://openjdk.java.net/jeps/403
< END >