Java 14 发布于2020年3月17日,此次更新包含了很多新功能,总共有16个JDK增强建议(JEP)和69个新的API元素,几个重要的新特性如下。
1. 替代 class 的关键字 record (预览特性)简化纯数据载体类的定义方式,使用record代替class定义的类,只需要声明属性,就可以获得属性的访问方法,以及toString,hashCode和equals方法。类似于使用class定义类,同时使用了lomobok插件,并打上@Getter,@ToString,@EqualsAndHashCode等注解。
以下是传统方式定义的类,这个类具有两个特征:(1) 类和所有属性都是final(2) 全部方法只有构造方法,和属性访问器(getXXX方法)组成。
publicfinal class Rectangle {
public final double length;
public final double width;
public Rectangle(double length, doublewidth) {
this.length = length;
this.width = width;
}
public double getLength() {
return length;
}
public double getWidth() {
return width;
}
}
那么这种类就很适合使用record来声明,只需一行语句:
publicrecord Rectangle(double length, double width) { }
使用record声明的类会自动拥有上面类中的三个方法,在这基础上还附送了equals,hashCode方法以及toString方法。其中toString方法中包括所有属性的字符串表示形式及其名称。
2. 空指针异常(NullPointerExceptions)精准提示
在JVM参数中添加-XX:+ShowCodeDetailsInExceptionMessages,可以在空指针异常中获取更为详细的调用信息,以便更快的定位和解决问题。
3. 增强的 switch 的成为正式功能Java 12引入的switch(预览特性)在Java 14中变为正式功能,不需要额外参数来启用,直接即可使用。主要是用->来替代以前的break,另外就是提供了yield在case中生成switch表达式的结果。
4. 增强的instanceof运算符
运算符instanceof主要用在强制类型转换前探测对象的具体类型,以便能够执行转换。新版的instanceof可以在判断是否属于具体类型的同时完成转换:
Object obj = "This is a string";
if(obj instanceof String str){//测试加转换一次搞定
//Java 14之前需要单独进行类型转换String str = (String)(obj);
System.out.println(str);
}
5. ZGC支持macOS和Windows系统
Java 11引入的ZGC作为继G1后的下一代算法,从支持Linux平台到开始支持macOS和Windows系统。
6. 打包工具jpackage
长期以来,Java开发人员一直希望构建可以直接安装在本机上的应用程序,而不是分发jar和配置类路径。使用jpackage工具,可以按照特定平台的用户使用习惯安装/卸载Java应用程序。该工具支持Windows上的msi和exe格式,macOS上的pkg和dmg格式,以及Linux上的deb和rpm格式。安装jpackage构建的应用程序时,最终用户不会注意到任何差异。
资料引用:
https://www.cnblogs.com/otis/p/12846441.html
https://www.jianshu.com/p/540e5338fd3c
https://www.jdon.com/51863
相关阅读 JDK的主要新特性 - Java 13 JDK的主要新特性 - Java 12 JDK的主要新特性 - Java 11 JDK的主要新特性 - Java 10 JDK的主要新特性 - Java 9续 JDK的主要新特性 - Java 9