Java 17进行版本更见,支持网页开发、安卓开发、客户端开发等,为开发人员提供多功能服务。这里新增功能多多,轻松编程,让你体验感更好,有需要的可以使用!
Java 17功能
➜ JEP 409:密封类
密封类已添加到 Java 语言中。密封类和接口限制哪些其他类或接口可以扩展或实现它们。
密封类由JEP 360提出,并在 JDK 15 中作为预览功能提供。它们由JEP 397再次提出并进行了改进,并作为预览功能在 JDK 16 中提供。现在在 JDK 17 中,密封类正在最终确定,与 JDK 16 没有任何变化。
➜ JEP 406:开关模式匹配(预览)
使用 switch 表达式和语句的模式匹配以及对模式语言的扩展来增强 Java 编程语言。将模式匹配扩展到 switch 允许针对多个模式测试表达式,每个模式都有特定的操作,以便可以简洁安全地表达复杂的面向数据的查询。
➜ JEP 382:新的 macOS 渲染管线
Swing API 用于渲染的 Java 2D API 现在可以使用适用于 macOS 的新 Apple Metal 加速渲染 API。
当前默认禁用此功能,因此渲染仍使用 OpenGL API,Apple 已弃用这些 API,但仍可用并受支持。
要启用 Metal,应用程序应通过设置系统属性来指定其用途:
-Dsun.java2d.metal=true
Metal 或 OpenGL 的使用对应用程序是透明的,因为这是内部实现的差异并且对 Java API 没有影响。金属管道需要 macOS 10.14.x 或更高版本。将忽略在早期版本上设置它的尝试。
➜ 用于访问大图标的新 API
javax.swing.filechooser.FileSystemView.getSystemIcon(File, int, int)JDK 17 中提供了一种新方法 ,可以在可能的情况下访问更高质量的图标。完全针对Windows平台实现;但是,其他平台上的结果可能会有所不同,稍后会得到增强。例如,通过使用以下代码:
FileSystemView fsv = FileSystemView.getFileSystemView();
Icon icon = fsv.getSystemIcon(new File(“application.exe”), 64, 64);
JLabel label = new JLabel(icon);
用户可以获得更高质量的“application.exe”文件图标。此图标适用于创建在 HighDPI 环境中可以更好缩放的标签。
Java 17特色
➜ DatagramSocket 可以直接用于加入多播组
java.net.DatagramSocket此版本中已更新以添加对加入多播组的支持。现在定义joinGroup和leaveGroup方法加入和离开组播组。java.net.DatagramSocket已更新的类级 API 文档解释了如何DatagramSocket配置普通的以及如何使用它来加入和离开多播组。
此更改意味着DatagramSocketAPI 可用于多播应用程序,而无需使用旧版java.net.MulticastSocketAPI。该MulticastSocketAPI的工作和以前一样,虽然它的大多数方法已被弃用。
➜ JEP 356:增强型伪随机数生成器
为伪随机数生成器 (PRNG) 提供新的接口类型和实现,包括可跳转的 PRNG 和额外的一类可拆分 PRNG 算法 (LXM)。
➜ 理想图形可视化器的现代化
Ideal Graph Visualizer (IGV) 是一种以可视化和交互方式探索 HotSpot VM C2 即时 (JIT) 编译器中使用的中间表示的工具,已经现代化。增强功能包括:
支持在高达 JDK 15(IGV 底层 NetBeans 平台支持的最新版本)上运行 IGV
更快的基于 Maven 的 IGV 构建系统
稳定块形成、组移除和节点跟踪
默认过滤器中更直观的着色和节点分类
具有更自然默认行为的排名快速节点搜索
现代化的 IGV与早期 JDK 版本生成的图形部分兼容。它支持图形加载和可视化等基本功能,但可能会影响节点聚类和着色等辅助功能。
src/utils/IdealGraphVisualizer/README.md工具源目录中的文件中提供了有关构建和运行 IGV 的详细信息。
➜ 错误消息中的源详细信息
当 JavaDoc 报告输入源文件中的问题时,它会显示该问题的源代码行,以及包含^指向该行位置的插入符号 ( ) 的行,其方式类似于编译器 ( javac) 诊断消息。
此外,日志和其他“信息”消息现在被写入标准错误流,让标准输出流用于命令行选项特别请求的输出,例如命令行帮助。
工具/javadoc(工具)
➜ 新的“新 API”页面和改进的“弃用”页面
JavaDoc 现在可以生成一个页面,总结最近 API 的变化。要包含的最新版本列表是使用--since命令行选项指定的。这些值用于查找@since要包含在新页面上的具有匹配标签的声明。该--since-label命令行选项提供了“新API”页面的标题文本使用。
在汇总弃用项目的页面上,您可以查看按弃用项目所在版本分组的项目。
核心库
➜ JEP 412:外部函数和内存 API(孵化器)
介绍一个 API,Java 程序可以通过该 API 与 Java 运行时之外的代码和数据进行互操作。通过有效调用外部函数(即 JVM 之外的代码),以及安全地访问外部内存(即不由 JVM 管理的内存),API 使 Java 程序能够调用本地库和处理本地数据,而没有JNI。
Java 17亮点
➜ 控制台字符集 API
java.io.Console已更新以定义返回Charset控制台的新方法。返回的字符集可能与从Charset.defaultCharset()方法返回的字符集不同。例如,它返回IBM437whileCharset.defaultCharset()返回windows-1252Windows (en-US)。有关更多详细信息,请参阅CSR。
➜ 用于反序列化的 JDK 飞行记录器事件
现在可以使用 JDK Flight Recorder (JFR) 监视对象的反序列化。当启用 JFR 并且 JFR 配置包括反序列化事件时,每当正在运行的程序尝试反序列化对象时,JFR 都会发出一个事件。反序列化事件名为jfr.Deserialization,默认情况下是禁用的。反序列化事件包含序列化过滤器机制使用的信息;请参阅ObjectInputFilter规范。此外,如果启用了过滤器,则 JFR 事件指示过滤器是接受还是拒绝对象的反序列化。有关如何使用 JFR 反序列化事件的更多信息,请参阅文章监控反序列化以提高应用程序安全性。 有关使用和配置 JFR 的参考信息,请参阅JDK 任务控制文档的JFR 运行时指南和JFR 命令参考部分。
Java 17测评
Java 17这是新版本,功能进行升级!