Java11于2018年9月25日正式发布,Java11是继Java8之后的第一个LTS(Long-Term-Support)长期支持功能版本,与之前的版本(Java9和Java10)不同,它提供了长达3年的维护期,旨在提供稳定且长期的技术支持。
Java11的发布也标志着Java版本发布周期的调整,即从原来的每两年发布一个大版本变为每六个月发布一次,其中每年3月和9月为大版本发布节点。
Java11的技术支持将持续至2023年9月,而对应的补丁和安全警告等支持将持续至2026年。
新功能JEP
最新发布的JAVA11将带来很多重要特性,一共17个需要我们关注的JEP。
参考文档:https://openjdk.org/projects/jdk/11/
17个JEP如下:
- 181:Nest-Based Access Control
- 309:Dynamic Class-File Constants
- 315:Improve Aarch64 Intrinsics
- 318:Epsilon: A No-Op Garbage Collector
- 320:Remove the Java EE and CORBA Modules
- 321:HTTP Client (Standard)
- 323:Local-Variable Syntax for Lambda Parameters
- 324:Key Agreement with Curve25519 and Curve448
- 327:Unicode 10
- 328:Flight Recorder
- 329:ChaCha20 and Poly1305 Cryptographic Algorithms
- 330:Launch Single-File Source-Code Programs
- 331:Low-Overhead Heap Profiling
- 332:Transport Layer Security (TLS) 1.3
- 333:ZGC: A Scalable Low-Latency Garbage Collector(Experimental)
- 335:Deprecate the Nashorn JavaScript Engine
- 336:Deprecate the Pack200 Tools and API
新特性概览
Java 11带来了众多引人注目的新特性和改进,以下是关于Java 11新特性的详细概述:
新的字符串方法
Java11为字符串类添加了多个新方法,提升了字符串操作的便利性:
isBlank()
: 检查字符串是否为空白。lines()
: 将字符串按行分割为流。strip()
: 去除前导和尾随空白。stripLeading()
: 去除前导空白。stripTrailing()
: 去除尾随空白。repeat(int times)
: 重复字符串指定次数。
局部变量类型推断升级
在lambda表达式中引入了局部变量类型推断,允许使用 var
关键字来声明局部变量。
新的文件方法
Files.readString()
: 读取文件内容为字符串。Files.writeString()
: 将字符串写入文件。
集合增强
在集合中引入了 toArray(IntFunction<A[]>)
方法,可以更加方便地将集合转换为数组。
HTTP Client
新的HTTP客户端API(java.net.http) 提供了同步和异步请求,支持HTTP/1.1和HTTP/2。
垃圾回收器改进
引入了新的垃圾回收器,如Epsilon GC,这是一个开销极低的垃圾回收器,用于性能测试。
更好的启动性能
通过删除旧的JavaEE和CORBA模块,Java11提高了JVM的启动性能。
Launch Single-File Source-Code Programs
可以直接运行单个Java源文件,不需要显式编译。比如:java HelloWorld.java
。
Flight Recorder
Java Flight Recorder (JFR) 是一个用于分析Java应用程序的诊断和性能分析工具,现在对所有用户免费开放。
新的垃圾回收器接口
引入了ZGC (Z Garbage Collector),一个可扩展的低延迟垃圾回收器。