进击的 Java(四)
上篇聊到 Java9 的模块化,Java9 的主要更新也就讲完了。紧接着是 10 和 11,这是两个匆忙的版本,没更新多少实质的内容,但因为这个阶段已经是半年一更新的节奏了,所以也没法放太多的东西,尤其是 Java10,几乎没更新什么,但又好像变化挺大的。下面一起来看看。
var 类型
首次出现在 Java10 中,也首次出现在 Java 中。开什么玩笑,Java 一向是一个严谨的语言,怎么会允许若类型的 var 变量出现呢?没错,这就是现实,但 var 只能是局部变量,全局变量还是得乖乖标明类型。以我来看,var 就应该普及,剩下的就交给编译器本身的类型推断。像 kotlin,上来就是 var 和 val,也没觉得突兀,也不影响它是个静态强类型语言。对于开发者来说,写一行代码能少敲好几次键盘。
Java10 的更新就是这个。
全新的 HTTP client API
这个 api 首次出现在 9 之中,当时并非一个稳定版本,在 11 中正式发布。原来 jdk 的 http 客户端真的难用,这也给了很多像 okhttp、restTemplate 和 feign 这样的第三方库极大的发挥空间,几乎是没人用原生的 http 客户端的。但现在不一样了,确实感觉是新时代的 API 了。
同步请求
异步请求
这是官方的 demo,好用的不像 jdk。
Lambda 表达式中支持 var 变量
Java10 支持了局部的 var,11 进一步让 Lambda 中也可以写 var 类型的局部变量,有了局部变量的命名之后也可以做一些事情,比如:
新的 String 方法
repeat:重复生成字符串
isBlank:不用在引入第三方库就可以实现字符串判空了
strip:去除字符串两边的空格,支持全角和半角,之前的 trim 只支持半角
lines:能根据一段字符串中的终止符提取出行为单位的流
ZGC
这在 11 中还是试验性的功能,一直到 15 发放出稳定版。据说性能很强。
以上就是 Java10 和 11 两个版本更新的内容。
评论