Osc*_*Ryz 32 java comparison module package
我使用Java,我们只有包.我知道还有其他编程语言也包含模块.
有什么不同?
谢谢
T.J*_*der 24
在虚空中比较语义很难.(你的意思是什么?)"模块"可能类似于Java类,或Java包,或完全不同的东西,具体取决于其他语言.通常,因为"模块"往往来自过程语言,所以我倾向于使用Java类,但我认为这一行非常模糊,你可以非常令人信服地论证包.
mis*_*tor 18
instanceofTom的评论指出它 - 不同的语言对包和模块有不同的定义.因此,这个问题没有语言无关的答案.
我会尝试从我所知道的一些语言的角度回答它:
Java:它有一个packages 的概念,它基本上只是一种将Java类,接口等组织成命名空间的机制.它们需要分层结构.packages没有头等舱状态.值得注意的是,superpackage针对Java 7的提议有时也被称为modules.
Modula:modules,与Java的概念相同package.不需要分层结构.
C#namespaces:,在概念上与Java的相同package.不需要分层结构.
C++:namespaces正如名称所示,这些只是命名空间.不需要分层结构.
Haskell:modules,与Java的概念相同package.
Scala:packageScala中的packages与Java中的s 相同,只是它们不需要分层结构.还有一些限制,比如一个公共类每个文件也被放宽了.objectScala中的s也被称为模块,它们也享有一流的地位.
F#:namespaces在F#中与C#相同namespace.除了namespaces 之外,F#还在modulesCLR级别实现了.NET类和静态方法.他们不是一流的实体.
发布Java-9时引入了Java平台模块系统或JPMS 。从那时开始,Java同时具有packages和modules。那么它们之间有什么区别呢?
什么是包裹?
包是一个命名空间,用于组织一组相关的类和接口。
什么是模块?
模块是相关Java软件包和带有描述符文件的关联资源的集合,该描述符文件包含有关此模块公开哪些软件包/资源,当前模块使用哪些软件包以及其他一些信息的信息。
我们可以将Java模块看作是软件包之上的更高级别的聚合。模块使您可以将几个软件包组织到一个逻辑单元中,并将它们作为一个完整的系统进行分发。JPMS还提供了一种控制哪些软件包对用户可见的方法。
| 归档时间: |
|
| 查看次数: |
48573 次 |
| 最近记录: |