前段时间翻SpringBoot官方文档时,发现SpringBoot3.0的SNAPSHOT版本出来了,于是我打开了文档,在System Requirements中看到了有点出乎我意料的内容,SpringBoot3.0要求Java的版本是17及以上。
要知道,目前国内绝大部分公司都还在用着JDK8,绝大部分的程序员对JDK8以上的内容没有任何了解,包括我自己。于是我就有了去了解各个版本JDK的想法。本期视频就从JDK9聊起。
我已经将地址给大家找出来了:https://openjdk.org/projects/jdk9/
在openjdk的官网,列出了JDK9相比之前版本的新特征,我大致数了一下,有接近一百条新特征。想了解更多的小伙伴可以访问上面的网站,本文将介绍一些和实际编程相关的特性。
JDK9中添加了集合的便利工厂方法,用于创建具有少量元素的集合和映射的实例。
以前在创建带有几个数据的集合时,一般都是通过add方法创建,当然有一些工具类提供了更加方便的方法。
不过在JDK9中,可以通过更方便的方式创建不可变集合
这里要记住一个点,创建出来的集合是不可变的,如果想要对集合进行增删,则需要转换成可变集合类。
这是一个比较大的变化,在JDK9之前,String的内部存储结构一直都是char数据,到JDK9时变成了byte数组。官方的解释是这种方式更加节省空间,可提高String类和相关类的空间效率,同时在大多数场景下保持性能。
JDK8中,stream让一大段代码通过一行代码就实现,在JDK9中,更新了一些API,增加了takeWhile(),dropWhile(),ofNullable()等新方法。就可以通过takeWhile()获取到结果
,dropWhile()则是提供了一个与takewhile相反的方法。
在以前的JDK版本中,对进程的控制很弱。JDK9中新增了一个叫做ProcessHandle的类,返回操作系统提供的有关每个进程的信息,包括进程 ID、参数、命令、启动时间等。还可用于销毁进程并监控进程的活跃度。
以前写Java的一个共识是接口不能定义私有方法,否则就通不过编译。但是JDK9里增加了对接口私有方法的支持。但是接口中私有方法只能在接口内部的方法里面被调用。
在编程的学习中,即时反馈很重要,比如Scala、Python、JS等都具备交互式编程的能力,Java终于在JDK9的时候增加了这种交互式的编程工具JShell。
在JDK9的bin目录下执行.\jshell.exe,你就可以在命令行上编程了,对初学者而言十分友好。
JDK9中,G1收集器正式上位成为了默认的垃圾收集器,同时CMS垃圾收集器也被彻底删除。一般来说,限制 GC 暂停时间比最大化吞吐量更重要。对于大多数用户而言,切换到 G1 等低暂停收集器应该比当前默认的 Parallel GC 等面向吞吐量的收集器提供更好的整体体验。
这也是JDK9的一个新特性,在启动虚拟机之前将Java类编译为本机代码,目标是改善小型和大型 Java 应用程序的启动时间。但是目前这种提前编译的能力还处在一个刚出现的阶段,会在未来的版本中继续优化。
本文除了介绍一部分比较有意思的特性之外,更多的是成为一个引子,给那些想了解更新JDK的人群一个思路。
「艾尔登法环」梅琳娜手办开订 立体手办▪
万代「艾尔登法环」白狼战鬼手办开订 立体手办▪
「夏目友人帐」猫咪老师粘土人开订 立体手办▪
「五等分的新娘∬」中野三玖·白无垢版手办开订 立体手办▪
「海贼王」乌索普Q版手办开订 立体手办▪
良笑社「初音未来」新手办开订 立体手办▪
「黑岩射手DAWN FALL」死亡主宰手办开订 立体手办▪
「盾之勇者成名录」菲洛手办登场 立体手办▪
「魔法少女小圆」美树沙耶香手办开订 立体手办▪
「咒术回战」七海建人粘土人登场 立体手办▪
「五等分的新娘」中野二乃白无垢手办开订 立体手办▪
「为美好的世界献上祝福!」芸芸粘土人开订 立体手办▪
「公主连结 与你重逢」六星可可萝手办开订 立体手办▪
「女神异闻录5」Joker雨宫莲手办开订 立体手办▪
「间谍过家家」约尔・福杰粘土人登场 立体手办▪
「街角魔族 2丁目」吉田优子手办开订 立体手办▪
「火影忍者 疾风传」旗木卡卡西·暗部版粘土人登场 立体手办▪
「佐佐木与宫野」宫野由美粘土人开订 立体手办▪
「盾之勇者成名录」第2季拉芙塔莉雅手办开订 立体手办▪
「咒术回战」两面宿傩Q版坐姿手办开订 立体手办▪
「DATE·A·BULLET」时崎狂三手办开订 立体手办▪
「狂赌之渊××」早乙女芽亚里粘土人开订 立体手办▪
「魔道祖师」魏无羨粘土人开订 立体手办▪
「新·奥特曼」奥特曼手办现已开订 立体手办▪