百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Java平台,标准版 Oracle JDK 9中的新功能(下)

mhr18 2024-09-17 23:15 17 浏览 0 评论

JDK 9 中核心库的新功能

JEP 102:进程API更新

改进用于控制和管理操作系统进程的API。

所述ProcessHandle类提供的过程的本机过程ID,自变量,命令,开始时间,累积CPU时间,用户,父进程,和后代。该类还可以监视进程的活动并销毁进程。使用ProcessHandle.onExit方法,CompletableFuture类的异步机制可以在进程退出时执行一个操作。

请参阅的Java平台,标准版Java的核心库开发指南中进程API,java.lang.Process和java.lang.ProcessHandle。

JEP 193:变量操作

定义一个标准的方法来调用对象字段和数组元素上的java.util.concurrent.atomic和sun.misc.Unsafe操作的等价物。

定义一组标准的外围操作,由VarHandle静态方法组成,可以对内存排序进行细粒度的控制。这是sun.misc.Unsafe的替代方法,它提供了一组非标准的外围操作。

定义标准可达性外围操作,以确保引用的对象保持强力的可访问性。

JEP 254:紧凑型字符串

对字符串采用更节省空间的内部表示。以前,String类在char数组中存储字符,每个字符使用两个字节(16位)。String类的新内部表示是一个字节数组加上一个编码标志字段。

这完全是一种实现变更,而不改变现有的公共接口。

请参阅Java Platform,Standard Edition Tools ReferenceCompactStrings中的java命令选项。

JEP 264:平台日志API和服务

定义平台类可用于记录消息的最小记录API,以及消息者的服务接口。库或应用程序可以提供此服务的实现,将平台日志消息路由到其选择的日志记录框架。如果没有提供实现,则使用基于java.util.logging API 的默认实现。

JEP 266:更多并发更新

添加在JDK 8中引入的未来并发更新到JEP 155:并发更新,包括可互操作的发布 - 订阅框架和对CompletableFuture API的增强。

JEP 268:XML目录

添加标准XML目录API,该API支持结构化信息标准(OASIS)XML目录1.1版标准的组织。API定义了目录和目录解析器抽象,可以用作内部或外部解析器,JAXP处理器可以接受解析器。

使用内部目录API的现有库或应用程序将需要迁移到新的API以利用新功能。

见XML目录API的Java平台,标准版Java的核心库开发人员指南。

JEP 269:集合的便利工厂方法

使用少量元素创建集合和映射的实例更容易。对于List,Set和Map接口,新的静态工厂方法使得创建这些集合的不可变实例变得更为简单。

例如:

Set<String> alphabet = Set.of(“a”,“b”,“c”);

请参阅在Java平台“标准版Java核心库开发人员指南”中创建不可变的列表,集合和映射。有关API文档,请参阅不可变静态工厂方法,不可变Map静态工厂方法和不可变列表静态工厂方法。

JEP 274:增强方法句柄

增强java.lang.invoke包的MethodHandle,MethodHandles和MethodHandles.Lookup类,以简化常见的用例并实现更好的编译器优化。

补充包括:

? 在java.lang.invoke包中的MethodHandles类中,为循环和try / finally块提供新的MethodHandle组合器。

? 使用新的MethodHandle组合器来增强MethodHandle和MethodHandles类的参数处理。

? 在MethodHandles.Lookup类中实现接口方法和可选的超类构造函数的新的查找方式。

JEP 277:增强Deprecated

修改@Deprecated注释,以提供有关规范中API的状态和预期配置的更好信息。增加了两个新元素:

? @Deprecated(forRemoval = true)表示将在Java SE平台的将来版本中删除该API。

? @Deprecated(since =“version”)包含Java SE版本字符串,用于指示何时不推荐使用API元素,这些字符串在Java SE 9及更高版本中已被弃用。

例如:@Deprecated(since =“9”,forRemoval = true)

@Deprecated注解在核心平台中已更新。

您可以使用新工具jdeprscan来扫描类库(JAR文件),以使用已弃用的JDK API元素。

请参阅在Java平台,标准版Java的核心库开发人员指南中增强弃用。

请参阅在Java平台,标准版工具参考中jdperscan。

JEP 285:自旋等待提示

定义一个API,使Java代码能够提示自旋循环正在执行。自旋循环重复检查条件是否为真,例如可以获取锁定,之后可以安全地执行一些计算,然后释放锁定。这个API纯粹是一个提示,并且没有语义行为的要求。请看Thread.onSpinWait的方法。

JEP 290:过滤进入的序列化数据

允许对对象序列化数据的传入流进行过滤,以提高安全性和鲁棒性。对象序列化客户端可以更容易地验证其输入,并且导出的远程方法调用(RMI)对象也可以更容易地验证调用参数。

序列化客户端实现在ObjectInputStream上设置的过滤器接口。对于RMI,通过RemoteServerRef导出对象,该RemoteServerRef将MarshalInputStream上的过滤器设置为在未调用时验证调用参数。

JEP 259:Stack-Walking API

提供了一个Stack-Walking API,允许轻松过滤和延迟地访问堆栈跟踪中的信息。

该API支持两个短步,停止在与给定条件匹配的框架上,以及遍历整个堆栈的漫步。在符合给定标准的帧上停止,如果调用者只对堆栈中的顶部帧感兴趣,则避免检查所有帧的成本。当堆栈步行器配置为这样时,API可以访问Class对象。请参阅java.lang.Stackwalker类。

JEP 255:合并所选Xerces 2.11.0更新到JAXP

更新JDK以支持2.11.0版本的Xerces解析器。公共JAXP API没有变化。

更改在Xerces 2.11.0的以下类别中:数据类型,DOM L3序列化程序,XPointer,目录解析器和XML模式验证(包括错误修复,但不是XML模式1.1开发代码)。

Nashorn在JDK 9中的新功能

这些是JDK 9中的Nashorn增强功能。

JEP 236:Nashorn的解析器API

使应用程序,特别是IDE和服务器端框架能够解析和分析ECMAScript代码。

使用Parser类中的方法从字符串,URL或文件解析ECMAScript代码。这些方法返回一个CompilationUnitTree的实例,它表示ECMAScript代码作为抽象语法树。

包jdk.nashorn.api.tree包含Nashorn解析器API。

JEP 292:在Nashorn中实现所选的ECMAScript 6功能

实现了第六版ECMA-262(也称为ECMAScript 6)或简称ES6 引入的许多新功能。

实施的功能包括:

? 模板字符串

l? et,const和块范围

? 迭代器和for..of循环

? Map,Set,WeakMap和WeakSet

? 符号

? 二进制和八进制文本

JDK 9 中客户端技术的新功能

这些是JDK 9中的客户端技术增强功能。

JEP 251:多分辨率图像

使一组具有不同分辨率的图像被封装到单个多分辨率图像中。这对应用程序来说适用于在运行时分辨率可能会从大约96dpi到300dpi变化的显示设备。

接口java.awt.image.MultiResolutionImage将一组具有不同分辨率的图像封装到单个多分辨率图像中,使应用程序能够轻松地操作和显示具有分辨率变体的图像。

JEP 253:准备用于模块化的JavaFX UI控件和CSS API

为JavaFX UI控件和CSS功能提供公共API,以前只能通过内部软件包提供,但由于模块化而无法访问。

新包javafx.scene.control.skin由一组类提供每个UI控件的皮肤(或外观)的默认实现。

新类CssParser是一个返回一个Stylesheet对象的CSS解析器,它可以更好地控制应用程序的CSS样式。它是CSS API(javafx.css包)的一部分。CSS API包括新的支持类,包括解析器使用的一组标准转换器; 参阅javafx.css.converter包

JEP 256:BeanInfo注释

@beaninfo使用注释类型JavaBean,BeanProperty和SwingContainer替换Javadoc标记。

这些注释类型在运行时在BeanInfo生成期间设置相应的特征属性。因此,您可以更容易地直接在Bean类中指定这些属性,而不是为每个Bean类创建一个单独的BeanInfo类。它还可以删除自动生成的类,这使得更容易模块化客户端库。

JEP 262:TIFF图像I / O

将标签图像文件格式(TIFF)作为标准读取和写入添加到javax.imageio包中。新包javax.imageio.plugins.tiff提供了简化TIFF元数据可选操作的类。

JEP 263:Windows和Linux上的HiDPI Graphics

在Windows和Linux上自动缩放和调整AWT和Swing组件,以实现高位数/英寸(HiDPI)显示。

JDK已经在OS X上支持HiDPI“视网膜显示”。

在此版本之前,在Windows和Linux上,Java应用程序基于像素进行了大小和渲染,即使在可以具有传统显示器的二至三倍像素密度的HiDPI显示器上也是如此。这导致GUI组件和窗口太小,无法读取或使用。

JEP 272:平台特定的桌面功能

向类java.awt.Desktop添加其他方法,使您能够与桌面交互,包括以下内容:

? 显示自定义关于和首选项窗口。

? 处理打开或打印文件列表的请求。

? 处理打开URL的请求。

? 打开本机帮助查看器应用程序。

? 设置默认菜单栏。

? 启用或禁用应用程序突然终止。

这些新方法替代了包含在OS X软件包com.apple.eawt中的内部API的功能,它们在JDK 9中默认不可访问。请注意,软件包com.apple.eio不再可访问。

JEP 283:在Linux上启用GTK 3

启用Java图形应用程序,无论是基于JavaFX,Swing还是抽象窗口工具包(AWT),都可以在Linux或Solaris上使用GTK +版本2或版本3。

默认情况下,Linux或Solaris上的JDK使用GTK + 2(如果可用)如果没有,它使用GTK + 3。

要使用特定版本的GTK +,请设置系统属性jdk.gtk.version。此系统属性的值可能为2,2.2或3.您必须在应用程序加载GTK +之前设置此属性,并且不得与较早由另一个工具包加载的GTK +版本冲突。

JDK 9 中的国际化新进展

这些是JDK 9中的国际化增强。

JEP 267:Unicode 8.0

支持Unicode 8.0。JDK 8支持的Unicode 6.2。

Unicode的6.3,7.0和8.0标准相结合引入10555个字符,29个脚本,和42个块,所有这些在JDK 9都被支持。

JEP 252:默认情况下启用CLDR区域设置数据

使用首先在JDK 8中添加的,公共区域设置数据存储库(CLDR),基于XML的区域设置数据,作为JDK 9中的默认语言环境数据。在以前的版本中,默认值为JRE。

要启用与JDK 8兼容的行为,请将系统属性java.locale.providers的值在CLDR之前设置为COMPAT

请参阅在Java平台,标准版国际指南中CLDR语言环境数据通过默认启用。

JEP 226:UTF-8属性文件

以UTF-8编码加载属性文件。在以前的版本中,加载属性资源束时使用了ISO-8859-1编码。UTF-8是一种非常方便的表示非拉丁字符的方法。

大多数现有的属性文件不应受到影响。

请参阅在Java平台,标准版国际指南中UTF-8属性文件。

文档辅助功能

? 有关Oracle对可访问性的承诺的信息,请访问Oracle辅助功能计划网站:http://www.oracle.com/pls/topic/lookup?ctx=acc& id=docacc。

? 访问Oracle支持

相关推荐

MySQL数据库中,数据量越来越大,有什么具体的优化方案么?

个人的观点,这种大表的优化,不一定上来就要分库分表,因为表一旦被拆分,开发、运维的复杂度会直线上升,而大多数公司和开发人员是欠缺这种能力的。所以MySQL中几百万甚至小几千万的表,先考虑做单表的优化。...

Redis的Bitmap(位图):签到打卡、用户在线状态,用它一目了然

你是不是每天打开APP,第一时间就是去“签到打卡”?或者在社交软件里,看到你的朋友头像旁边亮着“在线”的绿灯?这些看似简单的功能背后,都隐藏着一个有趣而高效的数据结构。如果让你来设计一个签到系统:用户...

想知道有多少人看了你的文章?Redis HyperLogLog几KB就搞定!

作为一名内容创作者,你每天最期待的,除了文章阅读量蹭蹭上涨,是不是还特别想知道,到底有多少个“独立用户”阅读了你的文章?这个数字,我们通常称为“UV”(UniqueVisitors),它比总阅读量更...

Redis的“HyperLogLog”:统计网站日活用户,省内存又高效的神器

你可能从未听过这个拗口的名字——“HyperLogLog”,它听起来就像是某个高深莫测的数学公式。但请相信我,理解它的核心思想并不难,而且一旦你掌握了它,你会发现它在处理大数据统计问题时,简直就是“救...

阿里云国际站:为什么我的云服务器运行缓慢?

本文由【云老大】TG@yunlaoda360撰写一、网络性能瓶颈带宽不足现象:上传/下载速度慢,远程连接卡顿。排查:通过阿里云控制台查看网络流量峰值是否接近带宽上限34。解决:升级带宽(如从1M提...

Java 近期新闻:Jakarta EE 11和Spring AI更新、WildFly 36.0 Beta、Infinispan

作者|MichaelRedlich译者|明知山策划|丁晓昀OpenJDKJEP503(移除32位x86移植版本)已从“ProposedtoTarget”状态进入到“T...

腾讯云国际站:怎样设置自动伸缩应对流量高峰?

云计算平台服务以阿里云为例:开通服务与创建伸缩组:登录阿里云控制台,找到弹性伸缩服务并开通。创建伸缩组时,选择地域与可用区,定义伸缩组内最小/最大实例数,绑定已有VPC虚拟交换机。实例模板需...

【案例分享】如何利用京东云建设高可用业务架构

本文以2022年一个实际项目为基础,来演示在京东云上构建高可用业务的整个过程。公有云及私有云客户可通过使用京东云的弹性IAAS、PAAS服务,创建高可用、高弹性、高可扩展、高安全的云上业务环境,提升业...

Spring Security在前后端分离项目中的使用

1文章导读SpringSecurity是Spring家族中的一个安全管理框架,可以和SpringBoot项目很方便的集成。SpringSecurity框架的两大核心功能:认证和授权认证:...

Redis与Java集成的最佳实践

Redis与Java集成的最佳实践在当今互联网飞速发展的时代,缓存技术的重要性毋庸置疑。Redis作为一款高性能的分布式缓存数据库,与Java语言的结合更是如虎添翼。今天,我们就来聊聊Redis与Ja...

Redis在Java项目中的应用与数据持久化

Redis在Java项目中的应用与数据持久化Redis简介:为什么我们需要它?在Java项目中,Redis就像一位不知疲倦的快跑选手,总能在关键时刻挺身而出。作为一个内存数据库,它在处理高并发请求时表...

Redis 集群最大节点个数是多少?

Redis集群最大节点个数取决于Redis的哈希槽数量,因为每个节点可以负责多个哈希槽。在Redis3.0之前,Redis集群最多支持16384个哈希槽,因此最大节点数为16384个。但是在Redi...

Java开发岗面试宝典:分布式相关问答详解

今天千锋广州Java小编就给大家分享一些就业面试宝典之分布式相关问题,一起来看看吧!1.Redis和Memcache的区别?1、存储方式Memecache把数据全部存在内存之中,断电后会挂掉,数据不...

当Redis内存不足时,除了加内存,还有哪些曲线救国的办法?

作为“速度之王”的Redis,其高性能的秘密武器之一就是将数据存储在内存中。然而,内存资源是有限且昂贵的。当你的Redis实例开始告警“内存不足”,或者写入请求被阻塞时,最直接的解决方案似乎就是“加内...

商品详情页那么多信息,Redis的“哈希”如何优雅存储?

你每天网购时,无论是打开淘宝、京东还是拼多多,看到的商品详情页都琳琅满目:商品名称、价格、库存、图片、描述、评价数量、销量。这些信息加起来,多的惊人。那么问题来了:这些海量的商品信息,程序是去哪里取出...

取消回复欢迎 发表评论: