像Java 8应用一样,顶层组件是package,在Java9中则使用module作为顶层组件。 注: 每个Java 9模块有仅有的一个模块和一个模块描述符。不同于Java 8,我们不能在独立的module里面创建多个modules。 简而言之,我们可以说Java 9模块包含以下主要部分: one Module Module Name Module Descriptor(描述符) 包集合 Types和...
module com.xxx{ opens com.xxx.reflect to com.ooo; } com.xxx模块的com.xxx.reflect包将开放给com.ooo模块来反射访问。 总结 模块的东西主要是理解,实际运用主要用来系统瘦身、依赖jar级别的隔离。这个自己用Java 9 以上版本建一个多模块的Maven或者Gradle项目,按照上面实验一下就明白了。
一个模块只有一个module-info.java,而且它是有格式要求的,我们来了解一下。 声明模块 我们只需要在module-info.java这样做就能声明一个名称为cn.felord的模块: module cn.felord { } 模块名称应该是两个单词以上,并用英文句号.隔开,上面是一个空模块。 导出包 默认情况下,模块里下所有包都是私有的,即使被外部...
fikation implementieren (Namen beginnen mitjava), JavaFX-Module (Namen beginnen mitjavafx), JDK -spezifische Module (Namen beginnen mitjdk) und Oracle-spezifische Module (Namen beginnen mitoracle). Auf jeden Modulnamen folgt eine Versionszeichenfolge –@9gibt an, dass das Modul zu Java 9 ...
module xxx.yyy{ exports com.zimug.java9; }com.zimug.java9代表一个package。需要注意的是:即使给定package包中的类是public的,如果未通过'exports'显式导出其程序包,则它们在模块外部也是不可见的(在编译时和运行时都是如此)。三、模块导入package 如果另一个模块想要使用被导出的package包中的类,可以...
module xxx.yyy{ ... } 其中xxx.yyy是模块module声明的名称,不是package名称。 二、模块导出package 文件module-info.java可以指定该模块下面的哪些package对外可见、可访问。通过一个新的关键字exports来实现该功能。 module xxx.yyy{ exports com.zimug.java9; } com.zimug.java9代表一个package。 需要注意...
其中xxx.yyy是模块module声明的名称,不是package名称。 二、模块导出package 文件module-info.java可以指定该模块下面的哪些package对外可见、可访问。通过一个新的关键字exports来实现该功能。 modulexxx.yyy{exportscom.zimug.java9; } com.zimug.java9代表一个package。
Java 9 引入的模块是在Java包(package)的基础上又引入的一个新的抽象层。基于package这一点很重要,这里需要强调一下。 模块的结构 Java 模块可以由一个或者多个在一起的 Java 包组成。结构可以参考这个图: 创建模块 创建模块需要如下几个步骤: 创建一个文件夹,通常是一个包名,例如cn.felord.module。
但有一个抽象级别显然属于Java的范围,尽管在Java 9之前,对它的支持非常差——差到模块化工作失去了意义,从而导致了所谓的模块擦除(module erasure)。该抽象级别称为工件(artifact),或Java术语中的JAR。如果应用程序在JAR级别上模块化,那么它就由多个JAR组成。即便不是如此,它的依赖库也会有自己的依赖关系...
module-info.java 用于创建模块。这一步我们创建了 com.runoob.greetings 模块。 第三步 在模块中添加源代码文件,在目录 C:\>JAVA\src\com.runoob.greetings\com\runoob\greetings 中创建文件 Java9Tester.java,代码如下: packagecom.runoob.greetings;publicclassJava9Tester{publicstaticvoidmain(String[]args){Syst...