1、模块化概述:

无论是运行一个大型的软件系统,还是运行一个小的程序,即使程序
只需要使用Java的部分核心功能,JVM也要加载整个JRE环境。为了
让Java实现轻量化,Java9正式的推出了模块化统。Java被拆分成N
多个模块,并允许Java程序可以根据需要选择加载程序必须的Java
模块,这样就可以让Java以轻量化的方式来运行。

2、模块的基本使用

模块的基本使用步骤
(1)创建模块(按照以前的方式创建模块,创建包,创建类,定义方法)
为了体现模块的使用,我们创建2个模块。一个myOne,一个myTwo
(2)在模块的src目录下新建一个名为module-info.java的描述性文件,该文件专门定义模块名,访问权限,模块依赖等信息描述性文件中使用模块导出和模块依赖来进行配置并使用。
(3)模块中所有未导出的包都是模块私有的,他们是不能在模块之外被访问的。在myOne这个模块下的描述性文件中配置模块导出模块导出格式:export包名;
(4)一个模块要访问其他的模块,必须明确指定依赖哪些模块,未明确指定依赖的模块不能访问在myTwo这个模块下的描述文件中配置模块依赖模块依赖格式:requires 模块名;注意:写模块名报错,需要按下Alt+Enter,然后选择模块依赖
(5)在myTwo这个模块的类中使用依赖模块下的内容,但是记得要导包

3、模块服务的使用

服务:从Java6开始,Java提供了一种服务机制,允许服务者和服务使用者之间完成解耦
简单地说,就是服务使用者只面向接口编程,但不清楚服务提供者的实现类Java9的模块化系统则进一步的简化了Java的服务机制。Java9允许将服务接口定义在一个模块中,并使用uses语句来声明该服务接口,然后针对该服务接口提供不同的服务实现类,这些服务实现类可以分布在不同的模块中,服务实现模块则使用provides语句为服务接口指定实现类。
服务使用者只需要面向接口编程即可。模块服务的步骤使用步骤
(1)在myOne模块下创建一个包com.itheima_03,在该包下提供一个接口,接口中定义一个抽象方法Public interface Myservice{void service();}(2)在com.itheima_03包下创建一个包impl。在该包下提供接口的两个实现类Itheima和Czxy
(3)在myOne这个模块下的描述性文件中添加如下配置模块导出:export com.itheima_03;服务提供:provides MyService with Itheima;    指定MyService的服务实现类是Itheima(4)在myTwo这个模块下的描述性文件中添加如下配置生命服务接口:uses MyService;
(5)在myTwo这个模块的类中使用MyService接口提供的服务ServiceLoader:一种加载服务实现的工具

Java学习笔记——模块化相关推荐

  1. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  2. Java 学习笔记:第一章 Java入门

    Java 学习笔记:第一章 Java入门 1.1 计算机语言发展史以及未来方向 1.2 常见编程语言介绍 C语言 C++ 语言 Java语言 PHP 语言 Object-C和Swift 语言 Java ...

  3. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  4. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  5. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  6. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  7. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

  8. Java学习笔记(十)--控制台输入输出

    输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...

  9. java学习笔记16--I/O流和文件

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input  Output)流 IO流用来处理 ...

最新文章

  1. JAVA基本字节类型
  2. 一张脑图说清 Nginx 的主流程
  3. vs自定义安装包的制作
  4. Nancy 学习-视图引擎 继续跨平台
  5. netbeans代码提示_Java代码现代化的七个NetBeans提示
  6. android 获取键盘回车键事件,设置软键盘回车键显示内容,点击空白处隐藏软键盘
  7. 深度学习常用资料整理
  8. 鲁棒控制 matlab程序,鲁棒控制的在matlab中的程序
  9. Ubuntu系统中使用命令行读取u盘文件
  10. 结对编程_我从结对编程面试中学到的东西
  11. 10年的工作经验?还是1个经验反复用了10年?
  12. CentOS 安装 无线USB网卡 RTL8192EU
  13. echarts 正负条形图
  14. 3行代码Python解决图片清晰度识别,原来我们看到的不一定是这样
  15. (转)创业者应该有的5个正常心态
  16. 《梁启超家书》笔记三——交友取益,或读书取益,也要方面稍多,才有接谈交换,或开卷引进的机会
  17. 如何设置和开始使用Synology NAS
  18. 力士乐触摸屏维修VCP20.2DUN-003-PB-NN-PW
  19. 稳健估计的可靠性分析
  20. CodeForces - 366C Dima and Salad (01背包)

热门文章

  1. jsp页面路径问题(404)
  2. Linux 内核编码风格【转】
  3. Mybatis注解开发之@Results
  4. 【02】koala编译中文出错(已放弃不用)
  5. iOS开发内购图文教程
  6. php_mysql注入load_file()IIS配置文件获取
  7. sqlserver检索函数、存储过程、视图 中的关键字
  8. python判断英文字母_python判断字符串中是否含有英文 | 个人学习笔记记录
  9. t检验的p值对照表_论文数据分析实战 | 如何对汇总数据进行t检验
  10. mysql tungsten_使用tungsten将mysql的数据同步到hadoop