JDK各个版本特性速览

本文详细介绍了JDK从1.5到11的主要更新特性,包括JDK 1.5的Java内存模型和泛型,JDK 1.6的并发优化和脚本语言支持,JDK 1.7的二进制字面量和NIO2.0,JDK 1.8的Lambda表达式和Stream API,JDK 9的模块化系统和新的HTTP客户端API,JDK 10的var关键字和GC改进,以及JDK 11的本地变量类型推断和HTTP Client API等。

JDK 1.5

很重要的一个版本。

  • 更新了Java内存模型(JMM)
    • 增强volatile语义
    • 增强final语义
  • 泛型
  • For-Each循环
  • 注解
  • 枚举
  • JUC包
  • lock接口

JDK 1.6

  • Desktop类和SystemTray类
  • JAXB2实现对象与XML之间的映射
  • StAX
  • Compiler API
  • 轻量级 Http Server API
  • 插入式注解处理API(Pluggable Annotation Processing API)
  • 用Console开发控制台程序
  • 对脚本语言的支持(如:ruby,groovy,javascript)
  • Common Annotations

并发相关:sychronized锁优化:偏向锁、轻量级锁、重量级锁

JDK 1.7

  • 二进制字面量
  • 数字字面量可以出现下划线
  • switch 语句可以用字符串
  • 泛型实例的创建可以通过类型推断来简化
  • try-with-resources 语句
  • 异常处理(捕获多个异常)
  • JSR203 NIO2.0(AIO)新IO的支持
  • JSR292与InvokeDynamic指令
  • Path接口、DirectoryStream、Files、WatchService(重要接口更新)
  • fork/join framework

JDK 8之后的更新内容,强烈推荐这篇文章:

聊聊 Java8 以后各个版本的新特性

JDK 1.8

  • Lambda
  • Stream
  • Optional
  • Date/Time API (JSR 310)
  • JVM的PermGen空间被移除:取代它的是Metaspace(JEP 122)。

JDK 9

  • 平台级modularity(原名:Jigsaw) 模块化系统
  • Java 的 REPL 工具: jShell 命令
  • 多版本兼容 jar 包(这个在处理向下兼容方面,非常好用)
  • 语法改进:接口的私有方法
  • 语法改进:UnderScore(下划线)使用的限制
  • 底层结构:String 存储结构变更(这个很重要)
  • 集合工厂方法:快速创建只读集合
  • 增强的 Stream API
  • 全新的 HTTP 客户端 API
    • HTTP/2, WebSocket
  • 其它特性

JVM相关:
G1是JDK 9默认GC。

JDK 10

  • 局部变量的类型推断 var关键字
  • GC改进和内存管理 并行全垃圾回收器 G1
  • 垃圾回收器接口
  • 线程-局部变量管控
  • 合并 JDK 多个代码仓库到一个单独的储存库中
  • 新增API:ByteArrayOutputStream
  • List、Map、Set新增API:copyOf(Collection)
  • 新增API:java.util.Properties
  • 新增API: Collectors收集器
  • 其它特性

JVM相关:

  • The default value for BiasedLockingStartupDelay has been changed to 0. (原本默认值是4000,即4s后启动偏向锁。该值貌似一直有调整,在JDK 1.6.0 update 12中,是500,参见https://www.oracle.com/technetwork/java/javase/itanium6u12-137891.html ) 即:JVM启动时延时启用偏向锁改为默认启动。参考JDK 10 Release Notes

JDK 11

2018年9月26日,Oracle 官方宣布 Java 11 正式发布。这是 Java 大版本周期变化后的第一个长期支持版本(LTS版本,Long-Term-Support,持续支持到2026年9月),非常值得关注。

  • 本地变量类型推断
  • 字符串加强
  • 集合加强
  • Stream 加强
  • Optional 加强
  • InputStream 加强
  • HTTP Client API
  • 化繁为简,一个命令编译运行源代码

JVM相关:
引入了实验性的ZGC

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值