Java 9 模块

Java 9 模块是 Java 结构中最大的变化之一,在这里我要对Java 9 模块系统进行简短的高级介绍。

Java 9 模块

我们将研究以下关于Java 9模块系统的主题。

1.介绍 2.Java SE 9:Jigsaw项目 3.当前Java系统的问题? 4.Java SE 9模块系统的优点 5.JDK 8和JDK 9的比较 6.Java 9模块是什么? 7.Java 9模块系统的母 8.Java 8和Java 9应用程序的比较

介绍

Oracle Corp 已将 Java 9的发布从 2017 年 3 月推迟至 2017 年 9 月。

  1. Lambda 表达式
  2. 流程 API
  3. 数据 API

同样,Java SE 9 也推出三大功能(加上几项改进和新功能):

  1. Java 模块系统(Jigsaw 项目)
  2. Java REPL
  3. Milling 项目硬币

在本文中,我们将讨论Oracle Jigsaw项目的基础知识。

Java SE 9: Jigsaw 项目

Jigsaw 项目将引入全新的 Java SE 9 概念: Java Module System. 这是 Oracle Corp. 在 Java SE 9 发布时的一项非常大的和著名的项目. 最初,他们已经在 Java SE 7 发布的一部分开始了这个项目。 然而,随着巨大的变化,它被推迟到 Java SE 8 然后再次推迟。

模块化 JDK

正如我们所知道的,当前的 JDK系统太大了,所以他们决定将JDK本身分成小型模块,以获得一些好处(我们将很快讨论它们)。-模块化源代码 当前的源代码(jar](/community/tutorials/how-to-create-jar-from-java-classes)文件太大了,特别是rt.jar 是太大了。所以他们将把Java源代码分成更小的模块。-模块化源代码 本功能的主要目标是重构JDK和JRE运行时图像来容纳模块,特别是 encapsulate

如果你不清楚这些事情,不要担心,我们将深入讨论这些概念,并在接下来的一些有用的例子,以及在我即将到来的帖子。

目前的Java系统有哪些问题?

在本节中,我们将讨论为什么我们需要Java SE 9模块系统,这意味着当前Java系统的问题。

Java SE 8 引入了三种类型的紧凑型配置文件来解决这个问题: 紧凑型、紧凑型、紧凑型、紧凑型,3 但它没有解决这个问题

  • JAR 文件像 rt.jar 等太大了,无法在小型设备和应用程序中使用 *由于 JDK 太大,我们的应用程序或设备无法支持更好的性能 *目前的 Java 系统中没有强大的封装,因为公共访问编辑器太开放了。

为了解决所有这些问题,Oracle Corp将在Java SE 9版本中发布Java模块系统。

Java SE 9 模块系统的优势

Java SE 9 模块系统将提供以下优点

由于Java SE 9将将JDK、JRE、JAR等分为较小的模块,我们可以使用我们想要的任何模块,所以将Java应用程序扩展到小型设备很容易 *易于测试和维护 *支持更好的性能 *因为公众不仅仅是公开的,它支持非常强大的封装(不要担心它的大概念,我们很快就会用一些有用的例子来探索它)。 *我们不再可以访问内部非关键的API *模块可以安全地隐藏不必要的和内部细节,我们可以获得更好的安全性 *应用程序太小,因为我们只能使用我们想要的模块 *

我们将在不久的将来一个接一个地探索所有这些概念。

比较 JDK 8 和 JDK 9

We know what a JDK software contains. After installing JDK 8 software, we can see a couple of directories like bin, jre, lib etc in Java Home folder. However, Oracle Corp has changed this folder structure a bit differently as shown below. java 9 modules JDK 8 Folder Structure: java 8 folder structure JDK 9 Folder Structure: java module system Here JDK 9 does NOT contain JRE. In JDK 9, JRE is separated into a separate distribution folder. JDK 9 software contains a new folder "jmods". It contains a set of Java 9 Modules as shown below. In JDK 9, No rt.jar and No tools.jar jmods folder, java modules NOTE:- As of today, "jmods" contains 95 modules. It may increase in the final release. "jmods" folder is available at ${JAVA_HOME}/jmods. These are known as JDK Modules.

Java 9 模块是什么?

A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). java 9 modules system The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on "What is a Module Descriptor" and "How to develop Java Modules" in my coming posts.

Java 9 模块系统

截至目前,Java 9 模块系统在早期访问 JDK 中有 95 个模块。

  • 所有 JDK 模块都以jdk.* 开始 * 所有 Java SE 规范模块都以java.* 开始

Java 9 模块系统有一个 **java.base模块 **. 它被称为基础模块. 它是一个独立的模块,不依赖于任何其他模块. 默认情况下,所有其他模块都依赖于此模块. 这就是为什么java.base模块也被称为 Java 9 模块的母亲。

Java 8 和 Java 9 应用程序的比较

We have already developed many Java applications using Java 5, 6,7, or 8. We know how a Java 8 or earlier applications looks like and what it contains. In brief, I have depicted a Java 8 applications in a diagram as shown below: java 8 application module In a Java 8 or earlier applications, Top level component a Package. It groups a set related to types into a group. It also contains a set of resources. Java 9 Applications does not have much difference with this. It just introduced a new component called "Module", which is used to group a set of related Packages into a group. And one more new component that Module Descriptor ("module-info.java"). That's it. Rest of the application is same as earlier versions of applications as shown below. java 9 application module system Like Java 8 applications have Packages as a Top level components, Java 9 applications have Module as Top Level components. NOTE:- Each Java 9 Module have one and only one Module and one Module Descriptor. Unlike Java 8 Packages, We cannot create multiple modules into a single Module. In brief I can say a Java 9 Module contains the following main components:

  • 一个模块
  • 模块名称
  • 模块描述器
  • 类型和资源

这里的资源可能是 module-info.java (Module Descriptor) 或任何其他属性或 XML. 我们在这篇文章中讨论过多的理论. 我认为这足以了解 Java 9 模块系统的基础知识. 我们将在我的下篇文章中开始一些基本的模块开发. 我会讨论一些更多的理论概念或 Java 9 模块系统术语,根据需要。 这是关于介绍 Java 9 模块系统的主题。 我们将在我的下篇文章中讨论一些更多的 Java SE 9 模块系统概念。 请放下评论,如果你喜欢我的帖子或有任何问题/建议/类型错误。 谢谢谢阅读我的教程。 快乐的 Java SE 9 学习! 参考: Project Jigsaw

Published At
Categories with 技术
Tagged with
comments powered by Disqus