深入剖析 Java 新特性
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
16539 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
深入剖析 Java 新特性
15
15
1.0x
00:00/00:00
登录|注册

18 | 模块系统:怎么模块化你的应用程序?

你好,我是范学雷。今天,我们继续讨论 Java 平台模块系统(Java Platform Module System,JPMS)。
Java 平台模块系统是在 JDK 9 正式发布的。在上一讲我们也说过,这项重要的技术从萌芽到诞生,花费了十多年的时间,堪称 Java 出现以来最重要的新软件工程技术。
模块化可以帮助各级开发人员在构建、维护和演进软件系统时提高工作效率。更让人满意的是,它还非常简单、直观。我们不需要太长的学习时间就能快速掌握它。
这一节课,我们就一起来看看应该怎么使用 Java 平台模块系统。

阅读案例

在前面的课程里,我们多次使用了 Digest 这个案例来讨论问题。在这些案例里,我们把实现的代码和接口定义的代码放在了同一个文件里。对于一次 Java 新特性的讨论来说,这样做也许是合适的。我们可以使用简短的代码,快速、直观地展示新特性。
public sealed abstract class Digest {
private static final class SHA256 extends Digest {
// snipped, implementation code.
}
private static final class SHA512 extends Digest {
// snipped, implementation code.
}
public static Returned<Digest> of(String algorithm) {
// snipped, implementation code.
}
public abstract byte[] digest(byte[] message);
}
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Java平台模块系统(JPMS)是JDK 9发布的重要新软件工程技术之一。模块化有助于提高软件系统构建、维护和演进的效率。本文介绍了如何使用Java平台模块系统来模块化应用程序,包括分离接口和实现,以及限制应用程序使用特定类。文章详细介绍了模块化公开接口和内部接口的实现方式,展示了Java模块化的简洁性和直观性。读者可以通过本文快速了解Java平台模块系统的特点和使用方法,为构建更高效的软件系统提供了重要参考。文章还介绍了模块的编译和运行,以及Java模块封装的关键字和作用。总体来看,Java模块的使用简单直观,实现了更好的封装和定义了模块和Java包之间的依赖关系。思考题提出了如何更好地封装DigestManager,鼓励读者留言讨论分享阅读体验和改进。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入剖析 Java 新特性》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 浩仔是程序员
    老师,这个有最佳实践吗?感觉线上的spring boot系统很难改呀

    作者回复: 一起学习的小伙伴们,有没有实际经验可以分享的?

    2022-12-05归属地:美国
  • 松松
    把不想暴露的 DigestManager 挪到别的 package 比如 co.ivi.jus.crypto.manager 下,然后 jus.crypto module 里加一条 exports co.ivi.jus.crypto.manager to jus.crypto.impl; 这样 co.ivi.jus.crypto.manager 中的 DigestManager 就只向 jus.crypto.impl module 暴露而不向别的外部暴露了。
    2021-12-30
    3
  • ifelse
    学习打卡
    2022-10-15归属地:浙江
  • 发光如星
    模块化和osgi的配置文件编写有相似之处,他们之间有什么区别呢
    2022-01-26
  • 松松
    把不想暴露的 DigestManager 挪到 jus.crypto module 下没有 exports 的 package 里,比如建个 co.ivi.jus.crypto.manager 给它挪进去,这样单纯 exports vo.ivi.jus.crypto 就不会暴露它了。
    2021-12-30
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部