




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一入 Java 深似海 系列课程 - 第二期 第一节:Java 模块化设计 小马哥 mercyblitz 一入 Java 深似海 系列课程 讲师信息 小马哥,Java 劝退师,Apache 和 Spring Cloud 等知名开源 架构成员。 微信:mercyblitz-1985 GitHub: 课件资源: lessons/ 博客:https:/mercyblitz.github.io/ 主要议题 Java 模块化基础回顾 Java 模块化核心概念 Java 模块化迁移 Java 模块化反射 课程总结 Java 模块化基础回顾 Java 模块化基础回顾 Java 9 模块化 动机 强封装的实施与精确的模块依赖声明使得大型应用和框架更好的维护 安全提升 增快应用模块中类型检测的速度,提升应用性能 瘦身 JDK 以及 SE 的体积,有利于在小型计算设备使用和云端部署 Java 模块化基础回顾 定义模块 模块声明 A modules self-description is expressed in its module declaration, a new construct of the Java programming language. Java 模块化基础回顾 定义模块 模块依赖 One or more requires clauses can be added to declare that the module depends, by name, upon some other modules, at both compile time and run time: Java 模块化基础回顾 定义模块 模块导出 exports clauses can be added to declare that the module makes all, and only, the public types in specifi c packages available for use by other modules: Java 模块化核心概念 Java 模块化核心概念 模块路径(Module Path) 模块路径可能是单个 artifact,或者是多个 artifacts 的目录,存在于宿主机器上。 类路径(Class Path)的脆弱性 通过 artifacts 的 Class Path 区分类型 无法区分 artifacts 无法提前通知 artifacts 缺少 允许不同的 artifacts 定义在相同的 packages 定义类型 Java 模块化核心概念 模块路径的差异性 定位整个模块而非类型 无论是运行时,还是编译时,在同一目录下不允许出现同名模块 Java 模块化核心概念 模块解析(Resolution ) 假设当前模块 com.foo.app 如下定义: Java 模块化核心概念 模块解析(Resolution ) com.foo.app 依赖于 java.sql 模块,而该模块又存在 java.logging 和 java.xml 依赖: Java 模块化核心概念 模块解析(Resolution ) Java 模块化系统将会解析模块 com.foo.app 完整的依赖树: Java 模块化核心概念 可读性(Readability ) 如上图所示,模块 com.foo.app 依赖模块 com.foo.bar 和 java.sql ,说明 java.sql 对 com.foo.app 是可读的。同时, java.sql 依赖 java.xml 和 java.logging 模块,然而这并 不意味着 java.xml 或 java.logging 对 com.foo.app 可读。简言之,可读性无法在跨层模块 之间生效。 Java 模块化核心概念 可读性(Readability ) 这种在模块中定义的可读性关系是可靠配置的基础,这种配置不但更具可靠,同时也模块读取更迅 速。 Java 模块化核心概念 访问性(Accessibility ) 访问性依赖于强封装性 强封装性 = 可读性关系 + 模块 exports 声明 Java 模块化迁移 Java 模块化迁移 迁移分析 需要明确应用实现依赖的 JDK 模块 需要明确二方或三方 jar 所依赖的 JDK 模块 需要微服务化应用 Java 模块化迁移 非命名模块(Unnamed module) 类型加载于 ClassPath,而非具体模块,如遗留 jar 文件,暴露所有的 packages。 命名模块(Named modules) 所有正常的 Java 模块,packages 暴露受限于 exports Java 模块化迁移 自动模块(automatic module ) 假设我们需要使用 Spring ListenableFuture API,它来自于 org.springframework:springcore ,由于该 jar 文件属于非命名模块,并且其 artifactId 为 spring-core ,该 ID 命名的方式对于模块名称是非法的。 我们能够在模块路径下能够使用”自动模块“替代 spring-core-*.jar ,即使用 spring.core 模块。 J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- mcn运营管理制度
- 综采超前支护管理制度
- 监理公司各项管理制度
- 耗材仓库标签管理制度
- 肉类卤制车间管理制度
- oem加工管理制度
- 中交二公司管理制度
- 粉尘作业岗位管理制度
- 腾讯工资薪酬管理制度
- 美发门店业绩管理制度
- 人教部编版三年级下册语文【选择题】专项复习训练真题100题(附答案解析)
- 免检车辆标志委托书
- 人教鄂教版科学18《制作日晷》课件-科学四年级下册人教鄂教版
- 云南开放大学实-用写作离线作业1-5
- 内科学(肾脏-内分泌-血液)智慧树知到期末考试答案章节答案2024年温州医科大学
- 食品安全与日常饮食智慧树知到期末考试答案章节答案2024年中国农业大学
- 信息安全、网络安全和隐私保护-信息安全控制清单(2024A1-雷泽佳编制)
- 100以内进退位加减法口算题每天60道
- 基础护理学第七版题附有答案
- MOOC 嵌入式软件设计-大连理工大学 中国大学慕课答案
- RFJ 003-2021 人民防空工程防护设备产品与安装质量检测标准(暂行)
评论
0/150
提交评论