49. java9新特性

Java9 特性

Java 9 中有哪些不得不说的新特性?
模块化系统;jShell命令;多版本兼容jar包;接口的私有方法;钻石操作符的使用升级;语法改进: try语句;String存储结构变更;便利的集合特性: of();增强的Stream API;全新的HTTP客户端API;Deprecated的相关API;javadoc的HTML 5支持;Javascript引擎升级: Nashorn;Java的动态编译器

yi. JDK 和 JRE 目录结构的改变
在这里插入图片描述
在这里插入图片描述
二、 模块化系统: Jigsaw ➡ Modularity

谈到 Java 9 大家往往第一个想到的就是 Jigsaw 项目。 众所周知, Java 已经发展超过 20 年(95 年最初发布), Java 和相关生态在不断丰富的同时也越来越暴露出一些问题:

  • Java 运行环境的膨胀和臃肿。 每次JVM启动的时候,至少会有30~60MB的内存加载,主要原因是JVM需要加载rt.jar,不管其中的类是否被classloader加载,第一步整个jar都会被JVM加载到内存当中去(而模块化可以根据模块的需要加载程序运行需要的class)
  • 当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。 不同版本的类库交叉依赖导致让人头疼的问题,这些都阻碍了 Java 开发和运行效率的提升。
  • 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。 每一个公共类都可以被类路径之下任何其它的公共类所访问到,这样就会导致无意中使用了并不想被公开访问的 API。

本质上讲也就是说, 用模块来管理各个package,通过声明某个package 暴露,模块(module)的概念,其实就是package外再裹一层, 不声明默认就是隐藏。因此,模块化使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏。

实现目标

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、 Java的REPL工具: jShell命令

在这里插入图片描述
终端输入jshell进行体验

四、 语法改进:接口的私有方法

Java 8中规定接口中的方法除了抽象方法之外, 还可以定义静态方法
和默认的方法。 一定程度上, 扩展了接口的功能, 此时的接口更像是一个抽象类。
在Java 9中, 接口更加的灵活和强大, 连方法的访问权限修饰符都可以声明为private的了, 此时方法将不会成为你对外暴露的API的一部分。
在这里插入图片描述

五、 语法改进:钻石操作符使用升级

在这里插入图片描述
在这里插入图片描述

六、 语法改进: try语句

在这里插入图片描述
在这里插入图片描述

七、 String存储结构变更
在这里插入图片描述

八、 集合工厂方法:快速创建只读集合

在这里插入图片描述
Java9及之后:
在这里插入图片描述

九、 InputStream 加强
在这里插入图片描述

十、 增强的 Stream API

在这里插入图片描述
takeWhile():一旦不满足条件就立马退出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十一、 Optional获取Stream的方法
在这里插入图片描述
十二、 Javascript引擎升级: Nashorn
在这里插入图片描述

该博客图片来源于尚硅谷宋老师教学课件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值