JDK11 新特性

根据软件服务公司New Relic 发布的《2022 年 Java 生态系统现状》报告中,Java 11已成为新的标准(占比48.44%)。

Java11是一个长期支持版本(Long-term supper version)。共包含17个JEP(JDK Enhancement Proposals,JDK增强提案)。

Java11 JEP:

  • JEP 181 Nest-Based Access Control(基于嵌套的访问控制)
  • JEP 309 Dynamic Class-File Constants(动态类文件常量)
  • JEP 315 Improve Aarch64 Intrinsics(改进 Aarch64 函数)
  • JEP 318 Epsilon, A No-Op Garbage Collector
  • JEP 320 Remove the Java EE and CORBA Modules(移除 Java EE 和 CORBA 模块)
  • JEP 321 HTTP Client (Standard)
  • JEP 323 Local-Variable Syntax for Lambda Parameters
  • JEP 324 Key Agreement with Curve25519 and Curve448(采用Curve25519 和 Curve448 算法实现的密钥协议)
  • JEP 327 Unicode 10
  • JEP 328 Flight Recorder
  • JEP 329 ChaCha20 and Poly1305 Cryptographic Algorithms(实现ChaCha20 和 Poly1305 加密算法)
  • JEP 330 Launch Single-File Source-Code Programs(启动单个Java源代码文件的程序)
  • JEP 331 Low-Overhead Heap Profiling
  • JEP 332 Transport Layer Security (TLS) 1.3(支持 TLS 1.3)
  • JEP 333 ZGC A Scalable Low-Latency Garbage Collector (Experimental)
  • JEP 335 Deprecate the Nashorn JavaScript Engine(弃用 Nashorn JavaScript 引擎)
  • JEP 336 Deprecate the Pack200 Tools and API(弃用 Pack200 工具及其 API)

JEP 318 Epsilon, A No-Op Garbage Collector

开发一个处理内存分配但不实现任何实际内存回收机制的 GC。一旦可用的 Java 堆用完,JVM 就会关闭。

目标

以内存占用和内存吞吐量为代价,提供具有有限分配限制和尽可能低的延迟开销的完全被动 GC 实现。一个成功的实现是一个独立的代码更改,不涉及其他 GC,并对 JVM 的其余部分进行最小的更改。

JEP 321 HTTP Client (Standard)

标准化JDK 9 中引入的孵化HTTP 客户端 API
对Http客户端进行标准化

示例代码:

private void send() throws IOException, InterruptedException {HttpRequest request = HttpRequest.newBuilder().uri(URI.create("https://www.baidu.com/")).timeout(Duration.ofSeconds(20)).header("Content-Type", "application/json")//.POST(HttpRequest.BodyPublishers.noBody()).GET()//.POST(HttpRequest.BodyPublishers.ofFile(Paths.get("file.json"))).build();HttpClient client = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).followRedirects(HttpClient.Redirect.NORMAL).connectTimeout(Duration.ofSeconds(20))//.proxy(ProxySelector.of(new InetSocketAddress("https://www.baidu.com", 80)))//.authenticator(Authenticator.getDefault()).build();//同步调用HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.statusCode());System.out.println(response.body());//异步调用CompletableFuture future = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);}

JEP 323 Local-Variable Syntax for Lambda Parameters

允许var在声明隐式类型 lambda 表达式的形式参数时使用

目标

将隐式类型的 lambda 表达式中的形式参数声明的语法与局部变量声明的语法对齐。

对于隐式类型的 lambda 表达式的形式参数,允许使用保留的类型名称var,以便:
(var x, var y) -> x.process(y)
相当于:
(x, y) -> x.process(y)

JEP 328 Flight Recorder

概括

为 Java 应用程序和 HotSpot JVM 故障排除提供低开销数据收集框架。

目标

  • 提供 API 用于将数据作为事件生成和使用
  • 提供缓冲机制和二进制数据格式
  • 允许配置和过滤事件
  • 为操作系统、HotSpot JVM 和 JDK 库提供事件

动机

故障排除、监控和分析是开发生命周期的组成部分,但有些问题只发生在生产中,在涉及真实数据的高负载下。

Flight Recorder 记录源自应用程序、JVM 和操作系统的事件。事件存储在单个文件中,可以附加到错误报告并由支持工程师检查,从而允许在导致问题的期间对问题进行事后分析。工具可以使用 API 从记录文件中提取信息。

JEP 331 Low-Overhead Heap Profiling

概括

提供一种对 Java 堆分配进行采样的低开销方式,可通过 JVMTI 访问。

目标

提供一种从 JVM 获取有关 Java 对象堆分配信息的方法:

  • 开销是否足够低,可以默认连续启用,
  • 可通过定义明确的编程接口访问,
  • 可以对所有分配进行采样(即,不限于在一个特定堆区域中或以一种特定方式分配的分配),
  • 可以以独立于实现的方式定义(即,不依赖于任何特定的 GC 算法或 VM 实现),
  • 并且可以提供关于存活的和死亡的 Java 对象的信息。

JEP 333 ZGC A Scalable Low-Latency Garbage Collector (Experimental)

概括

Z 垃圾收集器,也称为 ZGC,是一种可扩展的低延迟垃圾收集器。

目标

  • GC 暂停时间不应超过 10ms
  • 暂停时间不会随着堆或 live-set 的大小而增加
  • 处理大小从几百兆字节到数 TB 不等的堆
  • 与使用 G1 相比,应用程序吞吐量减少不超过 15%

ZGC 的核心是一个并发垃圾收集器,这意味着所有繁重的工作(标记、压缩、引用处理、字符串表清理等)都是在 Java 线程继续执行时完成的。这极大地限制了垃圾收集对应用程序响应时间的负面影响。

ZGC 作为一个实验特性被包含进来。因此,要启用它,该-XX:+UnlockExperimentalVMOptions选项需要与该-XX:+UseZGC选项结合使用。

以下是使用 128G 堆在复合模式下比较 ZGC 和 G1 的典型基准分数(以百分比表示,根据 ZGC 的 max-jOPS 标准化)。(越高越好)ZGCmax-jOPS: 100%critical-jOPS: 76.1%G1max-jOPS: 91.2%critical-jOPS: 54.7%以下是来自同一基准测试的典型 GC 暂停时间。ZGC 设法保持远低于 10 毫秒的目标。请注意,确切的数字可能会有所不同(上下变化,但不显着),具体取决于所使用的确切机器和设置。(越低越好)ZGCavg: 1.091ms (+/-0.215ms)95th percentile: 1.380ms99th percentile: 1.512ms99.9th percentile: 1.663ms99.99th percentile: 1.681msmax: 1.681msG1avg: 156.806ms (+/-71.126ms)95th percentile: 316.672ms99th percentile: 428.095ms99.9th percentile: 543.846ms99.99th percentile: 543.846msmax: 543.846ms

参考资料

  1. 报告PDF:https://newrelic.com/sites/default/files/2022-04/new-relic-report-state-of-the-java-ecosystem-april-2022.pdf
  2. Oracle官网:https://www.oracle.com/java/technologies/javase/11-relnote-issues.html
  3. InfoQ:《架构师》2018年10月

JDK11占比第一?相关推荐

  1. 持续引领产业发展,华为云桌面连续6年位居国内市占率第一

    持续引领产业发展,华为云桌面连续6年位居国内市占率第一! 高铁上整理工作材料和邮件,网络不稳定,沟通效率低?为处理紧急工作随身携带PC不方便?项目组多人共创,材料不知道哪个是最新版?面临传统办公中出现 ...

  2. 连续八年包装饮用水市占率第一,这个品牌DTC是如何持续增长的?

    在国内连续八年保持中国包装饮用水市场占有率第一的龙头农夫山泉是如何抓住全国软饮市场的渠道增长机遇?本篇文章将会从全渠道零售实现DTC转型和私域平台蓄流,增加用户终身价值两个方面分析农夫山泉的增长未来. ...

  3. 市占率第一,是vivo的起点还是终点?

    随着这几年技术的发展成熟,智能手机似乎进入了增长瓶颈,为了缓解压力,多数手机厂商都在发展战略上进行了调整. 近期,vivo即将推出平板电脑的消息再次喧嚣尘上.不同于以往似是而非的传言,这次vivo似乎 ...

  4. 德国市占率第一的科沃斯携最新扫地机器人亮相IFA展

    德国时间9月1日,全球三大消费电子展(中国AWE.美国CES.德国IFA)之一的IFA即将在柏林拉开帷幕.作为全球最早的家用服务机器人研发和生产商之一,科沃斯机器人携旗下最新扫地机器人.擦窗机器人等产 ...

  5. 2020 年国内 Serverless 用户规模:阿里云占比第一,达 66%

    在中国信息通信研究院重磅发布的国内首个<云原生用户调查报告>中,阿里云 Serverless 产品凭借在双十一的技术锤炼和丰富的应用实践,在国内 Serverless 用户规模的占比达到 ...

  6. Amlogic连续三年居中国OTT芯片市占率第一

    美国当地时间2016年1月6日下午3点,拉斯维加斯会展中心.全球OTT多媒体应用处理器市场领导者--晶晨半导体(以下称"Amlogic")"合作伙伴大会"举行. ...

  7. java 报表_市占率第一的Java报表工具 - FineReport报表工具

    作为国产Java报表工具的优秀代表,FineReport报表工具不仅仅在报表设计的简单易用上表现出极大的优势,更在数据分析等复杂报表处理能力和报表管理等报表综合应用上凸显出其报表技术的成熟和领先. 一 ...

  8. 山东高考六选三学计算机选什么,山东高考改革后第一批六选三的选科数据出来了!物理选课率占39.52%!新政之下文科全面反超理科!...

    原标题:山东高考改革后第一批六选三的选科数据出来了!物理选课率占39.52%!新政之下文科全面反超理科! 近日,微信公众号"金乡教育发布"发布了题为<山东首届新高考内部会议P ...

  9. 浪潮服务器2016销售额,Gartner:2016年前三季度浪潮服务器销售额中国第一

    原标题:Gartner:2016年前三季度浪潮服务器销售额中国第一 根据Gartner公布的最新全球服务器市场调查报告显示,2016年前三季度浪潮出货量同比增长28%,为全球最高,份额位居全球第五.在 ...

最新文章

  1. ccf 高速公路(顺便当tarjan模板)
  2. struts2 validate验证
  3. Mozilla 扩展开发环境设置
  4. ARC中block块作为属性的使用笔记
  5. web常用正则表达式
  6. SQL Server加密存储过程的破解
  7. 掌握 Ajax,第 11 部分: 服务器端的 JSON
  8. 第1篇--基于jdk7和jdk8分析 JVM的内存区域
  9. python基础教程电子版-Python基础教程(第2版)PDF文档下载
  10. 松下服务器维修论坛,[分享] 松下空调电脑板维修手记
  11. JavaScript相关文章推荐
  12. C++ 读取和写入txt文件
  13. dell系统重装后无法进入系统_戴尔装win7后无法进入系统怎么办?戴尔装win7后进不了系统解决方法...
  14. Mysql各版本驱动包
  15. 第三周总结(2022.10.31~2022.11.4)
  16. 解决JDK13版本后IntelliJ IDEA导入新字体文件
  17. 扫地机器人灰尘堵住_为什么扫地机器人每天都能扫出很多灰尘?介绍最实用的扫地机器人...
  18. 全国高精度数字高程模型 精度为5m的dem
  19. Android图灵机器人的实现(一)
  20. XAMPP的下载与安装

热门文章

  1. EXCEL操作之:为纯数字编码添加前缀/后缀后以文本的方式保存
  2. ★电车难题的n个坑爹变种
  3. 机器人设计之一简单机械设计
  4. jsp+java中小学排课系统
  5. 双问号??在 js 中的应用
  6. 物联网毕业设计 单片机遥控小车
  7. 全球2023年最强和最弱护照排名公布,日本193分排在第一 | 美通社头条
  8. 欢迎来到大数据时代-----赶快来了解一些大数据的基础知识
  9. FlashVml2.0(WEB上的PhotoShop+Flash、VML最强开发工具)
  10. bat 自定义位数随机密码生成器