IT老哥,一个在大厂做高级Java开发的程序员,每天分享技术干货文章
虽然Java已经出到14了,但是大部分公司用的依然是Java8,用的不是Java8的小伙伴请举手
。Java8大家应该都很熟悉了。
接下来我们从Java9开始介绍他的新特性,一直到Java14,话不多说,快上车吧。
解决越来越臃肿的java运行环境,主要目的在于减少内存的开销,只须必要模块,而非全部jdk模块。
可简化各种类库和大型应用的开发和维护, 改进 Java SE 平台,使其可以适应不同大小的计算设备,改进其安全性,可维护性,提高性能。
从代码结构上来看,在包名同级下多了一个module-info.java文件
这个文件就是所谓的模块化文件
在 module
文件中直接 exports
关键字+包名路径就可以选择需要对外暴露的class
当外部文件需要使用这个的时候,通过requires
关键字 + 项目名
就可以导入该项目名下暴露的类
模块化系统是基于jar包
和类
之间存在的,目的在于尽可能的减少jar中多余类的加载,保证整体项目运行时的效率,对于项目运行肯定有一定的积极意义。
但是对于开发者来看,再一次增加代码的配置工作量,让本来就冗长的java 代码变得更加复杂,不见得会得到开发者的认可,当然如果对应的编译器能够得到进一步的改进,可能会稍微好一点
java的REPL工具:像 Python 和 Scala 之类的语言早就有交互式编程环境 REPL (read -evaluate - print - loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的 Java 版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。
这个对于初学者来说简直的福音啊!
jdk9,允许在接口中使用私有方法,java官方在近期版本对于接口的改动有点夸张:不断的开放接口的使用权限,说不准以后的接口跟抽象类有可能会合并在一起
钻石操作符,是官方给出的说法,其实就是之前版本的泛型操作符,图中的代码在java8中是编译不通过的,但是java9可以,这个主要涉及到匿名子类的时候
Java 9 移除了在 Java 8 中 被废弃的垃圾回收器配置组合(DefNew + CMS,ParNew + SerialOld,Incremental CMS)
同时把G1设为默认的垃圾回收器实现。替代了之前默认使用的Parallel GC
JVM 有了统一的日志记录系统,可以使用新的命令行选项-Xlog 来控制 JVM 上 所有组件的日志记录。该日志记录系统可以设置输出的日志消息的标签、级别、修饰符和输出目标等。
另外,CMS 垃圾回收器已经被声明为废弃。Java 9 也增加了很多可以通过 jcmd 调用的诊断命令。
对于写底层的人来说,try语法的改进绝对是福音。
java7之前
的时候的代码,一堆的重复代码
这个变化直接看源码就好了
String的实现底层由char[] 改为byte[],存储效率变高,调用效率同样变高
takeWhile
dropWhile
dropWhile():与 takeWhile() 整好相反,dropWhile取出的是后面的数据ofNullable
ofNullable(T t): t可以为nulliterator
iterator()重载的方法云服务器,云硬盘,数据库(包括MySQL、Redis、MongoDB、SQL Server),CDN流量包,短信流量包,cos资源包,消息队列ckafka,点播资源包,实时音视频套餐,网站管家(WAF),大禹BGP高防(包含高防包及高防IP),云解析,SSL证书,手游安全MTP,移动应用安全、 云直播等等。
好久没有用过jdk自带的httpclient了,要么用的是公司自己的封装的,要么是外来的工具包,可以考虑更新一下公司的httpclient工具类了