JDK11新特性

JDK11 (LTS)长期支持版本

基于嵌套的访问控制

181: Nest-Based Access Control

如果在一个类中嵌套了多个类,各个类可以直接访问彼此的私有成员。JDK11在private、public、protected的基础上,JVM又提供了新的访问机制:Nest。

,在反射时调用内部类的私有属性是,不再需要field.setAccessible(true);

动态类文件常量

309: Dynamic Class-File Constants

Java的类型文件格式将被拓展,支持一种新的常量池格式:CONSTANT_Dynamic,加载CONSTANT_Dynamic会将创建委托给bootstrap方法。其目标是降低开发新形式的可实现类文件约束带来的成本和干扰。这是一个与常量池,bootstrap-method相关改变

改进Aarch64内联函数

315: Improve Aarch64 Intrinsics

改进现有的字符串和数组函数,并在Aarch64处理器上为java.lang.Math sin cos和log函数实现新的内联函数,专用的CPU架构可提高应用程序的性能

Epsilon — 一个无操作的垃圾收集器

318: Epsilon: A No-Op Garbage Collector

  • JDK对这个特性的描述是:开发一个处理内存分配但是不实现任何实际内存回收机制的GC,一旦Java的堆内存被耗尽,JVM就直接关闭。

  • 如果有system.gc();调用,实际上什么也不会发生垃圾对象的回收操作,因为没有内存回收,这个实现可能会警告用户尝试强制GC是徒劳的。

-XX:+UseEpsilonGC开启,用于测试或者其他特殊场景

删除 Java EE 和 CORBA 模块

320: Remove the Java EE and CORBA Modules

删除一下模块

  • java.xml.ws (JAX-WS, plus the related technologies SAAJ and Web Services Metadata)
  • java.xml.bind (JAXB)
  • java.activation (JAF)
  • java.xml.ws.annotation (Common Annotations)
  • java.corba (CORBA)
  • java.transaction (JTA)

标准HTTP客户端

321: HTTP Client (Standard)

在JDK9中就应该引入了HTTPClient,不过一直处于孵化状态,到了JDK11,HTTPClient API结束了孵化状态,作为一个标准的API提供在java.net.http中,取代HttpURLConnection

Lambda本地变量类型推断(Local Var)

323: Local-Variable Syntax for Lambda Parameters

在Lambda表达式中,可以使用var关键字来标识变量,变量类型由编译器自行推断。

Curve25519 和 Curve448 算法的密钥协议

324: Key Agreement with Curve25519 and Curve448

如RFC 7748所述,使用Curve25519和Curve448实现密钥协议。

Unicode 10

327: Unicode 10

升级现有的平台的API,支持Unicode 10http://unicode.org/versions/Unicode10.0.0/标准。

飞行记录器

328: Flight Recorder

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

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

ChaCha20和Poly1305加密算法

329: ChaCha20 and Poly1305 Cryptographic Algorithms

实现RFC 7539中指定的 ChaCha20 和 ChaCha20-Poly1305 两种加密算法。

启动但文件源代码程序

330: Launch Single-File Source-Code Programs

增强Java启动程序以运行作为单个Java源代码文件提供的程序,使用java HelloWorld.java运行源代码文件

低开销的 Heap 分析

331: Low-Overhead Heap Profiling

提供一种低开销的Java堆分配采样方法,得到堆分配的Java对象信息,可通过JVMTI访问。

  • 足够低的开销,可以默认且一直开启;

  • 能通过定义好的程序接口访问;

  • 可以对所有分配进行抽样(例如,不限于在特定堆区域中的分配或以特定方式分配的分配)

  • 可以以独立于实现的方式定义(即,不依赖于任何特定的GC算法或VM实现)

  • 可以提供关于生存和死亡的Java对象的信息

支持 TLS 1.3

332: Transport Layer Security (TLS) 1.3

实现TLS协议1.3版本。(TLS允许客户端和服务端通过互联网以一种防止窃听,篡改以及消息伪造的方式进行通信)。

可伸缩低延迟垃圾收集器ZGC

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

ZGC处于实验阶段 ,无论开了多大的堆内存(128G,2T),保证低于10ms的JVM停顿,远胜于前一代的G1

  • GC是Java主要优势之一。然而,当GC停顿太长,就会开始影响应用的响应时间。消除或者减少GC停顿时长,Java将对更广泛的应用场景是一个更有吸引力的平台。此外,现代系统中可用内存不断增长,用户和程序员希望JVM能够以高效的方式充分的利用这些内存,并且无需长时间的GC暂停时间。
  • 今天,应用程序同时为数千甚至数百万用户提供服务的情况并不多见。这些应用程序需要大量内存,但是,管理所欲内存可能会轻易影响应用程序性能。为了解决这个问题,Java11引入了ZGC垃圾收集器作为实验性垃圾收集器的实现。
  • ZGC全称Z Garbage Collector,是一款可伸缩的低延迟、高并发的垃圾回收器,旨在实现以下目标:
    • 停顿时间不超过10ms。
    • 停顿时间不随heap大小或存活对象大小增大而增大。
    • 可以处理从几百G到几TB的内存大小,远远超过前一代的G1。
    • 最初支持64位系统。

通过-XX:+UnlockExperimentalVMOptions -XX:+UseZGC启用,ZGC目前只在Linux/x64上可用,如果有足够的需求,将来可能会增加对其他平台的支持。

弃用Nashorn JavaScript引擎

335: Deprecate the Nashorn JavaScript Engine

如题

弃用Pack200工具和API

336: Deprecate the Pack200 Tools and API

如题

其他参考

JDK 11 (java.net)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值