java9新特性

作者: kevin0016 | 来源:发表于2018-07-26 13:45 被阅读178次

    1、模块化系统:Jigsaw->Modularity

    解决越来越臃肿 的java运行环境。

           主要目的在于减少内存的开销,只须必要模块,而非全部jdk模块,可简化各种类库和大型应用的开发和维护, 改进 Java SE 平台,使其可以适应不同大小的计算设备,改进其安全性,可维护性,提高性能

    代码示例

    1、从代码结构上来看,在包名同级下多了一个module-info.java文件

    图1-1

    这个文件就是所谓的模块化文件

    图1-2

    在module 文件中直接 exports关键字+包名路径就可以选择需要对外暴露的class

    当外部文件需要使用这个的时候

    图1-3

    这样通过requires关键字+项目名就可以导入该项目名下暴露的类

    个人看法:

        模块化系统是基于jar包和类之间存在的,目的在于尽可能的减少jar中多余类的加载,保证整体项目运行时的效率,对于项目运行肯定有一定的积极意义,但是对于开发者来看,再一次增加代码的配置工作量,让本来就冗长的java 代码变得更加复杂,不见得会得到开发者的认可,当然如果对应的编译器能够得到进一步的改进,可能会稍微好一点,

    2、jShell命令

    java的REPL工具:像 Python 和 Scala 之类的语言早就有交互式编程环境 REPL (read -evaluate - print - loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入一些代码,就可以在编译前获得对程序的反馈。而之前的 Java 版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。

    使用方法:jdk的bin目录下,有一个jshell文件,打开进入

    图2-1

    可以利用这个窗口进行java的代码段的运行

    图2-2

    这种方式通过import导包的,当时这个也有默认的导入的包,通过/imports命令就可以查看

    图2-3

    个人看法:这个对于初学者来说简直的福音啊!

    3、接口的私有方法

    jdk9,允许在接口中使用私有方法

    图3-1

    java官方在近期版本对于接口的改动有点夸张:不断的开放接口的使用权限,说不准以后的接口跟抽象类有可能会合并在一起

    4、钻石操作符的使用升级

    钻石操作符,是官方给出的说法,其实就是之前版本的泛型操作符

    图4-1

    图中的代码在java8中是编译不通过的,但是java9可以,这个主要涉及到匿名子类的时候

    5、语法改进:try语句

    对于写底层的人来说,try语法的改进绝对是福音。

    首先摆上java7之前的时候的代码

    图5-1

    一堆的重复代码,再来看看java8里面的代码

    图5-2

    需要把实例化的过程放到入口参数中,看起来简单了很多,接下来再看看java9的实现方式。

    图5-3

    代码看起来更加的舒服了

    个人看法:减少了很多的冗余代码,编码风格也更加健壮

    6、String存储结构变更

    这个变化直接看源码就好了

    图6-1

    String的实现底层由char[] 改为byte[],存储效率变高,调用效率同样变高

    图6-2

    7、便利的集合特性of()

    快速创建只读集合,java8 之前

    图7-1

    java9 的实现方式

    图7-2

    个人看法:看起来简单的不少

    8、增强的Stream API

            1、takeWhile

    图8-1

            2、dropWhile

                dropWhile():与 takeWhile() 整好相反,dropWhile取出的是后面的数据

            3、ofNullable

                ofNullable(T t): t可以为null

            4、iterator

                iterator()重载的方法

    个人看法:无

    9、全新的HTTP客户端API

    图9-1

    个人看法:好久没有用过jdk自带的httpclient了,要么用的是公司自己的封装的,要么是外来的工具包,可以考虑更新一下公司的httpclient工具类了

    11、Deprecated的相关API

    废弃了好多的api,不一一解释了

    备注:

    还有很多新的特性,多版本兼容jar包,智能java编译工具,统一的jvm日志系统等,就不一一说明了

    附上github地址

    https://github.com/kevin0016/java9

    相关文章

      网友评论

        本文标题:java9新特性

        本文链接:https://www.haomeiwen.com/subject/ynepmftx.html