1.对Java9的初步了解

  1. Java9-jigsaw拼图

相当于Java8-lambda表达式。

2.      原本整个程序就是一个整体。

         a)      在Java8及更老的版本当中,集合,Scanner等,都放在了rt.jar包。

                   大小:60.6 MB

  1. 而在Java9当中,这些东西都不在一个rt.jar包当中了,而是设置在了Java.base.jmod

大小为15.9MB。是因为其余的45MB都已经设置在了别模块了!

  1. 模块化可以解决哪些问题?

本来没有的选,但是现在有的选了,只用一部分功能

a)       将一个整应用拆分成为4个模块,我们可以选择用某个功能。

b)       而这个模块运用方面:可以选择设置公开内容,可以设置私有内容;即权限控制。

4.      java 8、java9的区别比较

         在一个jar包当中,都是可以随意访问。比如public,但是虽然为运用提供了便利,但是确是把运用条件给随意化了,jar包可以被任意访问。

         但是在Java9可以运用模块化,对模快施加更加精确地权限控制。

2.Module-info.java

1.·一个全新的描述文件,他不是类,也不是interface,此文件只是比package更大的组织配置文件。

2.·它在Java9中,加了一个基本模快配置文件,但它也就是一个配置文件。

exports 对外暴露的包路径(模块外可见)

requires 需要依赖的模块名称(也就是jar包依赖)

Java9_jar包

3      Java 9中的模块非常多,但是只有一个模块不需要设置,就可以被默认实现访问。

3.将IDEA项目改造为java模快

  1. 如何改造成java模快的文件呢?
  1.  New  project 然后删除src文件
  2. 创建一个moudle文件

Java9_java_02

然后然后这并不是java9中的模快,它只是idea工具中的文件夹而已。

  1. 接下类继续下一步操作才能把一个文件编程一个java9当中的模块:

Java9_配置文件_03

  1. 设置模块中的依赖和权限

Java9_配置文件_04

在模块化one中,首先类前堤是publi,然后想要出包,被别的模块访问,可以在util文件中设置一下exports.

  1. 在two的模块中,想要访问one的类方法,虽然已经在utilCan文件中设置了exports,但是想要访问one,还得关联一下,找到demo01,(因为demo02没有设置exports,所以在two模块中自然无法访问)如下操作:

Java9_java_05

Java9_jar包_06

在这个过程中,就算你已经在two模块中,导入了包,愣写也是无法用到one模块中的东西,因为没有exports。

4.模块的服务提供与服务消费

面向接口编程

Java9_jar包_07

就是CDE三个模块随便变动,直接影响了B模块,但是影响不了A。以下是对上图的实现。

  1. 设置服务的提供者与消费者

现在one模块中创建一个API提供者,创建了一个抽象方法,在创建一个impl实现类,

并且对外实现exports API 提供者。

Java9_java_08

在two模块中实现uses MyService;

Java9_jar包_09

  1. 模块间使用接口服务

上述中,已经创建好了,API服务提供者,然后怎么让服务消费者运用?

需要一些API

  1. 需要一个加载器:就能拿到MyService,也能拿到实现类
  2. Java9_配置文件_10


Java9_配置文件_11