发布于 2017-10-01 15:49:09
模块:Java9中引入的一种新的语言特性(类似于类、接口、包等)它由包集合组成,类似于包是如何由类型集合组成的。
JAR:打包代码和资源的归档文件格式,可以由JVM加载。
更具体地说,模块是定义如下
为了提供可靠的配置和强大的封装方式,既可供开发人员使用,又可由现有的工具链支持,因此,我们将模块视为一种基本的新型Java程序组件。A 模块是一个命名的、自描述的代码和数据集合.它的代码被组织成一组包含类型的包,即Java类和接口;它的数据包括资源和其他类型的静态信息。 ..。 一个模块的自描述用它的模块声明来表示,这是Java编程语言的一种新构造。 ..。 按照惯例,模块声明编译成一个名为
module-info.class的文件,类似地放在类文件输出目录中。
模块可以编译成Jar文件,在这种情况下,Jar文件被标记为模块Jar文件。
现有的工具已经可以创建、操作和使用JAR文件,因此为了便于采用和迁移,我们定义了模块化JAR文件。模块JAR文件在所有可能的方面都类似于普通JAR文件,但它还在根目录中包含了一个
module-info.class文件。
模块和JAR之间的其他一些区别:
发布于 2017-10-01 16:57:04
严格地说,模块是一个运行时概念.正如其他人从模块系统的状态引用的那样
模块是一个命名的、自描述的代码和数据集合.它的代码被组织成一组包含类型的包,即Java类和接口;它的数据包括资源和其他类型的静态信息。
这和JARs非常相似,但是.
这就引出了一个问题,模块从何而来?有很多种方式,但对于开发人员来说,最突出的是模块化JAR。模块JAR就像普通的JAR,但是它包含一个模块描述符,这是一个从module-info.java编译的文件module-info.class。正是那个文件,定义模块的名称、依赖项和API。
因此,JAR和模块之间有很强的联系:JAR是模块系统创建模块的容器,(目前)每个JAR只能包含一个模块。需要注意的是,即使在Java 9上,JAR也不必是模块化的--普通的JAR是完全可以的。
发布于 2017-10-01 15:53:55
是JAR文件模块吗?模块与JAR文件有何不同?
不,Java档案馆不是模块。
仅举一个例子,虽然的类是相同的包,但现在是https://stackoverflow.com/questions/42358084/package-conflicts-with-automatic-modules-in-java-9
JAR是一种文件格式,使您能够将多个文件捆绑到单个存档文件中。通常,这包含与applet和应用程序相关联的类文件和辅助资源。
另一方面(我也尝试在这里描述~> java-模块 )
模块是一个命名的、自描述的代码和数据集合.它的代码被组织为包含类型(即Java和接口)的包的集;它的数据包括资源和其他类型的静态信息。
这还包括在module-info.java帮助下指定的模块声明。
每个模块定义是
如模块系统所介绍的,模块映像由模块而不是JAR文件组成。模块化是根据模块化的战争文件也是。的动态配置来预见的。
但是为了便于模块的采用,在JDK9中引入了一个模块JAR文件,,这样就可以说一个由module-info.java组成的模块,例如
module com.foo.bar { }和其他java类
com/foo/bar/alpha/AlphaFactory.java
com/foo/bar/alpha/Alpha.java现有的工具已经可以创建、操作和使用JAR文件。模块JAR文件在所有可能的方面都类似于普通JAR文件,但它还在根目录中包含了一个模块info.class文件。例如,用于上述
com.foo.bar module的模块化JAR文件可能包含以下内容: META-INF/ META-INF/MANIFEST.MF模块-INF.com com/foo/bar/alpha/AlphaFactory.class com/foo/bar/alpha/Alpha.class 模块JAR文件可以用作模块,在这种情况下,它的模块info.class文件被视为包含模块的声明。或者,它可以放置在普通的类路径上,在这种情况下,它的模块info.class文件将被忽略。
https://stackoverflow.com/questions/46513903
复制相似问题