Java 中的模块化通过分步示例解释 [2022]

已发表: 2021-01-02

当您开始成为一名 Java 程序员时,会有很多机会。 平均而言,Java 程序员每月的收入约为 69,722 美元,这是一笔可观的支出 了解有关印度 Java 开发人员薪水的更多信息。 如果您打算在 Java 编程方面拥有良好的职业生涯,那么您应该首先学习模块化。 它是现代软件编程的重要组成部分之一。 那么,我们先来了解一下什么是模块?

Java中的模块化是什么?

模块更像是通过接口进行通信的独立软件分区。 模块化通过使用与单个遗留架构不同的模块来探索程序的创建。 它更像是 MVC 架构中的微服务,其中整个系统是一套独立的服务。

通过模块化,将软件环境划分为不同的模块,使整个过程更加优化,降低了耦合效应。 它可以帮助 Java 开发人员在开发过程同时进行的同时进行功能测试。

Java 中的模块化确保通过动态测试和调试减少开发时间。

现在我们了解了模块化,让我们了解您为什么需要它?

阅读: Java 面试问答

报名参加世界顶尖大学的软件工程课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

为什么我们需要 Java 模块化?

模块化以三种方式帮助 Java 开发人员,

可重用性:可重用性可以帮助开发人员在创建更新版本的软件或应用程序时使用相同的代码节省时间。 借助 Java 中的模块化,您可以在最初开发的软件之外的其他地方重用这些模块。

稳定性:模块化有助于维持软件的稳定性,同时对代码的各个部分进行更改。 这意味着新的修改对消费者来说仍然是隐藏的,并且可以在不影响现有软件的情况下轻松测试。

并行开发: Java 开发者可以快速开发相互并行的模块。 一旦开发了所有模块,就可以通过接口将它们组合起来以创建一个套件。 使用并行开发可以节省时间。

现在让我们探索 Java 中模块化的不同方面。

尽管 Java 9 中引入了模块化,但我们将通过一个创建计算器的简单示例来探索 Java 11 的概念。 我们将创建一个简单而高级的计算器,用于检查素数,计算它们的总和,判断一个数是否为偶数。

第 1 步:创建模块

第一步是创建模块,您可以根据复杂程度选择创建多个模块。 在这里,我们正在创建两个不同的模块,

  1. 数学。 实用模块
  2. 计算器模块

第一个模块具有用于执行数学计算的 API 或应用程序接口。 同时,第二个模块启动计算器。

第 2 步:执行模块

我们将通过在 com.upgrad.math.MathUtil 类中实现它来在浏览器中执行 API 模块,

公共静态布尔isPrime(整数){

if ( 数字 == 1 ) { 返回 false; }

return IntStream.range(2,num).noneMatch(i -> num % i == 0 );

}

我们可以用函数检查模块。

公共静态布尔isEven(整数){

返回数字 % 2 == 0;

}

如果您正在考虑检查数字是偶数还是奇数,我们可以执行另一个函数。

公共静态整数 sumOfFirstNEvens(整数计数){

返回 IntStream.iterate(1,i -> i+1)

.filter(j -> isEven(j))

.limit(count).sum();

}

public static Integer sumOfFirstNOdds(Integer count){ return IntStream.iterate(1,i -> i+1) .filter(j -> !isEven(j)) .limit(count).sum(); }

因此,到目前为止,我们在 API 模型上执行了两个函数并进行了以下观察。

  • 从数字 1 开始有一个无限序列
  • 重复过滤数字。
  • 数字流是有限的。
  • 求数字的总和

基于这些观察,开发人员可以重构 API 并执行它。

整数 computeFirstNSum(整数计数,

IntPredicate 过滤器){

返回 IntStream.iterate(1,i -> i+1)

.filter(过滤器)

.limit(count).sum();

}

在这里,我们需要找到受计数限制的数字的总和。 我们还需要在将执行求和的条件下找到数字的过滤器。

让我们根据我们探索的新条件重新创建 API。

公共静态整数 sumOfFirstNPrimes(整数计数){

返回 computeFirstNSum(count, (i -> isPrime(i)));

}

public static Integer sumOfFirstNEvens(Integer count){ return computeFirstNSum(count, (i -> isEven(i))); }

public static Integer sumOfFirstNOdds(Integer count){ return computeFirstNSum(count, (i -> !isEven(i)));

现在我们已经测试了 API 并对其进行了重构,让我们将 com.upgrad.math.MathUtil 类放在一个模块中。

第 3 步:在模块中插入实用程序类

在名为 math 的模块中插入一个小的实用程序类。 util,您需要遵循一些约定,例如

  • 将API模块相关的所有代码放在一个同名目录下,作为根目录。
  • 在根文件夹中插入 module-info.java
  • 将所有的包和代码放在根目录下。

第 4 步:为计算器创建模块定义

我们将创建一个需要 math.utl 的计算器模块。

模块计算器{

需要math.util;

}

我们可以通过以下方式编译代码,

javac -d mods –模块源路径。 $(查找 .-name “*.java”)

一旦我们从 mods 目录中的calculator 和 math.utl 模块编译代码,一个命令将包括这两个模块之间的依赖关系,这是通过编译器完成的。 无需创建专用工具来创建计算器和 maths.utl 之间的依赖关系。

第五步:执行代码

一旦你在 mods 目录和依赖项中都有模块,现在是执行代码的时候了。 执行将使我们简单而高级的计算器付诸行动。

java –module-path mods -m 计算器/com.upgrad.calculator.Calculator

必读:有趣的 Java 项目和主题

结论

根据一项调查,就新职位发布而言,Java 是第二高的首选语言,这使其成为初学者的绝佳选择。

如果您有兴趣了解有关 Java、OOP 和全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训, 9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

为未来的职业做准备

立即申请软件工程硕士