目录
二、模块化系统: Jigsaw ——> Modularity
- ➢模块化系统
- ➢jShell命令
- ➢多版本兼容jar包
- ➢接口的私有方法
- ➢钻石操作符的使用升级
- ➢语法改进: try语句
- ➢String存储结构变更
- ➢便利的集合特性: of()
- ➢增强的Stream API
- ➢全新的HTTP客户端API
- ➢Deprecated的相关API
- ➢javadoc的HTML 5支持
- ➢java的动态编译器
一、jdk和jre目录结构的改变
1.1 jdk8的目录结构
1.2 jdk9的目录结构
二、模块化系统: Jigsaw ——> Modularity
模块(module)的概念,其实就是package外再裹一层, 不声明默认就是隐藏。因此,模块化使得代码组织上更安全,因为它可以指定哪些部分可以暴露,哪些部分隐藏。
实现目标
- ➢模块化的主要目的在于减少内存的开销
- ➢只须必要模块,而非全部jdk模块,可简化各种类库和大型应用的开发和维护
- ➢改进Java SE平台,使其可以适应不同大小的计算设备
- ➢改进其安全性,可维护性,提高性能
模块将由通常的类和新的模块声明文件(module-info.java) 组成。该文件是位于java代码结构的顶层,该模块描述符明确地定义了我们的模块需要什么依赖关系,以及哪些模块被外部使用。在exports 子句中未提及的所有包默认情况下将封装在模块中,不能在外部使用。
三、jshell命令
产生背景
像Python和Scala之类的语言早就有交互式编程环境REPL (read - evaluate - print -loop)了,以交互式的方式对语句和表达式进行求值。开发者只需要输入- -些代码,就可以在编译前获得对程序的反馈。而之前的Java版本要想执行代码,必须创建文件、声明类、提供测试方法方可实现。
设计理念
- 即写即得、快速运行
实现目标
- ➢Java9中终于拥有了REPL工具: jShell。 让Java可以像脚本语言一样运行,从控制台启动jShel,利用jShell在没有创建类的情况下直接声明变量,计算表达式,执行语句。即开发时可以在命令行里直接运行Java的代码,而无需创建Java文件,无需跟人解释”public static void main(String[] args)”这句废话。
- ➢jShelI也可以从文件中加载语句或者将语句保存到文件中。
- ➢jShell也可以是tab键进行自动补全和自动添加分号。
2021 06 21 补充
name = Object.requireNonNullElse(n, "unknown");
name = Object.requireNonNull(n, "The name cannot be null");