Java 17 新特性,快到起飞?惊呆了!

java1234

共 5512字,需浏览 12分钟

 · 2022-06-18

大家好,我是锋哥,今天来谈谈Java 17新特性,以及推荐一本Java神书 !

特性介绍

JDK 17更新了包括14个特性,具体如下表所示:

  • 306:恢复始终严格模式(Always-Strict)的浮点语义

    Restore Always-StrictFloating-Point Semantics0

    恢复始终执行严格模式的浮点定义,修复25年前英特尔的浮点指令存在的一些问题;

  • 356:增强型伪随机数发生器

    EnhancedPseudo-Random Number Generators

    增加了伪随机数相关的类和接口来让开发者使用stream流进行操作,

    RandomGenerator generator = RandomGeneratorFactory.all()
        .filter(RandomGeneratorFactory::isJumpable)
        .filter(factory -> factory.stateBits() > 128)
        .findAny()
        .map(RandomGeneratorFactory::create)
    //  if you need a `JumpableGenerator`:
    //  .map(JumpableGenerator.class::cast)
        .orElseThrow();
    • RandomGenerator
    • RandomGeneratorFactory
  • 382:新增macOS渲染管道

    New macOS RenderingPipeline

  • 391:支持将JDK移植到macOS或AArch64

    macOS/AArch64 Port

  • 398:弃用待移除的Applet API

    Deprecate the AppletAPI for Removal

    弃用、删除标准 Java API 的这些类和接口:

    弃用或删除任何引用上述类和接口的 API 元素,包括以下中的方法和字段:

    • java.beans.Beans
    • javax.swing.RepaintManager
    • javax.naming.Context
    • java.applet.Applet
    • java.applet.AppletStub
    • java.applet.AppletContext
    • java.applet.AudioClip
    • javax.swing.JApplet
    • java.beans.AppletInitializer
  • 403:强封装JDK内部API

    Strongly EncapsulateJDK Internals

  • 406:switch模式匹配进入预览(Preview)阶段

    Pattern Matching forswitch (Preview)

    引入switch模式匹配的preview版本

    // Old code
    if (o instanceof String) {
        String s = (String)o;
        ... use s ...
    }

    // New code
    if (o instanceof String s) {
        ... use s ...
    }

    switch的写法:

    static String formatterPatternSwitch(Object o) {
        return switch (o) {
            case Integer i -> String.format("int %d", i);
            case Long l    -> String.format("long %d", l);
            case Double d  -> String.format("double %f", d);
            case String s  -> String.format("String %s", s);
            default        -> o.toString();
        };
    }
  • 407:移除RMI(远程方法调用)激活机制

    Remove RMI Activation

  • 409:密封类

    Sealed Classes

    密封类是由JEP 360提出的,并在JDK 15中作为预览功能提供。它们由JEP 397再次提出并进行了改进,并作为预览功能在JDK 16中提供。该JEP建议在JDK17中完成密封类,与JDK 16没有任何变化。

  • 410:移除实验性AOT和JIT编译器

    Remove theExperimental AOT and JIT Compiler

  • 411:弃用待移除的安全管理器(Security Manager)

    Deprecate theSecurity Manager for Removal

    弃用安全管理器,在后续版本中移除。安全管理器可追溯到Java 1.0。多年来,它一直不是保护客户端Java代码的主要手段,也很少用于保护服务器端代码。为了推动Java向前发展,Oracle打算弃用安全管理器,以便与旧Applet API(JEP 398)一起删除。

  • 412:外部函数和内存API(孵化器)孵化阶段

    Foreign Function& Memory API (Incubator)

    Java程序可以通过该API与Java运行时之外的代码和数据进行互操作。通过有效调用外部函数(即JVM之外的代码),以及安全地访问外部内存(即不由JVM管理的内存),API使Java程序能够调用本地库和处理本地数据,而没有JNI。[关于JDK17新特性开发应用,关注公众号Java精选,后续文章更新]

  • 414:Vector API(第二孵化器)第二孵化阶段

    Vector API (SecondIncubator)

    引入一个API来表达向量计算,这些计算在运行时可靠地编译为支持的CPU架构上的最佳向量指令,从而实现优于等效标量计算的性能。

  • 415:上下文特定的反序列化过滤器

    Context-SpecificDeserialization Filters

    允许应用程序通过JVM范围的过滤器工厂配置特定于上下文和动态选择的反序列化过滤器,该工厂被调用以为每个单独的反序列化操作选择一个过滤器。

Spring Boot 3.0 最低只支持JDK 17,已经不再向下兼容,这就意味着未来很多的开发者必定逐步从JDK8 转到JDK17。

如何快速掌握全部Java17新特性?

Java 诞生 27 年来,这本享誉全球的 Java 经典著作《Core Java》一路伴随着 Java 的成长,得到了百万 Java 开发者的青睐,几乎出现在每个“学Java要看什么书”类似的书单里,影响了几代技术人。

27年间,每当 Java 有新的 LTR 版本发布,这本书都会随之更新,这次也不例外。现在,针对 Java 17 新特性的《Java核心技术》第 12 版 中文版(卷1)终于上市了!

《Java核心技术》第 12 版涵盖了 Java 17 的最新特性,相应调整了部分内容结构,同时延续之前版本的优良传统,利用清晰明了的示例加以解释,并提供了全部示例代码,以便读者学习和灵活应用。它将续写从前的辉煌,使开发者能及时跟上 Java 前进的步伐。

我们寻找了50位曾经看着《Java核心技术》这本书成长起来的KOL推荐本书!大家的寄语全部收录在第12版新书中!

这本书究竟是怎样的一本书,得到众多开发者的一致推荐呢?

《Java核心技术》并非市面那些零基础速成的书,很好地避免了开发基础书容易犯的“大而泛”的问题,尽管内容繁多,但对知识点的介绍并非泛泛而过。通过周密组织,从Java繁杂的内容中整理出一条清晰的主线,构成一个完整的知识体系。

整本书不仅让你深入了解设计和实现Java应用涉及的所有基础知识和Java特性,还会帮助你掌握开发Java程序所需的全部基本技能。

作者凯.霍斯特曼是Java技术坚定的倡导者,至今仍常年在国际上的各类计算机峰会上进行技术分享。在位于硅谷中心的圣何塞州立大学教学30余年,为硅谷的顶尖科技公司培养了大量计算机专业人才。非常熟知大厂要什么!所以他的书也是非常有针对性。

为帮助大家更轻松地学习Java,作者还亲自录制了配套视频讲解课程,视频配有中文配音+中文字幕,与纸书涵盖内容基本一致,适配Java SE8以后的版本。纸书+视频搭配学习,学习Java更轻松。(B站搜索“Java核心技术站”直达)。

......

相信在学习Java的道路上有了《Java核心技术》这本书的辅助,你一定可以做到事半功倍。

特别预告


浏览 52
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报