Java模块化

简介: Java模块化

1 模块化概述【理解】

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 语言 重新焕发年轻的活力


2 模块的基本使用【应用】

2.1 必须是java文件夹下面才可以创建module-info.java,添加两个maven。module项目。

分别为one和two

module one {
}
module two {
}

2.2、设置模块的依赖和权限

2.2.1、设置modulej级别为9

2.2.2、one中创建两个包和方法

package com.oldlu.java9.can;
public static class UtilCan {
    public void can(){
        System.out.println("can");
    }
}
package com.oldlu.java9.cannot;
public static class UtilCanNot {
    public void canNot(){
        System.out.println("canNot");
    }
}

2.3、one中module-info.java

module one {
//导出可用包
     exports  com.oldlu.java9.can;
}

2.4、two中进行引入,如果发现为红报错,则,alt+enter进行one包的引入

module two {
     requires one;
}

2.5、two中开始使用

package com.oldlu.java9.use;
import com.oldlu.java9.can.UtilCan;
//import com.oldlu.java9.cannot.UtilCanNot; //导入了,但是报错
public class Use {
    public static void main(String[] args) {
        UtilCan.can();
//        UtilCanNot.canNot(); 可以导入,但是编译不成功
    }
}

3、模块化中的服务(Service接口)

3.1、创建接口和实现类

3.1.1、接口

package com.oldlu.java9.api;
public interface MyServiceInter {
    void method();
}

3.1.2、实现类

package com.oldlu.java9.api.impl;
import com.oldlu.java9.api.MyServiceInter;
public class MyServiceInterImpl  implements MyServiceInter {
    @Override
    public void method() {
        System.out.println("接口实现类");
    }
    public static  void staticImpl(){
    System.out.println("接口实现类中自己定义的静态方法");
}
}

3.1.3、第二个实现类

package com.oldlu.java9.api.impl;
import com.oldlu.java9.api.MyServiceInter;
public class MyServiceInterImplTwo implements MyServiceInter {
    @Override
    public void method() {
        System.out.println("第二个接口实现类");
    }
}

3.2、one module-info.java 服务开始提供

import com.oldlu.java9.api.MyServiceInter;
import com.oldlu.java9.api.impl.MyServiceInterImpl;
import com.oldlu.java9.api.impl.MyServiceInterImplTwo;
module one {
   //导出可用包
     exports  com.oldlu.java9.can;
     //对外提供的接口服务 ,下面指定的接口以及提供服务的impl,如果有多个实现类,用用逗号隔开    
     exports  com.hlj.java9.api;
     provides MyServiceInter  with MyServiceInterImpl, MyServiceInterImplTwo;
}

3.3、two模块开始调用

3.3.1、two module-info.java

import com.oldlu.java9.api.MyServiceInter;
module two {
     requires one;
     //使用接口的名称 ,上面已经导入了one模块了
     uses MyServiceInter  ;
}


3.3.2、开始测试使用 下面中的注释掉的解答下export必须是第一层才能够导出

package com.oldlu.java9.Consumer;
import com.oldlu.java9.api.MyServiceInter;
//import com.oldlu.java9.api.impl.MyServiceInterImpl;
import java.util.ServiceLoader;
/**
 * @Desc:
 * @Author admin
 */
public class ConsumerUse {
    public static void main(String[] args) {
        //专门用来提供服务的类
        ServiceLoader<MyServiceInter> loader = ServiceLoader.load(MyServiceInter.class);
        //所有的实现类
        for(MyServiceInter service:loader){
            service.method();
        }
//        MyServiceInterImpl.staticImpl(); ont中export必须是第一层包,不可以套多层
    }
}
目录
相关文章
|
安全 Java Shell
JDK9特性——模块化&REPL工具
谈到Java9大家往往第一个想到的就是Jigsaw项目(后改名为Modularity)。众所周知,Java已经发展超过20年(95年最初发布),Java和相关生态在不断丰富的同时也越来越暴露出一些问题:
304 0
|
8月前
|
安全 Java Shell
Java模块化编程(JPMS)简介与实践
本文全面解析Java 9模块化系统(JPMS),帮助开发者解决JAR地狱、类路径冲突等常见问题,提升代码的封装性、性能与可维护性。内容涵盖模块化核心概念、module-info语法、模块声明、实战迁移、多模块项目构建、高级特性及最佳实践,同时提供常见问题和面试高频题解析,助你掌握Java模块化编程精髓,打造更健壮的应用。
|
7月前
|
安全 Cloud Native Java
Java 模块化系统(JPMS)技术详解与实践指南
本文档全面介绍 Java 平台模块系统(JPMS)的核心概念、架构设计和实践应用。作为 Java 9 引入的最重要特性之一,JPMS 为 Java 应用程序提供了强大的模块化支持,解决了长期存在的 JAR 地狱问题,并改善了应用的安全性和可维护性。本文将深入探讨模块声明、模块路径、访问控制、服务绑定等核心机制,帮助开发者构建更加健壮和可维护的 Java 应用。
643 0
|
Java 测试技术 API
Java新纪元:模块化设计重塑开发体验,让代码如艺术品般优雅!
【8月更文挑战第30天】Java模块化设计是一种通过将应用程序分解为独立、可重用模块来提高代码可维护性和可扩展性的方法。其核心是自Java 9引入的Java Platform Module System(JPMS)。模块化设计增强了封装性,简化了依赖管理和系统维护,并通过按需加载模块提升了性能。每个模块有明确职责和接口,通过`module-info.java`文件定义。实战示例展示了如何创建和使用模块。最佳实践包括明确模块职责、减少依赖、使用模块描述符及模块化测试,从而构建健壮、可维护的应用程序。
301 3
|
安全 Java 测试技术
Java 模块化详解
Java 9引入了一项重要的功能:模块化(Module System)。模块化是一种将代码和资源封装到可重用和独立的单元中的方法,它有助于改善代码的可维护性、可重用性和安全性。本文将介绍Java模块化的基本概念、如何创建和使用模块以及一些最佳实践。
1150 0
|
Java API 开发者
【Java模块化新飞跃】JDK 22模块化增强:构建更灵活、更可维护的应用架构!
【9月更文挑战第9天】JDK 22的模块化增强为开发者构建更灵活、更可维护的应用架构提供了强有力的支持。通过模块化设计、精细的依赖管理和丰富的工具支持,开发者可以更加高效地开发和管理应用,提高应用的性能和可维护性。
322 10
|
Java 编译器 API
带你了解“Java新特性——模块化”
带你了解“Java新特性——模块化”
682 11
|
监控 Java API
Java 模块化设计:概念与实战应用
【4月更文挑战第27天】模块化设计是现代软件开发的关键,它帮助开发者构建可管理、可维护的大型系统。Java 平台的模块化支持始于 Java 9,引入了一种全新的模块系统。
415 3
|
Oracle Java API
Java演进问题之Java 9模块化的改造成本大如何解决
Java演进问题之Java 9模块化的改造成本大如何解决
162 0
|
Rust Cloud Native Java
Java演进问题之Java 9的模块化潜在的陷阱如何解决
Java演进问题之Java 9的模块化潜在的陷阱如何解决
205 0
下一篇
开通oss服务