2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次。该决定将在Java 9正式发布之后开始实行。
2018年3月,Java 10如期而至。目前已经是2018年9月份,Java 11 即将于本月25日正式发布。
在openjdk的官网上,JDK 11目前处于 Release Candidate Phase(最终测试版本)
release
Release Candidate Phase ,就是软件开发声明周期中的RC版本,整个软件的上线周期一般会经历Alpha、Beta、RC、GA等几个版本。
通常来说,RC就是软件的候选版本,RC版基本不会再加入新的功能,主要用于除错。
所以,基本RC版本上面有的特性,就是正式版的特性了。本文就基于当前最新的资料,整理总结一下JDK 11的新特性。
JDK 11 新特性
在openjdk的官网上,可以看到,新版本的JDK共有17个新特性:
features
简单介绍几个比较重要的新特性:
ZGC:可扩展的低延迟垃圾收集器
ZGC是一款号称可以保证每次GC的停顿时间不超过10MS的垃圾回收器,并且和当前的默认垃圾回收起G1相比,吞吐量下降不超过15%。
Epsilon:什么事也不做的垃圾回收器
Java 11还加入了一个比较特殊的垃圾回收器——Epsilon,该垃圾收集器被称为“no-op”收集器,将处理内存分配而不实施任何实际的内存回收机制。 也就是说,这是一款不做垃圾回收的垃圾回收器。这个垃圾回收器看起来并没什么用,主要可以用来进行性能测试、内存压力测试等,Epsilon GC可以作为度量其他垃圾回收器性能的对照组。大神Martijn说,Epsilon GC至少能够帮助理解GC的接口,有助于成就一个更加模块化的JVM。
增强var用法
Java 10中增加了本地变量类型推断的特性,可以使用var来定义局部变量。尽管这一特性被很多人诟病,但是并不影响Java继续增强他的用法,在Java 11中,var可以用来作为Lambda表达式的局部变量声明。
移除Java EE和CORBA模块
早在发布Java SE 9的时候,Java就表示过,会在未来版本中将Java EE和CORBA模块移除,而这样举动终于在Java 11中实施。终于去除了Java EE和CORBA模块。
HTTP客户端进一步升级
JDK 9 中就已对 HTTP Client API 进行标准化,然后通过JEP 110,在 JDK 10 中进行了更新。在本次的Java 11的更新列表中,由以JEP 321进行进一步升级。该API通过CompleteableFutures提供非阻塞请求和响应语义,可以联合使用以触发相应的动作。 JDK 11完全重写了该功能。现在,在用户层请求发布者和响应发布者与底层套接字之间追踪数据流更容易了,这降低了复杂性,并最大程度上提高了HTTP / 1和HTTP / 2之间的重用的可能性。
后记
以上就是关于Java 11的新消息,本次的这个版本的JDK,对于Java开发者的开发模式并没有很大的改变。既没有像Java 8一样开始支持函数式编程,也没有像Java 10一样引入var变量。
对于一线开发者来说,最大的几个好处就是新版本的GC效率会有所提升,时间会大大缩减。HTTP Client用起来会更加方便。可以在Lambda表达式中使用var。
对于本次升级,你有什么期待吗?
对了,你现在在用哪个版本,你还学的过来么?
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜?
欢迎工作一到五年的Java工程师朋友们加入Java架构开发:744677563
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!