Java 18 正式发布

简介: 就在昨天,3月22日,Oracle正式推出Java 18,最新的Java开发工具包 (JDK) 提供了九个JDK增强建议 (JEP) 的更新和改进。其中包括Java API文档 (JEP 413) 中添加代码片段的功能,这简化了在API文档中添加示例源代码,以及用于原型设计和测试的简单Web服务器 (JEP 408)。

哈喽,大家好,我是强哥。


就在昨天,3月22日,Oracle正式推出Java 18,最新的Java开发工具包 (JDK) 提供了九个JDK增强建议 (JEP) 的更新和改进。其中包括Java API文档 (JEP 413) 中添加代码片段的功能,这简化了在API文档中添加示例源代码,以及用于原型设计和测试的简单Web服务器 (JEP 408)。


28.png


强哥之前有为大家总结了Java 9~Java 17的重要更新点,有兴趣的大家可以去回顾一下:赶紧收藏,Java 9~Java 17主要更新都在这了


Java 18不是一个长期支持版本,不过其更新内容却也比较丰富,让我们来了解下Java 18中这几个大的更新和改进吧:


库的更新和改进


  • JEP 400:默认为 UTF-8 — 将 UTF-8 设置为标准 Java API 的默认字符集。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、语言环境和配置中保持一致。这项建议无异于定义了一个新的Java标准或JDK特定API。这项建议的支持者认为,许多环境中的应用程序不会受到Java将UTF-8作为默认字符集的影响,因为MacOS、许多Linux发行版和许多服务器应用程序已经支持UTF-8。然而,在其他环境中就不一定了,最明显的是依赖默认字符集的应用程序在处理默认字符集时发现,该字符集不是指定字符集后会产生数据表现不正确的问题。数据可能会悄悄发生损坏。预计这项建议主要影响的应该是亚洲地区使用Windows系统的用户身上,也可能是亚洲和其他地区的一些服务器环境。


  • JEP 408: Simple Web Server — 一个命令行工具和 API,用于启动仅提供静态文件的最小 Web 服务器。该工具可用于原型设计、临时编码和测试目的,尤其是在教育环境中。其目标包括一个开箱即用的静态HTTP文件服务器,具有简单的设置和最小的功能,以此来减少开发人员的激活能量,让JDK更加平易近人,并通过命令行提供一个默认的实现,以及一个小型的用于变成创建和定制的API。


  • JEP 416: Reimplement Core Reflection with Method Handles — 在 java.lang.invoke 方法句柄之上重新实现 java.lang.reflect.Method、Constructor 和 Field。通过让方法处理反射的底层机制,降低了 java.lang.reflect 和 java.lang.invoke API 的维护和开发成本。


  • JEP 418:Internet-Address Resolution SPI — 为主机名和地址解析定义服务提供者接口 (SPI),以便java.net.InetAddress可以使用平台内置解析器以外的解析器。


工具


  • JEP 413:Java API 文档中的 JEP 代码片段 —为 JavaDoc 的标准 Doclet 引入了 @snippet 标记,以简化在 API 文档中包含示例源代码。


后续 JDK 版本的预览和孵化器


  • JEP 417:Vector API(第三孵化器)——为开发人员提供 API,以可靠地利用提供可扩展矢量扩展的 CPU 架构。与非扩展处理器上的等效计算相比,这将带来卓越的性能。
  • JEP 419:外部函数和内存 API(第二个孵化器)——通过这个API,Java程序可以与外部代码和数据进行相互操作。通过调用外部函数(JVM以外的代码)以及安全的访问外部内存(JVM不管理的内存),该API将被允许Java调用本地库以及处理本地数据,而且还没有JNI(Java本地接口)那样的脆弱和危险。其谜底是用一个卓越的、纯粹的Java开发模型来取代JNI。这个API曾在JDK 17中得到实现。对于JDK 18,将根据反馈意见再次进行改进,如支持更多的载体,内存访问var句柄中的Boolean和MemoryAddress,以及将Java数组复制到内存段或从内存段内复制等功能。
  • JEP 420:Switch 的模式匹配(第二次预览版) ——通过对 switch 表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 允许针对多个模式测试表达式,每个模式都有特定的操作,因此可以简洁安全地表达复杂的面向数据的查询。


面向未来的 Java 程序


  • JEP 421: Deprecate Finalization for Removal ——Finalization 目前默认保持启用状态,但可以禁用以方便测试。在未来的版本中,它将默认禁用,在以后的版本中,它将被删除。依赖最终确定的库和应用程序的维护者应该考虑迁移到其他资源管理技术,例如try-with-resources 语句和cleaners。


强哥有话说


好啦,以上就是Java 18的主要更新点,小伙伴们有兴趣想要尝尝鲜的,现在也已经可以在Oracle官网上下载最新的Java 18了:


29.png


虽然说现在大多数公司用的还是Java 8,不过随着 SpringBoot 3.0,Elasticsearch8.0 官宣拥抱 Java 17,我们Java的下一个版本很可能会从Java 8直接跳到Java 17。那么,Java 18的简单了解还是有点用的哈。

相关文章
|
6月前
|
算法 搜索推荐 Java
Java8 到 Java17 升级指南(Bug大全)
Java8 到 Java17 升级指南(Bug大全)
210 0
|
Oracle JavaScript 前端开发
JAVA8之后的版本履历(上)
JAVA8之后的版本履历(上)
58 0
JAVA8之后的版本履历(上)
|
存储 编解码 Oracle
JAVA8之后的版本履历(下)
JAVA8之后的版本履历(下)
36 0
|
Java Android开发
java版本的RtpStream
java版本的RtpStream
67 0
|
Java 定位技术 Maven
RTree的使用-Java版本
教你使用Java版本的RTree做空间索引查询
497 0
RTree的使用-Java版本
|
设计模式 缓存 JavaScript
Java 开发思考总结(一)
一个语言很笨重,不是研发者要故意让这个语言变得很笨重,现在语言这么多,如果没有它自己的优势,是很难存活的。在只了解了一些JS、Python之类的动态语言之后,就盲目的下结论是不正确的。Java 笨重是有笨重的原因的,这是因为Java通常是用来做企业级的项目,或者说是复杂的大项目。
106 0
Java 开发思考总结(一)
|
Java API 数据库
Java的三个版本
Java的三个版本
|
开发框架 Oracle Java
第1篇:初识Java、Java的诞生与安装
1990 年:sun 公司(Sun Microsystems)启动绿色计划(绿色计划开始着手于发展消费性电子产品 ) 1992 年:创建 oak 语言(基于 C++ 的编程语言),oak 是 Java 的前身,oak 的英文叫做橡树 1994 年:James Gosling 参加硅谷大会,演示 Java 功能,震惊世界 1995 年 5 月 23 日:Java 第1个版本发布 2009 年:甲骨文(Oracle)公司收购 sun 公司,并发布 java7 如今:java8 被用得最多
170 0
第1篇:初识Java、Java的诞生与安装
|
SQL Java 程序员
Java16都快上线了,你该不会连Java8的特性都不会用吧?
2020年,Java16有了新的消息,预计将在2021年的3月16日正式发布。但是这一消息对于百分之九十的国内程序员来说都只是一个新闻而已,因为国内的绝大部分公司依然使用着Java8。这款发布于2014年的JDK版本深受各大公司的喜爱,最大的原因取决于它的稳定性。 即使如此,依然有一半以上的程序员对于Java8的特性不了解,于是我用一个周末的时间把JDK8的”新“特性肝了一遍,希望对大家有所帮助。
|
Oracle Java 关系型数据库
Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGJ0ho6O-1574729368504)(http://img.javastack.cn/18-4-25/8989863.jpg)] 前几天写了一篇 Java 8 即将在 2019 年停止免费向企业提供更新的文章,企图迫使用户向更新一代的 Java 版本升级,但让人遗憾的是,小编今天收到了 Oracle Java 版本的升级推送,装完居然是 Java 10 !!!
106 0