• 49.模块化


    1.1模块化概述

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

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

     2.模块的基本使用

    2.1创建模块并配置可以被其他模块引用

    具体步骤参考:https://www.cnblogs.com/luzhanshi/p/13209870.html

    创建完成之后:

     

     

     如果你new菜单里面没有module-info.java选项:考虑两个问题:1.你的JDK版本是不是低于10;如果低于10,肯定没有;如果高于10还是没有,去项目配置里面看看项目配置的是不是低版本JDK而没有选择该版本jdk:

     

     

     

     

    1.3模块服务的使用

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

    Java9允许将服务接口定义在一个模块中,并使用uses语句来声明该服务接口,然后针对该服务接口提供不同的服务实现类,这些服务实现类可以分布在不同的模块中,服务实现模块则使用provides语句为服务接口指定实现类

    服务使用者只需要面向接口编程即可

    模块服务的使用步骤

    ·在myOne模块下创建一个包package3,在该包下提供一个接口,接口中定义一个抽象方法

    public interface MyService{
    void service();
    }
    ·在package3包下创建一个包impl,在该包下提供接口的两个实现类Impl1和Impl2
    ·在myOne这个模块下的描述性文件中添加如下配置
    模块导出:exports package3;

    服务提供:provides MyService with Impl1;---->指定MyService的服务实现类是Impl1
    ·在myTwo这个模块下的描述性文件中添加如下配置
    声明服务接口:uses MyService;
    ·在myTwo这个模块的类中使用MyService接口提供的服务

      ServiceLoader:一种加载服务实现的工具

    public class Impl1 implements MyService {
        @Override
        public void service() {
            System.out.println("我是服务实现类1");
        }
    }
    public class Impl2 implements MyService {
        @Override
        public void service() {
            System.out.println("我是服务实现类2");
        }
    }
    public class Test02 {
        public static void main(String[] args) {
            ServiceLoader<MyService> load = ServiceLoader.load(MyService.class);
            for (MyService myService:load){
                myService.service();//我是服务实现类1
            }
        }
    }
  • 相关阅读:
    /etc/fstab详解
    awk的简单用法2
    awk的简单用法3
    linux+nginx+mysql+php高性能服务器搭建
    awk的简单用法1
    ip_conntrack: table full, dropping packet.解决办法
    快速获得 Google Maps 地图页中心位置的经纬度
    Google 地图 教程收集
    第一章 Google Api Key的申请
    第二章 Google 常用功能
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/13210609.html
Copyright © 2020-2023  润新知