java更新了什么_Java 14发布,来看看更新了什么吧

最近Java14发布了,这是Java目前最新的版本,同样更新了很多内容。让我们来看看更新了什么吧。

0fc08124ff99857d1c5ac0f0089efbea.png

instanceof模式匹配

Java在前几个版本中引入了模式匹配的功能,在最新的Java14中,现在instanceof运算符也支持模式匹配了。

原来使用instanceof运算符需要下面这样的形式:

if (obj instanceof String) { String str = (String) obj; // need to declare and cast again the object .. str.contains(..) ..}else{ str = ....}而现在可以使用更加简单的语法来判断变量的类型,无需多余的类型转换。

if (!(obj instanceof String str)) { .. str.contains(..) .. // no need to declare str object again with casting} else { .. str....}更易读的空指针异常

在Java中空指针异常是一件非常常见的事情,现在JVM提供了更加易读的空指针异常信息,显示了更多的有用信息,帮助开发者迅速定位到空指针异常的实际发生位置。

假设有如下的赋值语句。

a.b.c.i = 99;那么JVM会提供非常详细的异常信息,告诉我们到底哪个变量是空的。

Exception in thread "main" java.lang.NullPointerException: Cannot read field 'c' because 'a.b' is null. at Prog.main(Prog.java:5)正式版switch表达式

在Java12和13中引入了switch表达式这个特性,但是一直是预览版的,现在这项特性在Java14中已经变为正式特性了,可以放心使用了。

举个例子,在原来的Java中需要下面这样冗长的写法。

int numLetters;switch (day) { case MONDAY: case FRIDAY: case SUNDAY: numLetters = 6; break; case TUESDAY: numLetters = 7; break; case THURSDAY: case SATURDAY: numLetters = 8; break; case WEDNESDAY: numLetters = 9; break; default: throw new IllegalStateException("Wat: " + day);}现在代码可以大幅简化成下面的样子。

int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9;};打包工具(孵化阶段)

现在Java的打包工具jpackage提供了新功能,可以很方便的将jar包打包为系统专用的安装包,在linux上是deb和rpm,在macOS上是pkg和dmg,在Windows上是msi和exe。

Records(预览阶段)

现在Java终于也有类似Kotlin的data class这样的数据类了,我们只需要声明Records的字段,各种工具方法就会自动生成。Lombok也终于可以退休了。

举个例子,原来我们要编写一个很长的类。

final class Point { public final int x; public final int y; public Point(int x, int y) { this.x = x; this.y = y; } // toString、equals、hashCode等方法省略}现在仅需要一行声明即可。

record Point(int x, int y) { }当然Records也有一些限制,不能继承其他类,也不能是抽象类,所有字段都是final的。

多行字符串

这也是一个千呼万唤的功能,Java现在也支持多行字符串了。语法类似Python,连续三个双引号即可定义多行字符串。

原来要实现多行字符串只能不停的用加号连接。

String html = "\n" + "

\n" + "

Hello, world

\n" + " \n" + "\n";现在舒服了。

String html = """

Hello, world

""";垃圾回收器的变化

现在Java14已经移除了CMS(并发标记清理)垃圾收集器。同时ZGC现在在macOS和Windows已经是可用状态了,之前它仅仅在Linux上可用。

另外还有一些特性,有些冷门,我就不介绍了。大家有兴趣可以参考下面的地址。

https://www.techgeeknext.com/java/java14-features#jesJava14下载地址

在AdoptOpenJDK网站上,大家可以找到各种OpenJDK的下载。这也是我推荐大家下载的。较新版本的OpenJDK和OracleJDK几乎没有区别,基本不需要担心兼容性问题。而使用OpenJDK没有任何商业限制,大家可以放心下载。

https://adoptopenjdk.net/releases.html

489a2389a9a97b262cb3f115329be7fc.png

当然在开源中国上我还看到了一位朋友做的JDK下载镜像,国内的朋友可以用极快的速度来下载。这个镜像做的比较全,包含了各式各样的JDK,基本可以满足大家的需求。

https://www.injdk.cn/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值