羽论社|【JavaSE】Java语言的发展历史( 三 )


方法引用(含构造方法引用)方法引用提供了非常有用的语法 , 可以直接引用已有Java类或对象(实例)的方法或构造器 。 与lambda联合使用 , 方法引用可以使语言的构造更紧凑简洁 , 减少冗余代码
Optional类:Optional类已经成为Java8类库的一部分 , 用来解决空指针异常 。
StreamAPI:新添加的StreamAPI(java.util.stream)把真正的函数式编程风格引入到Java中
Date/TimeAPI(JSR310):加强对日期与时间的处理 。 Java8新的Date-TimeAPI(JSR310)受Joda-Time的影响 , 提供了新的java.time包 , 可以用来替代java.util.Date和java.util.Calendar 。 一般会用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration这些类 , 对于时间日期的改进还是非常不错的 。
Base64编码:在Java8中 , Base64编码成为了Java类库的标准 。 Base64类同时还提供了对URL、MIME友好的编码器与解码器 。
2.112017年9月21日 , JDK9发布
新特性及更新修改:
模块系统:模块是一个包的容器 , Java9最大的变化之一是引入了模块系统(Jigsaw项目)
REPL(JShell):交互式编程环境
多版本兼容JAR包:多版本兼容JAR功能能让你创建仅在特定版本的Java环境中运行库程序时选择使用的class版本 。 (这个在处理向下兼容方面 , 非常好用)
接口的私有方法:在接口中使用private私有方法 。 我们可以使用private访问修饰符在接口中编写私有方法
底层结构:String存储结构变更(这个很重要)
集合工厂方法:快速创建只读集合
增强的StreamAPI:改进的StreamAPI添加了一些便利的方法 , 使流处理更容易 , 并使用收集器编写复杂的查询
全新的HTTP客户端API:HTTP/2标准是HTTP协议的最新版本 , 新的HTTPClientAPI支持WebSocket和HTTP2流以及服务器推送特性
2.122018年3月20日 , Java10正式发布
新特性及更新修改:
局部变量的类型推断——var关键字
GC改进和内存管理并行全垃圾回收器G1
垃圾回收器接口
线程-局部变量管控
合并JDK多个代码仓库到一个单独的储存库中
新增API:ByteArrayOutputStream
新增API:List、Map、Set
新增API:java.util.Properties
新增API:Collectors收集器
2.132018年9月26日 , Java11正式发布
新特性及更新修改:
本地变量类型推断
字符串加强
集合加强
Stream加强
Optional加强
InputStream加强
HTTPClientAPI
化繁为简 , 一个命令编译运行源代码
2.142019年3月19日 , JDK12发布
2019年3月19日 , JDK12发布 。 主要特性包括:switch支持表达式、Java微测试套件(JMH等功能) 。 其中最引人注目的特性无疑是加入了由RedHat领导开发的Shenandoah垃圾收集器 , Shenandoah作为首个由非Oracle开发的垃圾收集器 , 其目标又与OracleJDK11中发布的ZGC几乎完全一致 , 两者天生就存在竞争 。 Oracle马上用实际行动抵制了这个新收集器 , JDK11发布时才说应尽可能保证OracleJDK和OpenJDK的兼容一致 , 转眼就在OracleJDK12里把Shenandoah的代码通过条件编译强行剔除掉 , 使其成为历史上唯一进入了OpenJDK发布清单 , 但在OracleJDK中无法使用的功能 。
2.152019年9月13日 , JDK13发布
2019年9月13日 , JDK13发布 , 主要特性包括:重新实现传统套接字API、switch表达式预览版、增强ZGC将未使用的堆内存返回给操作系统等 。
2.162020年3月17日 , JDK14发布
主要特性包括:switch表达式最终版、增强ZGC收集器支持Window/Mac、弃用ParallelScavenge+SerialOld的GC组合等 。


推荐阅读