Java6至Java13重要特性摘录

参考官方release note,主要摘取各版本比较重要的特性,翻译水平有限,如有纰漏欢迎指出。

JDK6
  • 语法部分
  1. 实现接口方法时,可以加@override注解了,JDK5会报错
  • JVM部分
  1. Parallel Compaction 并行压缩(ParallelOld收集器),新的老年代收集器,启用参数:-XX:+UseParallelOldGC
  2. CMS优化:新提出并发System.gc()的概念,避免显式调用System.gc()的长停顿(和CMS的原则冲突),让CMS收集器来控制FullGc
    -XX:+ExplicitGCInvokesConcurrent
  3. 最小新生代空间从4M提升为16M

JDK7
  • 语法部分
  1. 字符串可作为switch表达式条件
  2. diamond:实例化时构造方法泛型参数可留空不必填写,编译器会自动推断。<>双尖括号戏称“钻石”
  • JVM部分
  1. 新的G1垃圾收集器(试验中),计划替代CMS

JDK8 大版本

  • 语法部分
  1. Lambda表达式,简化文法
  2. 接口加入default方法,新的default关键字
  3. Stream API ,处理集合很方便
  4. 提升HashMap查找性能:老版本,冲突键位置的节点均形成链表,查找复杂度为O(N),JDK8后,节点达到8个(TREEIFY_THRESHOLD)后转红黑树,查找效率是O(logN)
  5. 数组排序的sort方法
  6. 新的Base64工具包:
  Base64.Encoder base64Encoder = Base64.getEncoder(); 
   String encodedStr = base64Encoder.encodeToString(buffer);
  1. 并发包中加入多个新方法
  • JVM部分
  1. 移除永久代PermGen,以MetaSpace代替(JVM自动管理)
  2. 新的字节码指令,以支持接口default方法

JDK9

  1. 模块系统:jar包改为jmod文件,module-info.class文件放在每个模块根目录,来注明依赖关系,rt.jar和tools.jar移除,拆分到了新的模块中。
  2. 进一步改进G1收集器性能,G1作为默认收集器
  3. 以下GC的搭配被废弃了,已不可用
  • DefNew + CMS
  • ParNew + SerialOld
  • Incremental CMS
  1. 开始废弃CMS收集器,继续使用会有警告
  2. 集合创建时使用of工厂方法,更方便
  3. Deprecated注解现在可标注起始版本,@Deprecated(since=“9”, forRemoval=true)
  4. 接口中可添加private方法了,实现类无法实现,可供同接口的default方法调用。

JDK10

  1. G1性能增强:支持并行FullGc(与JDK6时CMS支持此特性类似)
  2. 提升Java在Docker容器的性能,更好的支持Docker环境运行
  3. var关键字,自动推断类型

JDK11 LTS版本

  1. 支持Unicode 10
  2. HTTP Client 标准化收录
  3. Collection接口加入默认方法toArray
  4. (试验)新的ZGC收集器,可控、低延迟:用户线程暂停不超10毫秒
  5. (试验)Epsilon收集器,(只管内存分配?我还不了解)
  6. Lambda表达式支持var关键字
  7. 移除Thread类的destroy() 和 stop() 方法

JDK12

  1. 支持Unicode 11
  2. ZGC支持类卸载

JDK13

  1. 支持Unicode 12.1
  2. ZGC支持退还未用堆内存给操作系统
  3. ZGC最大支持16TB的堆内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值