JDK11 (LTS)长期支持版本
基于嵌套的访问控制
如果在一个类中嵌套了多个类,各个类可以直接访问彼此的私有成员。JDK11在private、public、protected的基础上,JVM又提供了新的访问机制:Nest。
,在反射时调用内部类的私有属性是,不再需要field.setAccessible(true);
动态类文件常量
Java的类型文件格式将被拓展,支持一种新的常量池格式:CONSTANT_Dynamic,加载CONSTANT_Dynamic会将创建委托给bootstrap方法。其目标是降低开发新形式的可实现类文件约束带来的成本和干扰。这是一个与常量池,bootstrap-method相关改变
改进Aarch64内联函数
改进现有的字符串和数组函数,并在Aarch64处理器上为java.lang.Math sin cos和log函数实现新的内联函数,专用的CPU架构可提高应用程序的性能
Epsilon — 一个无操作的垃圾收集器
-
JDK对这个特性的描述是:开发一个处理内存分配但是不实现任何实际内存回收机制的GC,一旦Java的堆内存被耗尽,JVM就直接关闭。
-
如果有
system.gc();
调用,实际上什么也不会发生垃圾对象的回收操作,因为没有内存回收,这个实现可能会警告用户尝试强制GC是徒劳的。
-XX:+UseEpsilonGC
开启,用于测试或者其他特殊场景
删除 Java EE 和 CORBA 模块
删除一下模块
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客户端
在JDK9中就应该引入了HTTPClient,不过一直处于孵化状态,到了JDK11,HTTPClient API结束了孵化状态,作为一个标准的API提供在java.net.http中,取代HttpURLConnection
Lambda本地变量类型推断(Local Var)
在Lambda表达式中,可以使用var关键字来标识变量,变量类型由编译器自行推断。
Curve25519 和 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加密算法
实现RFC 7539中指定的 ChaCha20 和 ChaCha20-Poly1305 两种加密算法。
启动但文件源代码程序
增强Java启动程序以运行作为单个Java源代码文件提供的程序,使用java HelloWorld.java
运行源代码文件
低开销的 Heap 分析
提供一种低开销的Java堆分配采样方法,得到堆分配的Java对象信息,可通过JVMTI访问。
-
足够低的开销,可以默认且一直开启;
-
能通过定义好的程序接口访问;
-
可以对所有分配进行抽样(例如,不限于在特定堆区域中的分配或以特定方式分配的分配)
-
可以以独立于实现的方式定义(即,不依赖于任何特定的GC算法或VM实现)
-
可以提供关于生存和死亡的Java对象的信息
支持 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引擎
如题
弃用Pack200工具和API
如题
其他参考