前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java17来了!YYDS!

Java17来了!YYDS!

作者头像
Guide哥
发布2021-10-11 11:24:17
1.3K0
发布2021-10-11 11:24:17
举报
文章被收录于专栏:JavaGuideJavaGuide

上个周末我发了一篇名为: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 只允许 EmployeeManager 继承。

代码语言:javascript
复制
public abstract sealed class Person
    permits Employee, Manager {

    //...
}

另外,任何扩展密封类的类本身都必须声明为 sealednon-sealedfinal

代码语言:javascript
复制
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 >

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JavaGuide 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 新特性概览
  • 密封类转正
    • JDK 内部元素强封装
      • macOS/AArch64 平台支持
        • 标记删除 Applet API
          • 删除 RMI Activation
            • 参考资料
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档