22.4 模块化

模块化概述

Java语言随着这些年的发展已经成为了一门影响深远的编程语言,无数平台,系统都采用Java语言编写。但是,伴 随着发展,Java也越来越庞大,逐渐发展成为一门“臃肿” 的语言。而且,无论是运行一个大型的软件系统,还是运 行一个小的程序,即使程序只需要使用Java的部分核心功能, JVM也要加载整个JRE环境。 为了给Java“瘦身”,让 Java实现轻量化,Java 9正式的推出了模块化系统。Java被拆分为N多个模块,并允许Java程序可以根据需要选择加 载程序必须的Java模块,这样就可以让Java以轻量化的方式来运行 
其实,Java 7的时候已经提出了模块化的概念,但由于其过于复杂,Java 7,Java 8都一直未能真正推出,直到Java 9才真正成熟起来。对于Java语言来说,模块化系统是一次真正的自我革新,这种革新使得“古老而庞大”的Java语言 重新焕发年轻的活力 

模块的基本使用

不同模块之间是类不可以访问:

 

想要访问其他模块中的类时需要在src下创建module-info.java文件:

在myOne模块的src下创建:

module day15.myOne {
    exports cn.itcast1;
    exports cn.itcast2;
}

myTwo模块的src下创建:

module day15.myTwo {
    requires day15.myOne;
}

创建好之后就不会报错了,Test1类可以正常运行

运行结果:

 

模块服务的基本使用

在myOne模块中新建一个包,提供一个接口和两个实现类

接口:

package cn.itcast3;

public interface MyService {
    void service();
}

实现类:

package cn.itcast3.impl;

import cn.itcast3.MyService;

public class Impl1 implements MyService {
    @Override
    public void service() {
        System.out.println("我是实现1...");
    }
}
package cn.itcast3.impl;

import cn.itcast3.MyService;

public class Impl2 implements MyService {
    @Override
    public void service() {
        System.out.println("我是实现2...");
    }
}

在module-info中添加:

import cn.itcast3.MyService;
import cn.itcast3.impl.Impl1;

module day15.myOne {
    exports cn.itcast1;
    exports cn.itcast2;
    exports cn.itcast3;

    provides MyService with Impl1;
}

Two模块中的module-info中添加:

import cn.itcast3.MyService;
module day15.myTwo {
    requires day15.myOne;
    uses MyService;
}

测试类:

package cn.itcast;

import cn.itcast3.MyService;

import java.util.ServiceLoader;

public class Test2 {
    public static void main(String[] args) {
        //加载服务
        ServiceLoader<MyService> myServices = ServiceLoader.load(MyService.class);
        //遍历服务
        for (MyService my : myServices) {
            my.service();
        }
    }
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值