山东房和城乡建设厅网站首页,想建设一个网站,安阳市城乡建设规划局网站,wordpress批量导入页面JDK 18 正式发布JDK 17 刚发布半年#xff0c;JDK 18 又如期而至#xff0c;JDK 版本号这算是成年了#xff1f;JDK 18 发布了#xff0c;栈长继续为大家解读#xff01;JDK 18 延续了 JDK 17 开创的免费策略#xff0c;但#xff0c;JDK 18#xff5e;20 不是长期支持… JDK 18 正式发布JDK 17 刚发布半年JDK 18 又如期而至JDK 版本号这算是成年了JDK 18 发布了栈长继续为大家解读JDK 18 延续了 JDK 17 开创的免费策略但JDK 1820 不是长期支持版本注意不要用在生产。最新 Oracle Java 支持路线图JDK 18 新特性一览ID特性说明1400:UTF-8 by Default默认 UTF-82408:Simple Web Server简单 Web 服务器3413:Code Snippets in Java API Documentation简化文档代码片段4416:Reimplement Core Reflection with Method Handles重新实现反射核心机制5417:Vector API (Third Incubator)矢量 API三次孵化中6418:Internet-Address Resolution SPI互联网地址解析 SPI7419:Foreign Function Memory API (Second Incubator)外部函数和内存 API二次孵化中8420:Pattern Matching for switch (Second Preview)switch 模式匹配二次预览中9421:Deprecate Finalization for Removal弃用 FinalizationJDK 18 这个版本提供了 9 个增强功能栈长接下来为大家一一解读。关注公众号Java技术栈持续分享最新、最主流的Java技术~JDK 18 新特性详细介绍1、400:UTF-8 by Default默认 UTF-8没错将 UTF-8 指定为标准 Java API 的默认字符集。在 JDK 17 及更早版本中默认字符集是在 Java 虚拟机运行时才确定的取决于不同的操作系统、区域设置等因素因此存在潜在的风险。从这个版本开始依赖于默认字符集的 API 会在所有实现、操作系统、语言环境和配置中保持一致。可以使用以下命令查看当前 JDK 的默认字符集java -XshowSettings:properties -version 21 | grep file.encodingfile.encoding UTF-8file.encoding.pkg sun.io在 JDK 中通过下面 API 获取当前 JDK 的默认字符集Charset.defaultCharset()我们都知道字符集一致的重要性所有地方默认字符集保持一致真的非常有用。2、408:Simple Web Server简单 Web 服务器提供一个命令行工具启动的迷你 Web 服务器$ 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/只限于静态文件类似于 Apache、Nginx 的静态服务器功能不过它要更简单功能极少设置简单。简单的、临时的测试用用我觉得还行不用去额外下载和配置其他的服务器组件以后用 Java 就能搞定了有兴趣的可以研究试用下3、413:Code Snippets in Java API DocumentationJava API 文档中支持 Snippets 代码片段增加了 snippet 标签简化 API 文档中包含示例源代码的情况。使用语法{snippet ...}以前是这样写的/*** pre{code* String[] y x.toArray(new String[0]);* }/pre**/JDK 18 中可以这样/*** The following code shows how to use {code Optional.isPresent}:* {snippet :* if (v.isPresent()) {* System.out.println(v: v.get());* }* }*/4、416:Reimplement Core Reflection with Method Handles重新实现反射核心机制Method HandlesJDK 18 使 Method Handles 作为反射的底层机制重新实现了 java.lang.reflect.Method、Constructor、Field 组件将大大降低反射 API 的维护和开发成本。另外最新最全的 Java 面试题整理好了大家可以在Java面试库小程序在线刷题。5、417:Vector API (Third Incubator)矢量 API三次孵化中Vector API 这是一个新的初始迭代孵化器模块模块包jdk.incubator.vector用于表示在运行时可靠地编译到支持的 CPU 架构上的最佳矢量硬件指令的矢量计算矢量运算可以提供优于等效标量计算的性能并且在机器学习、人工智能和密码学等领域非常普遍。本次增强的 API 允许以一种在运行时可靠地编译为支持的 CPU 架构上的最佳向量指令的方式表达向量计算。下个版本会转正吗6、418:Internet-Address Resolution SPI互联网地址解析 SPI定义了一个全新的 SPIservice-provider interface用于主要名称和地址的解析以便 java.net.InetAddress 可以使用平台之外的第三方解析器。7、JEP 419: Foreign Function Memory API (Second Incubator)外部函数和内存 API二次孵化中改进了 JDK 14 和 JDK 15 引入的 API通过有效调用外部函数即 JVM 之外的代码以及安全地访问外部内存JVM 之外的内存这些 API 可以调用本地库和处理本地数据与 Java 运行环境之外的代码和数据进行交互。8、JEP 420: Pattern Matching for switch (Second Preview)switch 模式匹配二次预览中instanceof 模式匹配的概念大家都清楚吧不清楚的可以看下这篇文章Java 14 之模式匹配非常赞的一个新特性这次在 JDK 17 中为 switch 语句支持模式匹配是个什么鬼来看下面的示例老代码写法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;
}模式匹配新写法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();};
}牛逼直接在 switch 上支持 Object 类型这就等于同时支持多种类型使用模式匹配得到具体类型大大简化了语法量这个功能还是挺实用的期待转正栈长会再详细写一篇关注公众号Java技术栈公众号第一时间推送哦。往期 Java 新特性教程可以去Java技术栈博客https://www.javastack.cn/categories/Java/9、JEP 421: Deprecate Finalization for Removal弃用 Finalization如现在使用 finalize 方法已经标识为废弃状态了。。finalize 大家应该都很清楚吧它可以帮助我们主动释放系统底层资源说实话没用过Java 是自动管理内存的使用它反而会导致潜在的系统安全风险没帮助不说反而是负担所以计划移除了。Finalization 现在默认是开启的但可以通过下面参数进行禁用--finalizationdisable后续的版本会默认禁用再逐步进行彻底删除我估计在下一个长期支持版本 JDK 21 中会彻底删除。不要再用 finalize 了以后面试问 finalize 和 final、finally 的区别也要好好回答了。可以考虑使用其他的资源管理技术如try-with-resourcesJDK 7 和 cleanersJDK 9关于这块栈长会再详细写一篇关注公众号Java技术栈公众号第一时间推送哦。总结本文主要介绍了 JDK/Java 18 的 9 个新特性基本面虽然现在用不上但了解和学习还是很有必要的技术更新太快不进则退。另外据最近的调查显示市面上的主流版本还是 JDK 8其实是 JDK 11但现在随着 JDK 17 的免费JDK 8 会逐渐被替代JDK 17 会成为下一代主流版本。往期推荐MySQL 精选 60 道面试题含答案SpringCloud Ribbon中的7种负载均衡策略SpringCloud OpenFeign Nacos正确打开方式