2010-09-02 3 views

ответ

50

No.

лучшее сравнение было бы с файлом Java Archive (JAR). Java использует пакеты для управления пространством имен и очень похож на пространство имен C#.

Вот как я бы сравнить среды

Java     .Net 
====     ==== 
Class     Class 
Package     Namespace 
Jar      Assembly 
+1

Я добавлю, что в сборке в .NET есть более тонкие модификаторы доступа, чем Jar в Java (по крайней мере, так я понимаю). Этот ответ объясняет одну такую ​​деталь: http://stackoverflow.com/a/9808237/1168342 – Fuhrmanator

4

Нет, я думаю, что пакет Java будет больше похож на пространство имен

И сборка будет больше похожа на банку (я не уверен в этом, так как я гораздо больше знаком с Java чем .Net ... поправьте меня, если я ошибаюсь)

+2

Существует пшик-все мешает мне добавлять классы в пространстве имен java.lang путем создания нового пакета , Один из способов устранения проверенных исключений, предназначенных для выполнения именно этого (переопределение исключения и исключения RuntimeException во время компиляции). – Joshua

+0

+1 Ваш ответ отражает Wiki http://en.wikipedia.org/wiki/Java_package –

+0

@Joshua, добавление классов в пакет java.lang возможно только в том случае, если вы поместите класс в свою собственную банку. Он также будет работать только для добавленного класса. Если вы пытались заменить класс Exception, я не уверен, что это возможно, потому что JRE загружает это сам, даже если CLASSPATH не определен. –

1

Java, пакет является как пространство имен в .NET.

Эквивалентом сборки в Java является файл jar.

1

Пакет в Java обычно означает просто пространства имен для классов и интерфейсов, что на самом деле означает определенную структуру каталогов. Иногда файл .jar также упоминается как пакет. Скорее всего, это ближе всего к сбору. Файл .jar также может содержать другие данные, такие как изображения, или, в основном, своего рода файл, поскольку он снова является zip-файлом с определенной структурой содержимого.

В любом случае: Обычно, когда вы читаете «пакет» в отношении «Java», подразумевается какое-то пространство имен (через структуру папок, например: com.mycompany.myproject). Это не помогает, что некоторые инструменты сборки относятся к процессу построения файла .jar как «упаковки» ;-)

0

Помните, что я далек от эксперта по Java, но, во всяком случае, на этом:

Как указано в других ответах, пакет не является эквивалентом Ассамблеи. Однако я не полностью согласен с идеей того, что .jar является эквивалентом Ассамблеи. Для меня класс Java (содержащийся в файле .class) ближе к сборке, чем .jar. Я говорю это, в то время как блок загрузки для CLR является сборкой (что означает, что все классы, содержащиеся в этой сборке, загружаются), блок загрузки для JVM - это класс (когда JVM нужен класс, ClassLoader не загрузите все классы в контейнер-контейнере, он просто загрузит этот конкретный класс).

Вы можете прочитать больше о Java загрузки класса здесь: When does the JVM load classes?

и здесь: http://www.lansa.com/support/notes/p0294.htm

Смежные вопросы