【发布时间】:2011-04-07 10:56:32
【问题描述】:
我是一名 .Net 开发人员,开始为 Android 开发 Java,想知道将 Java 包视为 .Net 程序集是否正确。
【问题讨论】:
标签: java .net assemblies package
我是一名 .Net 开发人员,开始为 Android 开发 Java,想知道将 Java 包视为 .Net 程序集是否正确。
【问题讨论】:
标签: java .net assemblies package
请记住,我远非 Java 专家,但无论如何,这就是我的看法:
正如其他答案所指出的,包不等同于程序集。但是,我并不完全同意 .jar 等同于 Assembly 的想法。
对我来说,Java 类(包含在 .class 文件中)比 .jar 更接近于 Assembly。我说这是因为 CLR 的加载单元是程序集(这意味着该程序集中包含的所有类都被加载),JVM 的加载单元是一个类(当 JVM 需要一个类时,ClassLoader 不需要加载容器 jar 中的所有类,它只加载特定需要的类)。
您可以在此处阅读有关 java 类加载的更多信息: When does the JVM load classes?
【讨论】:
Java 中的包通常意味着类和接口的命名空间,实际上意味着特定的目录结构。有时 .jar 文件也称为包。这可能是您最接近装配的地方。 .jar 文件还可以包含其他数据,例如图像,或者基本上是一种文件,因为它只是一个具有某些特定内容结构的 zip。
在任何情况下:通常当您阅读与“Java”相关的“包”时,意味着某种名称空间(通过文件夹结构,例如:com.mycompany.myproject)。一些构建工具将构建.jar文件的过程称为“打包”并没有帮助;-)
【讨论】:
Java 包就像 .NET 中的命名空间。
在Java中相当于一个程序集的是jar文件。
【讨论】:
没有。
最好的比较是使用 Java ARchive (Jar) 文件。 Java 使用包来控制命名空间,与 C# 的命名空间非常相似。
这是我比较环境的方式
Java .Net
==== ====
Class Class
Package Namespace
Jar Assembly
【讨论】:
不,我认为 Java 包更类似于命名空间
而且程序集更像是一个罐子(我对此不太确定,因为我对 Java 比对 .Net 更熟悉......如果我错了,请纠正我)
【讨论】: