大佬整理的Java5~Java17新特性:https://segmentfault.com/a/1190000004419611
Java9往后的新特性中让我印象深刻的:
Java9:允许在接口中定义private方法; // Java8:允许在接口中定义default方法和static方法;
Java9:JShell,bin目录下的exe,可以像Python一样一行一行的运行程序,一个命令执行一次;
Java9:G1成为默认垃圾回收器;
Java10:局部类型推断,引入了var关键字,可定义任意数据类型的局部变量,根据其值会自动推断类型;
Java10:新的JIT(Just In Time)编译器:Graal;
Java10:移除javah工具(用于生成C语言头文件)。原因:Java8在javac工具中提供了高级功能以替代;
Java11:编译+运行,一个命令搞定:java xxx.java。不需要先javac xxx.java再java xxx了;
Java11:提供新的垃圾回收器:ZGC;
Java12:switch表达式支持类似lambda表达式的->写法了;
Java13:对Java12新特性switch的进一步优化;
Java13:支持三连双引号"""的文本段写法;
Java14:Java12提供的switch特性转正;
Java14:引入instanceof的模式匹配;
Java14:引入Records概念和record关键字,用于声明充当“数据载体”的特殊类类型,即领域模型类或 POJO 类。解释:https://www.91tech.org/archives/1738
Java15:提供sealed密封类以限制其实现类;
Java15:Java11提供的ZGC成为正式产品,但是需要手动开启,默认回收器仍然是G1;
Java15:Java13提供的"""文本段写法转正;
Java16:新的API,提供了jdk.incubator.vector来用于矢量计算;
Java16:OpenJDK源码的版本控制从Mercurial (hg) 迁移到git;
Java16:instanceof的模式匹配转正;
Java16:Java14提供的record关键字转正;
Java17:引入RandomGenerator及RandomGeneratorFactory提供更好的随机数生成;
Java17:引入switch模式匹配;
Java17:移除RMI,于Java15被废弃;
Java17:Java15引入的sealed封闭类转正;