JDK 18 / Java 18 正式发布:九项 JDK 增强

简介: JDK 18 / Java 18 正式发布:九项 JDK 增强

3 月 22 日,Oracle 官方发布了 JDK 18 /Java 18 正式版。在性能、稳定性和安全性上面,Java 18 得到了全面的改进提升,其中包括对平台的九项 JDK 增强(JEP),大大提升了开发人员的工作效率。

image.png

据了解,JDK 18 是一个短期维护版本,将获得六个月的支持。尽管如此,但它仍然可用于生产环境中。

JDK 18 版本共包括 9 个 JEP,以及数百个较小的增强功能和一千多个 Bug 修复。

image.png

JDK 改进

默认编码为 UTF-8

将 UTF-8 设置为标准 Java API 的默认字符集。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、语言环境和配置中保持一致。

Simple Web Server

一个命令行工具和 API,用于启动仅提供静态文件的最小 Web 服务器。可用于原型设计、临时编码和测试目的,尤其是在教育环境中。

用方法句柄(Method Handles)重新实现核心反射

在 java.lang.invoke 方法句柄的基础上重新实现 java.lang.reflect.Method、Constructor 和 Field。通过处理反射的底层机制,降低 java.lang.reflect 和 java.lang.invoke API 的维护、开发成本。

互联网地址解析 SPI

为主机名和地址解析定义服务提供者接口 (SPI),以便 java.net.InetAddress 可以使用第三方解析器。

Java API 文档中的 JEP 代码片段

为 JavaDoc 的标准 Doclet 引入了 @snippet 标签,以简化在 API 文档中的示例源代码。

后续 JDK 更新预告

Vector API (第三次进行孵化)

为开发人员提供 API 用于提供可扩展的 CPU 架构,相比于非可扩展的处理器上在性能更加出众。

外部函数和内存 API(第二次进行孵化)

引入一个 API,使 Java 程序能够与其他的数据进行互操作。通过有效调用外部函数(即 JVM 之外的代码),以及安全访问外部内存(即不受 JVM 管理的内存),该 API 使 Java 程序能够调用本地库并处理本地数据,而没有 JNI 的脆弱性和危险。

Switch 的模式匹配(第二次进行预览)

通过对 switch 表达式和语句的模式匹配,以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 中,允许针对多个模式测试表达式,每个模式都有特定的操作,这样就可以简洁安全地表达复杂的面向数据的查询。

弃用 Finalization,以便在未来删除

Finalization 目前任然保持默认启用状态,但可以禁用它以方便测试。在未来的版本中,它将被默认禁用,并在之后被彻底删除。依赖于 Finalization 的库和应用程序的维护者应该考虑迁移到其他资源管理技术,如 try-with-resources 语句。

jdk

相关文章
|
2月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
65 2
|
15天前
|
安全 Java 编译器
JDK 10中的局部变量类型推断:Java编程的简化与革新
JDK 10引入的局部变量类型推断通过`var`关键字简化了代码编写,提高了可读性。编译器根据初始化表达式自动推断变量类型,减少了冗长的类型声明。虽然带来了诸多优点,但也有一些限制,如只能用于局部变量声明,并需立即初始化。这一特性使Java更接近动态类型语言,增强了灵活性和易用性。
95 53
|
7天前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
|
1月前
|
缓存 Java Maven
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
如何解决Java项目中因JDK版本不匹配导致的编译错误,包括修改`pom.xml`文件、调整项目结构、设置Maven和JDK版本,以及清理缓存和重启IDEA。
50 1
java: 警告: 源发行版 11 需要目标发行版 11 无效的目标发行版: 11 jdk版本不符,项目jdk版本为其他版本
|
28天前
|
设计模式 Java API
[Java]静态代理与动态代理(基于JDK1.8)
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
24 0
[Java]静态代理与动态代理(基于JDK1.8)
|
1月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
27 1
|
1月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
27 1
|
2月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
2月前
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
92 10
|
2月前
|
存储 Java 开发者
【Java新纪元启航】JDK 22:解锁未命名变量与模式,让代码更简洁,思维更自由!
【9月更文挑战第7天】JDK 22带来的未命名变量与模式匹配的结合,是Java编程语言发展历程中的一个重要里程碑。它不仅简化了代码,提高了开发效率,更重要的是,它激发了我们对Java编程的新思考,让我们有机会以更加自由、更加创造性的方式解决问题。随着Java生态系统的不断演进,我们有理由相信,未来的Java将更加灵活、更加强大,为开发者们提供更加广阔的舞台。让我们携手并进,共同迎接Java新纪元的到来!
65 11
下一篇
无影云桌面