• Java18知多少


    Java 18 新功能总揽在这里插入图片描述

    400: UTF-8 by Default
    408: Simple Web Server
    413: Code Snippets in Java API Documentation
    416: Reimplement Core Reflection with Method Handles
    417: Vector API (Third Incubator)
    418: Internet-Address Resolution SPI
    419: Foreign Function & Memory API (Second Incubator)
    420: Pattern Matching for switch (Second Preview)
    421: Deprecate Finalization for Removal

    Java 18 中的新功能

    除了数以千计的性能、稳定性和安全性更新外,Java 18 还提供了九项增强/更改(称为JDK 增强提案 - JEP),包括两个交付的孵化器模块和一个预览语言功能。

    Java 18 提供的九个 JEP 分为四类:

    核心库改进和更新

    JEP 400:默认为 UTF-8

    此次更新的主要原因是 UTF-8 已成为世界上使用最广泛的字符集,因此在 Java 中明确选择它可以大大简化事情。
    当代码依赖于默认字符集时,使 Java 程序更具可预测性和可移植性;阐明标准 Java API 在何处使用默认字符集并在整个标准 Java API 中标准化 UTF-8,控制台 I/O 除外。

    命令查看默认字符集

    java -XshowSettings:properties -version 2>&1 | grep file.encoding
        file.encoding = UTF-8
        file.encoding.pkg = sun.io
    
    • 1
    • 2
    • 3

    JDK API查看

    Charset.defaultCharset()
    
    • 1

    JEP 408:简单的Web服务器

    开箱即用的静态 HTTP 文件服务器,设置简单,功能最少,可减少开发人员的激活能量,使 JDK 更易于使用,并通过命令行提供默认实现以及用于编程创建和自定义的小型 API。

    $ jwebserver
    Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
    Serving /cwd and subdirectories on 127.0.0.1 port 8000
    URL: http://127.0.0.1:8000/
    
    • 1
    • 2
    • 3
    • 4

    JEP 416:使用方法句柄重新实现核心反射

    减少对未来语言特性的反射支持的维护和开发成本。它还简化了 Hotspot VM 代码。

    JEP 418:互联网地址解析 SPI(服务提供者接口)

    可以使用开发人员提供的备用解析器替换默认的操作系统本机解析器,这通常会导致阻塞操作系统调用。

    工具改进

    JEP 413:Java API 文档中支持Snippets代码片段

    促进API 文档中源代码片段的验证和格式化。尽管正确性最终是作者的责任,但对 javadoc 和相关工具的增强支持可以使其更容易实现,支持现代样式,例如语法突出显示,以及名称与声明的自动链接,并支持更好的集成开发环境(IDE) 支持创建和编辑片段。

    /**
     * The following code shows how to use {@code Optional.isPresent}:
     * {@snippet :
     * if (v.isPresent()) {
     *     System.out.println("v: " + v.get());
     * }
     * }
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    预览和孵化器

    JEP 417 : Vector API第三孵化器
    引入了一种与平台无关的可靠方式,可以清晰、简洁地表达支持的 CPU 架构的广泛矢量计算。

    JEP 419:外部函数和内存 API第二个孵化器
    极大地简化了创建利用本机的 Java 程序所需的工具和知识。这将允许 Java 开发人员访问专门的非 Java 库。

    JEP 420 :开关第二次预览的模式匹配
    通过扩展 switch 表达式和语句的表现力和适用性来提高 Java 开发效率。在 switch 中允许模式匹配将使表达复杂的面向数据的查询更加简洁和安全。
    Old:

    static String formatter(Object o) {
        String formatted = "unknown";
        if (o instanceof Integer i) {
            formatted = String.format("int %d", i);
        } else if (o instanceof Long l) {
            formatted = String.format("long %d", l);
        } else if (o instanceof Double d) {
            formatted = String.format("double %f", d);
        } else if (o instanceof String s) {
            formatted = String.format("String %s", s);
        }
        return formatted;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    jdk18:

    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();
        };
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    面向未来的 Java 程序

    JEP 421:弃用 Finalization
    通过提供简单的工具来帮助检测对已弃用功能的依赖,使开发人员为将来最终删除过时的终结功能做好准备。

    Oracle JDK 18 下载地址:
    https://www.oracle.com/java/technologies/downloads/

    参考地址:
    https://www.oracle.com/news/announcement/oracle-releases-java-18-2022-03-22/
    https://openjdk.org/projects/jdk/18/

    天上白玉京,十二楼五城

  • 相关阅读:
    深度度量学习(Deep Metric Learning)函数求导公式
    “智能语音指令解析“ 基于NLP与语音识别的工单关键信息提取
    探索OpenCV中直方图的神奇之处:应用与实现
    同样是测试员,为什么有的人薪资15K,有的人薪资20-30W,学会谈薪真的很重要
    机器学习笔记之配分函数(一)对数似然梯度
    阿里云新用户:定义,专享福利及优惠活动
    机器学习硬件十年:性能变迁与趋势
    高速公路车路协同网络需求研究
    21条最佳实践,全面保障 GitHub 使用安全
    Servlet容器使用Spring容器
  • 原文地址:https://blog.csdn.net/qq_35764295/article/details/125609726