Java学习笔记46——模块化

模块化

  • 模块化概述
    • 模块的基本使用

模块化概述

Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是
伴随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿”的语言。而且,无论是运行一个大型的软件
系统,还是运行一个小的程序,即使程序只需要使用Java的部分核心功能,JVM也要加载整个JRE环境。
为了给Java“瘦身”,让ava实现轻量化,Java9正式的推出了模块化系统。Java被拆分为N多个模块,并允
许Java程序可以根据需要选择加载程序必须的Java模块,这样就可以让Java以轻量化的方式来运行

其实,Java 7的时候已经提出了模块化的概念,但由于其过于复杂,Java7,Java8都一直末能真正推出,直
到Java9才直正成熟起来。对于Java语言来说,模块化系统是一次真正的自我革新,这种革新使得“古老而庞
大”的Java语言重新焕发年轻的活力

模块的基本使用

模块的基本使用步骤

  • 创建模块(按照以前的讲解方式创建模块,创建包,创建类,定义方法)
    • 为了体现模块的使用,我们创建2个模块。一个是myOne,一个是myTwo
  • 在模块的src目录下新建一个名为module-info.java的描述性文件,该文件专门定义模块名,访问权限,模块依赖等信息
    • 描述性文件中使用模块导出和模块依赖来进行配置并使用
  • 模块中所有未导出的包都是模块私有的,他们是不能在模块之外被访问的
    • 在myOne这个模块下的描述性文件中配置模块导出
    • 模块导出格式:exports包名
  • 一个模块要访问其他的模块,必须明确指定依赖哪些模块,未明确指定依赖的模块不能访问
    • 在myTwo这个模块下的描述性文件中配置模块依赖
    • 模块依赖格式:requires模块名;

模块服务的使用
服务:从Java 6开始,Java提供了一种服务机制,允许服务提供者和服务使用者之间完成解耦
简单的说,就是服务使用者只面向接口编程,但不清楚服务提供者的实现类

Java 9的模块化系统则进一步的简化了Java的服务机制Java9允许将服务接口定义在一个模块中
并使用uses语句来声明该服务接口,然后针对该服务接口提供不同的服务实现类,这些服务实现类
可以分布在不同的模块中,服务实现模块则使用provides语句为服务接口指定实现类
服务使用者只需要面向接口编程即可

模块服务的使用步骤

  • 在myOne模块下创建一个包com.demo03,在该包下提供一个接口,接口中定义一个抽象方法
    • public interface MyService {
    • void service();
    • }
  • 在com.itheima 03包下创建一个包impl,在该包下提供接口的两个实现类demo和Czxy
  • 在myOne这个模块下的描述性文件中添加如下配置
    • 模块导出: exports com.demo03;
    • 服务提供: provides MyService with demo;
    • 指定MyService的服务实现类是demo
  • 在myTwo这个模块下的描述性文件中添加如下配置
    • 声明服务接口: uses MyService;
  • 在myTwo这个模块的类中使用MyService接口提供的服务
    • ServiceLoader:一种加载服务实现的工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UniPro集成华为云WeLink 为企业客户构建互为联接的协作平台

华为云WeLink是华为开启数字化办公体验、帮助企业实现数字化转型的实践,类似钉钉。UniPro的客户企业中,有使用WeLink作为协作工具的,基于客户的实际业务需求,UniPro实现了与WeLink集成的能力,以帮助客户企业丰富和扩展…

软文营销助力品牌打开市场,提升内在竞争力

当今环境下,企业想要通过传统营销方式打开市场可以说是难度较大,用户如今更偏向于好的内容,而软文营销正是通过好内容吸引用户,助力品牌打开市场,提升内在竞争力,接下来媒介盒子就从以下几个方面和大家聊聊…

库位角点检测之Centernet/CornerNet算法

1.CornerNet CornerNet 那么我们从bounding box左上角(top-left corner)看物体。视线横着的话,物体就在视线的下面(那么视线所在位置为the topmost boundary of an object)。视线竖着的话,物体就在视线的右边,那么视线…

美团20k软件测试工程师的经验分享

前言 时间真是快,转眼间变成打工人也有三年的时间了,最近几天朋友圈被各个同学的答辩刷屏了。去年自己过年回到家里,再回母学校就是走走瞧瞧,经历了可能是唯一一年的云答辩。学生时代对未来的工作充满了想象,一直想知…

连接服务器的ssh终端自动断开解放方法

在Linux中,SSH连接在一段时间内没有活动时可能会自动断开,这是为了安全性考虑的一种默认行为,以防止未经授权的访问。这个时间限制通常由SSH服务器的配置决定。你可以通过以下几种方式来处理这个问题: 1.使用SSH配置文件&#xf…

SQL面试题,判断if的实战应用

有如下表,请对这张表显示那些学生的成绩为及格,那些为不及格 1、创建表,插入数据 CREATE TABLE chapter8 (id VARCHAR(255) NULL,name VARCHAR(255) NULL,class VARCHAR(255) NULL,score VARCHAR(255) NULL );INSERT INTO chapter8 (id, n…

测试面试:不明白什么是质量保障

这是我面试经常问的一个问题,很多人并不明白其中的区别。 如上图,整体的质量体系架构图相对简单,主要包含三个部分:愿景(高质量交付-快、好)、能力(中间三层不同的能力)和…

Ubuntu下进行串口卡驱动

Ubuntu下安装串口卡驱动 1.下载厂家提供的驱动上传至本地电脑 cd (驱动路径下) 2.Lspci -v 查看电脑串口卡信息 3.下载编译包 sudo apt-get update sudo apt-get install build-essential linux-headers-$(uname -r) 4.编译驱动 make sudo make i…

如何管理施工现场?一招轻松搞定

随着科技的快速发展,建筑行业正迎来一场革命性的变革,智慧工地成为引领这一变革的关键力量。传统的建筑方式正在被智能化、数字化的解决方案所取代,为项目管理、安全性和效率带来了全新的可能性。 客户案例 建筑公司 山东某建筑公司通过引入…

数据结构算法-选择排序算法

引言 说起排序算法,那可就多了去,首先了解什么叫排序 以B站为例: 蔡徐坤在B站很受欢迎呀,先来看一下综合排序 就是播放量和弹幕量,收藏量 一键三连 都很高这是通过一些排序算法 才能体现出综合排序 蔡徐坤鬼畜 按照播…

联合体union

非受限联合体 联合体 在C中,union 是一种特殊的数据结构,允许在同一内存位置存储不同的数据类型。union 的每个成员都从同一内存位置开始,这就意味着 union 中的所有成员共享同一块内存。 union 的语法如下: union MyUnion {i…

map()的用法

JavaScript Array map() 方法 先说说这个方法浏览器的支持: 支持五大主流的浏览器, 特别注意:IE 9 以下的浏览器不支持,只支持IE 9以上的版本的浏览器 特别注意:IE 9 以下的浏览器不支持,只支持IE 9以上的…

Android超简单实现-即时更新Toast(可直接复制)

效果 实现 第一步、封装个工具类ToastUtil.class(可直接复制拿走) public class ToastUtil {private static Toast mToast null; // toast对象,用于判断是否第一次使用/*** 即时更新Toast* param content content* param message 消息内容…

Nacos作为配置中心的一些知识二

11292327 问:客户端发请求给Nacos服务端,服务端这边会进行哪些处理? 答:客户端发请求给Nacos 服务端 ,服务端这边通过ConfigController类的309行的listener方法,进行处理 第一步 获取客户端请求的文件的…

39.从0到上线三天搭建个人网站(第三天)

点赞收藏加关注,你也能住大别墅! 一、第三天主要工作 1.完成detail页面的开发 2.将所有数据以及部分静态资源存在uniCloud,为以后做管理后台做准备 3.创建云对象getData,在beforecreate()中获取数据 4.…

SQL server 基线安全加固操作

目录 账号管理、认证授权 ELK-Mssql-01-01-01 ELK-Mssql-01-01-02 ELK-Mssql-01-01-03 ​​​​​​​ ELK-Mssql-01-01-04 ​​​​​​​ ELK-Mssql-01-01-05 ​​​​​​​ELK-Mssql-01-01-06 日志配置 ELK-Mssql-02-01-01 通信协议 ELK-Mssql-03-01-01 ​​​​​…

【MySQL】视图:简化查询

文章目录 create view … as创建视图更改或删除视图drop view 删除视图replace关键字:更改视图 可更新视图with check option子句:防止行被删除视图的其他优点简化查询减小数据库设计改动的影响使用视图限制基础表访问 create view … as创建视图 把常用…

类 —— 友元、常/静态成员函数

类 类的大小 和结构体大小求法一致。但需注意,普通空类也会占用 1 字节大小,因为普通空类可以实例化对象。 而 抽象空类占 4 字节(32 位机中),因为抽象空类中含有虚指针(含有虚函数的非抽象空类同理&am…

第5章 Ajax数据爬取

目录 1. 什么是Ajax1.1 实例引入1.2 基本原理发送请求解析内容渲染网页 2. Ajax分析方法2.1 分析案例2.2 过滤请求 3. Ajax分析与爬取实战3.1 爬取目标3.2 初步探索3.3 爬取列表页分析实现基础配置爬取页面内容(获取页面的JSON内容)爬取列表页&#xff0…

李宏毅2020机器学习课程笔记(二)- 深度学习

相关专题: 李宏毅2020机器学习资料汇总 本系列笔记: 李宏毅2020机器学习课程笔记(一)- 分类与回归李宏毅2020机器学习课程笔记(二)- 深度学习李宏毅2020机器学习课程笔记(三)- CNN、半监督、RNN文章目录 3. Deep LearningBrief Introduction of Deep Learning(P12)Ba…