zoukankan      html  css  js  c++  java
  • 【Java代码之美】 -- Java17新特性初探

    1.背景

    Oracle与9月中旬正式宣布推出Java17,正如官方所说:

    • JDK17是最新的长期稳定支持的版本作为JDK11之后的下一个长期支持的版本;
    • 也是Spring Framework6与SpringBoot 3在运行时至少需要运行的JDK版本环境;
    • JDK17提供了数以千计的性能、稳定性和安全更新,以及14个JEP(JDK增强建议),用于帮助开发人员提高效率

     下面来简单地介绍一下其中主要的特性。

    2.新特性说明

    2.1.密封类转正

    密封类(Sealed Classes)是 Java 15 引入的, Java 17 正式转正。

    密封类可以对继承或者实现它们的类进行限制

    比如抽象类 Person 只允许 Employee 和 Manager 继承。

    public abstract sealed class Person
        permits Employee, Manager {
    
        //...
    }

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

    public final class Employee extends Person {
    }
    
    public non-sealed class Manager extends Person {
    }

    2.2.JDK内部元素强封装

    很多程序员以损害安全性和可维护性的方式使用 JDK 的内部元素比如一些非public类、方法和字段。

    为了继续提高 JDK 的安全性和可维护性,默认强封装 JDK 的所有内部元素,从而限制对它们的访问,除了关键的内部 API 如sun.misc.Unsafe

    2.3.macOS/AArch64 平台支持

    由于 JDK 在 macOS/AArch64 的广泛需求,Oracle 宣布将 JDK 移植到 macOS/AArch64 平台,增加了 Apple 去年发布的新 CPU 系列 (M1) 的支持。

    2.4.标记删除Applet API

    Applet API 提供了一种将 Java AWT/Swing 控件嵌入到浏览器网页中的方法。不过,目前 Applet 已经被淘汰。大部分人应该和我一样,压根就没有用过 Applet。

    Java 9 的时候,Applet API 已经被标记为启用,Java 17 的时候终于标记为删除了。

    2.5.删除RMI Activation

    RMI 即 Remote Method Invocation ,其为 Java 提供了远程方法调用的能力,不过,比较鸡肋,基本不会用到。RMI Activation 为激活分布式对象提供支持,不过,一般也不会用到。

    Java 15 的时候, RMI Activation 已经被弃用,Java 17 的时候终于被删除了。

     

    参考博文:

    JavaGuide -- Java17来了!YYDS!

    再见,Java8!Java17发布,堪称史上最快的JDK

  • 相关阅读:
    Compiler OverView
    二叉查找树
    [C++] manage background threads with boost::thread
    模拟类式继承
    JavaScript Curry
    Get GetProcAddress Function Address
    ASP.MVC Session为null
    ASP.NET MVC项目Forms身份验证HttpContext.Current.User为空
    Java Bean Validation学习笔记
    java开发中sql注入正则表达式检测
  • 原文地址:https://www.cnblogs.com/yif0118/p/15315745.html
Copyright © 2011-2022 走看看