作者:Owen_Jia目前最新JDK 11,Oracle会一直维护到2026年 。
来源:https://my.oschina.net/timestorm/blog/3127044
JAVA11的新特性1、更新支持到Unicode 10编码
Unicode 10(version 10.0 of the Unicode Standard),Unicode是一个不断在演进的行业标准,Java一直在与它保持一致兼容 。
Java8已经更新了Unicode8.0-9.0,Java10更新后将达到16018个characters、18种blocks和10种scripts 。
2、将Http Client作为JDK标准发布、
原来作为jdk补充的http类放在jdk.incubator.http包中,现在统一改到java.net.http包下,核心类有下面4个 。
- HttpClient
- HttpRequest
- HttpResponse
- WebSocket

文章插图
【教你怎么从Java8升级到Java11】3、新增优化很多方法
- java.util.Collection增加新方法toArray(IntFunction),集合转数组的不二之选 。
- String增加linesstripLeadingstripTrailing等,一般项目都有StringUtils类 。
- java.io.InputStream增加构造方法
- java.nio包下面很大类扩展了方法ChannelsXXXBuffer等
推荐一篇博客:Java 11 新增 API 初探,总结的比较细致 。4、支持动态分配 Compiler Threads
JVM启动参数新增-XX:+UseDynamicNumberOfCompilerThreads,动态的控制编程线程的数量,原来的编译线程默认会启动大量造成cpu和memory浪费 。
5、GC能力大幅提升
低功耗可扩展GC(ZGC)模块是一个试验性的并发GC,在线程执行是ZGC会做一些重型回收工作,如string表清理等 。执行周期在10ms内,处理heaps大小从MB到TB范围,目前只能支持linux和x64系统,除此外还有个处理memory分配的Epsilon GZ,有兴趣的可以自己研究 。
6、堆分析能力提升:JVMTI
提供了一个低负载的堆分配采集分析程序:JVMTI,默认启动方案可以持续工作且不造成服务器压力,面向接口编程,能够收集活着和死去的对象信息 。
7、Transport Layer Security 1.3更新
简称TLS1.3是网络传输层协议,需要注意的它不兼容历史版本而且官方承认有风险,希望后续能不断优化 。
8、嵌套访问控制
嵌套是一种访问控制上下文,它允许多个class同属一个逻辑代码块,但是被编译成多个分散的class文件,它们访问彼此的私有成员无需通过编译器添加访问扩展方法 。
例子:

文章插图
这里要提一下Class类新增的方法:
// 获取宿主类 。非嵌套类的宿主类是它本身 。public Class<?> getNestHost()// 判断该类是否是某个类的嵌套类public boolean isNestmateOf(Class<?> c)// 返回某个类的嵌套类数组 。第 1 个固定是宿主类,之后的是该宿主类的嵌套成员,但不保证顺序,同时也会包含自身public Class<?>[] getNestMembers()9、新增和优化诸多加密算法
对PKCS#1 v2.2内提供更多算法,如RSASSA-PSS签名算法 。同时新增ChaCha20和Poly1305密码算法,通过Cipher.getInstance 使用 。还有 Curve25519和Curve448被添加 。AES128和265也支持了Kerberos 5 encryption 。
10、本地参数支持Lambda
简单理解就是lambda表达式的变量申明可以用var 。
lst.forEach((var x) -> {System.out.print(x); });11、单java文件加载运行
单个的*.java文件可以直接用java命令来执行,格式:java HelloWorld.java 。
12、飞行记录器分析工具
Jvm启动参数:-XX:StartFlightRecording
Java11中将这款原来商用的工具集成到jdk标准中了,它是一种低开销的事件信息收集框架,用来对应用程序和JVM 进行故障检查、分析,收集应用程序、JVM 和 OS的数据并保存在单独的事件记录文件中,故障发生后,能够从事件记录文件中提取出有用信息对故障进行分析 。
更多其他能力
还有很多其他更新就不一一介绍了,这些都是JDK标准包支持的基础能力,得感谢Oracle持续对JDK发布的支持 。完整的jdk11变化清单可以去官网查看;
从11开始移除的模块清单
- Removal of com.sun.awt.AWTUtilities Class
- Removal of Lucida Fonts from Oracle JDK
- Removal of Appletviewer Launcher
- Oracle JDK's javax.imageio JPEG Plugin No Longer Supports Images with alpha
- Removal of sun.misc.Unsafe.defineClass
- Removal of Thread.destroy() and Thread.stop(Throwable) Methods
- Removal of sun.nio.ch.disableSystemWideOverlappingFileLockCheck Property
- Removal of sun.locale.formatasdefault Property
- Removal of JVM-MANAGEMENT-MIB.mib
推荐阅读
- 从老虎开始进化 老虎的进化过程是什么
- 淘宝店铺被监管什么时候恢复是什么意思 淘宝店铺监管会怎么样
- “惊蛰吃梨”源从何起?惊蛰日梨子的正确打开方式
- 蛇仙一般找什么人上身 怎么看出来身上有蛇仙
- 年后不想上班怎么办?轻松几招就能满血复活
- 请问怎么开淘宝店 淘宝开店怎么开店铺
- 如何品饮俄罗斯红茶
- 刘伯温辅佐朱元璋多少年 刘伯温怎么投靠朱元璋的
- 冬季怎么预防小儿肺炎?专家推荐三个食疗方
- 毛衣发硬无弹性怎么办 毛衣太硬了要怎样才能变柔软
