JDK9 - Module

JDK9引入了模块系统,这篇笔记简单介绍了引入module机制的初衷,module的定义、使用与打包。

Overview

没有引入module之前的JDK8项目结构如下,一个项目下的代码按照package进行组织。
在这里插入图片描述

引入了module之后的项目结构如下,在package之上还有一个module层次。

在这里插入图片描述

为什么引入module?

参考JSR376 以及这篇文章 有如下理由:

  1. Reliable configuration,在module之前,JVM通过classpath查找各个类,如果某个类缺失,只有当使用到这个类的时候才会发现,使用module可以清晰地配置各个module之间的依赖关系。
  2. Strong encapsulation,使用module机制可以定义一个module中那些包是对module外可见的,这就又添加了一层访问控制,增加了封装程度。
  3. Scalable Java platform,使用module之后,原先包含大量代码的Java SE被分割成95个module,代码更加容易维护。而且你可以只选择需要的module,例如在一些嵌入式设备上,如果不需要GUI,完全可以不把GUI模块包含在Java runtime中。
  4. Greater platform integrity,有些内部API是供内部使用的,不是给应用开发人员使用的,但是这些API在module机制之前能够被访问到,由于这些内部API有部分是平台相关的,使用这些API不利于各个平台统一(platform integrity),而module添加了一层访问控制,使得一些内部的API真正意义上地被隐藏了起来。
  5. Improved performance,性能更好了,具体为什么更好请查看JSR376

实践

下面使用如下的项目结构说明对模块的各种操作,项目分为两个模块 utilstest 模块,我会依次介绍模块的定义、模块的调用、模块的运行。

.
├── test
│   ├── module-info.java
│   └── org
│       └── example
│           └── test
│               └── TestStringUtils.java
└── utils
    ├── module-info.java
    └── org
        └── example
            └── utils
                └── StringUtils.java

8 directories, 4 files

StringUtils.java 的内容:

package org.example.utils;

public class StringUtils {
   
    public St
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值