Java 17的一些新特性介绍

 更新时间:2022年04月14日 15:02:37   作者: sofia   
这篇文章主要介绍了Java 17的一些新特性介绍,Java添加了许多Java开发人员渴望的特性和改进,下文就来学习一下这些特性吧,需要的朋友可以参考一下

前言

Java17将是一个长期支持的LTS版本。

Java采用了6个月的发布周期。也就是说,它将每6个月发布一个新版本的Java。每隔3年,LTS版本就会发布一次。目前,Java 11是LTS版本,于2018年9月发布。但在Java17发布后,它将是最新的LTS支持。

许多组织依赖LTS版本,所以他们使用的是Java11。但在Java17发布后,他们将使用Java17(可能)。

自从将Java9发布到Java16之后,Java添加了许多Java开发人员渴望的特性和改进。看看它,我们可以说Java正在缓慢而稳定地追赶其他编程语言。它让Java开发人员感到高兴,因为我们已经听腻了“Java已死”。

Java 17中的Sealed 密封类

sealed class 密封类允许描述哪个类或接口可以扩展或实现这个类或接口。简而言之,我们可以限制谁可以使用这个类或接口。假设我们有一个学生抽象类,如果我们将其设为一个密封类,并且只允许ScienceStudentCommerceSudent扩展该类,那么只有这些类才能扩展该Student,而其他类如果试图扩展该类,则会出错。

public abstract sealed class Student permits ScienceStudent , CommerceStudent { ... }

这提供了一种比访问修饰符更具声明性的方法来限制超类的使用。

Java 17提供了更好的随机生成器

Java 17为伪随机数生成器(PRNG)提供了新的接口类型和实现。它引入了一个名为RandomGenerator的新接口。该接口的目标是为所有现有和新的PRNG提供统一的API。

RandomGenerator提供名为ints、longs、doubles、nextBoolean、nextInt、nextLong、nextDouble和nextFloat的方法,以及它们当前的所有参数变化。以下是提供的四个新的专用随机发生器接口:

  • SplittableRandomGenerator
  • JumpableRandomGenerator
  • LeapableRandomGenerator
  • ArbitrarilyJumpableRandomGenerator

所有这些接口都扩展了接口。

此功能的目标是:

  • 使各种PRNG算法更容易在应用中互换使用。
  • 通过提供PRNG对象流,更好地支持基于流的编程。
  • 消除现有PRNG类中的代码重复。
  • 小心地保留java.util.Random

Java对增强安全性的关注

通过JEP403,Java对JDK内部进行了强封装。这意味着,它将限制用户直接使用Java的内部内容,并鼓励用户使用标准API。使用内部构件的原因可能会导致问题,尤其是在安全方面。此功能的目标是:

  • 继续改进JDK的安全性和可维护性,这是Jigsaw项目的主要目标之一。
  • 鼓励开发人员从使用内部元素迁移到使用标准API,这样他们和他们的用户都可以升级到未来的Java版本,而无需大惊小怪

另一个安全更新是JEP 411:不推荐删除安全管理器。嗯,这不完全是一个更新,而是朝着删除一个功能迈出的一步。安全管理器可以追溯到Java 1.0。多年来,它一直不是保护客户端Java代码的主要手段,也很少用于保护服务器端代码。因此,在即将发布的Java版本中,它将完全从Java中删除。

Pattern Matching For Switch预览

此功能是一个预览功能,不会在标准软件包中提供。

在Java16中,我们获得了“instanceOf的模式匹配”功能。类似地,这种切换模式匹配功能将改进普通旧的单equals类型的切换表达式。下面是一个开关表达式的代码简介。

Object o = 123L;
String formatted = 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();
};

你可以在JEP 406上看到更多关于此功能的示例和详细说明。

到此这篇关于Java 17的一些新特性介绍的文章就介绍到这了,更多相关Java 17 新特性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 中html的页面间跳转问题小结

    SpringBoot 中html的页面间跳转问题小结

    这篇文章主要介绍了SpringBoot 中html的页面间跳转问题小结,本文给大家分享两种方法,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Spring中MVC模块代码详解

    Spring中MVC模块代码详解

    这篇文章主要介绍了Spring中MVC模块代码详解,涉及Controller的简单介绍,具有一定借鉴价值,需要的朋友可以参考下。
    2017-11-11
  • java必学必会之线程(2)

    java必学必会之线程(2)

    本文对java线程进行深入学习,重点介绍了线程同步问题、线程死锁问题,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Alibaba SpringCloud集成Nacos、openFeign实现负载均衡的解决方案

    Alibaba SpringCloud集成Nacos、openFeign实现负载均衡的解决方案

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,此项目包含开发分布式应用微服务的必需组件,这篇文章主要介绍了Alibaba SpringCloud集成Nacos、openFeign实现负载均衡,需要的朋友可以参考下
    2024-05-05
  • Idea jdk版本问题解决方案

    Idea jdk版本问题解决方案

    这篇文章主要介绍了Idea jdk版本问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • JVM类加载机制原理及用法解析

    JVM类加载机制原理及用法解析

    这篇文章主要介绍了JVM类加载机制原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Springboot集成kafka高级应用实战分享

    Springboot集成kafka高级应用实战分享

    这篇文章主要介绍了Springboot集成kafka高级应用实战分享,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 详解JDK 5 Annotation 注解之@Target的用法介绍

    详解JDK 5 Annotation 注解之@Target的用法介绍

    这篇文章主要介绍了详解JDK 5 Annotation 注解之@Target的用法介绍,需要的朋友可以参考下
    2016-02-02
  • Java Web十条开发实用小知识

    Java Web十条开发实用小知识

    这篇文章主要介绍了Java Web十条开发实用小知识的相关资料,需要的朋友可以参考下
    2016-05-05
  • java中i = i++和i =++i的深入讲解

    java中i = i++和i =++i的深入讲解

    这篇文章主要介绍了java中i = i++和i =++i的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02

最新评论