2013-11-28 3 views
5

Я недавно начал изучать OSGi. Я читал, что можно создать bundles(which are normal java classes) и использовать их в другом комплекте по dynamically installing/uninstalling в любом комплекте.Разница между OSGi пакетом и обычным. Использование файлов JAR

Но я не могу понять разницу между нормальным использованием файла .JAR в любом классе java и между использованием bundle.

Может ли кто-нибудь помочь мне уточнить его? Спасибо.

ответ

16

В основном нет разницы. JAR - это набор, а пакет - JAR, форматы идентичны. Однако для пакета полезно требуется метаданные OSGi в его манифестах, чтобы среда OSGi могла управлять видимостью классов между пакетами. JAR без этих метаданных будет содержать только невидимые классы, не может видеть какие-либо классы из других пакетов и не может начаться каким-либо образом. Заголовок манифеста импорта-пакета сообщает, какие пакеты должны быть видимыми для пакета, а Export-Package определяет пакеты в пакете, которые должны быть видны другим. Другие заголовки предоставляют дополнительные функции.

С традиционной дорожкой классов все является общим и глобальным, один и тот же класс на пути класса дважды не помечен нигде, один просто игнорируется. Ключевым отличием OSGi является то, что JAR теперь все закрыт, добавление метаданных в манифесте делает его пакетом, который может безопасно делиться с другими пакетами. OSGi гарантирует, что нарушения будут обнаружены раньше времени.

+0

Очистить. Спасибо :) – Amrit

+0

Итак, можно ли использовать пучок вместо банки в приложении JavaEE? – adbdkb

+1

Да, это обычный JAR. Однако в приложении JavaEE он, конечно, будет действовать как JAR, а не как пакет. –

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