В основном нет разницы. JAR - это набор, а пакет - JAR, форматы идентичны. Однако для пакета полезно требуется метаданные OSGi в его манифестах, чтобы среда OSGi могла управлять видимостью классов между пакетами. JAR без этих метаданных будет содержать только невидимые классы, не может видеть какие-либо классы из других пакетов и не может начаться каким-либо образом. Заголовок манифеста импорта-пакета сообщает, какие пакеты должны быть видимыми для пакета, а Export-Package определяет пакеты в пакете, которые должны быть видны другим. Другие заголовки предоставляют дополнительные функции.
С традиционной дорожкой классов все является общим и глобальным, один и тот же класс на пути класса дважды не помечен нигде, один просто игнорируется. Ключевым отличием OSGi является то, что JAR теперь все закрыт, добавление метаданных в манифесте делает его пакетом, который может безопасно делиться с другими пакетами. OSGi гарантирует, что нарушения будут обнаружены раньше времени.
Очистить. Спасибо :) – Amrit
Итак, можно ли использовать пучок вместо банки в приложении JavaEE? – adbdkb
Да, это обычный JAR. Однако в приложении JavaEE он, конечно, будет действовать как JAR, а не как пакет. –