估计很多人都跟我一样,Java 8 的新特性还没搞明白,这 Java 14 就发布了。学习节奏妥妥滴跟不上 Java 的版本更新...
不用归不用,但是 Java 14 的新特性还是需要了解下的。跟同事在一起吃饭聊天的时候,也好装个逼。
https://www.oracle.com/technetwork/java/javase/14all-relnotes-5809668.html
页面内容很长,主要说了:
新增和增强的功能
核心类库:
会计货币格式支持
添加了一个新类java.lang.Record
阐明 ReadableByteChannel.read()方法和其他相关方法的规范
hotspot 虚拟机中的垃圾收集器:
垃圾收集器 ZGC 在 Windows、MacOS 的使用
并行 GC 的改进
G1 垃圾收集器对 NUMA-Aware 内存分配的支持
安全类库:
默认情况下禁用TLS、CertPath和Signed JAR中的弱命名曲线
Apache Santuario 库更新到版本 2.1.4
工具 javac:
默认情况下允许调用可发现的 javac 插件
ml/jaxp:
SAX ContentHandler 处理 XML 声明的新方法
删除的功能与选项
删除 sun.nio.cs.map 系统属性
删除 netscape.javascript.JSObject::getWindow 方法
删除并发标记和清除(CMS)垃圾收集器
删除不推荐使用的 java.security.acl api
删除 keytool -keyalg 的默认值
移除 Pack200 工具和 API
还包括:不推荐使用的功能、注意事项。最后补充了 Oracle JDK 与 Oracle Open JDK 之间的差异。
https://blogs.oracle.com/javamagazine/java-14-arrives-with-a-host-of-new-features
switch (event) {
case PLAY -> "User has triggered the play button";
case STOP, PAUSE -> "User needs a break";
default -> {
String message = event.toString();
LocalDateTime now = LocalDateTime.now();
yield "Unknown event " + message +
" logged on " + now;
}
};
String html = "<HTML>" +
"\n\t" + "<BODY>" +
"\n\t\t" + "<H1>\"Java 14 is here!\"</H1>" +
"\n\t" + "</BODY>" +
"\n" + "</HTML>";
JDK 14 可以这样
String html = """
<HTML>
<BODY>
<H1>"Java 14 is here!"</H1>
</BODY>
</HTML>""";
if (obj instanceof Group) {
Group group = (Group) obj;
// use group specific methods
List entries = group.getEntries();
}
JDK 14 可以这样
if (obj instanceof Group group) {
List entries = group.getEntries();
}
//JDK 空指针代码与 JVM 打印日志
String name = user.getLocation().getCity().getName();
Exception in thread "main" java.lang.NullPointerException
at NullPointerExample.main(NullPointerExample.java:5)
JDK 14 日志可以这样,提示更准确
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Location.getCity()" because the return value of "User.getLocation()" is null
at NullPointerExample.main(NullPointerExample.java:5)
https://openjdk.java.net/projects/jdk/14/
跟 Oracle JDK 14 发布的内容相似。
ConstXiong 备案号:苏ICP备16009629号-3