Зачем делать мой проект OSGI-пакетом, а не стандартным JAR-пакетом? - PullRequest
4 голосов
/ 15 ноября 2010

По каким причинам я бы хотел сделать свой проект пакетом OSGI, а не просто стандартным пакетом JAR?Имеет ли смысл только если оно будет использоваться приложением, которое использует каркас OSGI (например, Equinox / Eclipse)?Или это также полезно с точки зрения разработки, то есть возможности легко повторно использовать мой OSGI-пакет в других проектах во время разработки Eclipse?

Ответы [ 5 ]

3 голосов
/ 15 ноября 2010

Если ваш проект является общедоступной библиотекой или библиотекой с открытым исходным кодом, тогда , пожалуйста, сделайте его комплектом OSGi. Это очень поможет разработчикам OSGi, которые захотят использовать вашу библиотеку.

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

Это не требует затрат времени выполнения. Данные OSGi в манифесте просто игнорируются средами исполнения не-OSGi.

Вы должны будете сгенерировать манифест OSGi как часть вашего шага сборки. Лучший инструмент для этого - Bnd, который можно легко интегрировать в любую сборку ANT - используйте его вместо задачи «JAR». Если вы строите с Maven, используйте плагин Maven Bundle (который использует Bnd для внутреннего использования).

3 голосов
/ 15 ноября 2010

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

1 голос
/ 15 ноября 2010

Это полезно, только если оно будет использоваться из контейнера OSGi, как вы упомянули.

Если вы ищете ответ о том, почему он полезен в целом, вы можете найти много, просто погуглив - начните с Википедии:

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

Я настоятельно рекомендую прочитать об OSGi, если вы еще этого не сделали - это очень интересная технология.Я бы предложил прочитать статьи Нила Бартлетта об EclipseZone - это первая из них:

Их много, так что гуглите их - очень интересноПрочитайте, что также даст вам представление о том, следует ли это учитывать.

SpringSource - большой сторонник OSGi, поэтому стоит посмотреть и на него:

0 голосов
/ 25 ноября 2010

OSGИзменение проекта позволит использовать OSGI для управления зависимостями в Eclipse вместо стандартного механизма построения проекта Eclipse или внешнего инструмента управления зависимостями, такого как Ivy или Maven.Преобразование проекта в пакет OSGI позволяет вам выражать зависимости пакета этого проекта как зависимости пакета (если пакет существует для зависимости пакета), которые будут обрабатываться средой OSGI вместо этих других механизмов (стандартная сборка проекта Eclipse / Ivy / Maven).

Стандартные зависимости проекта Eclipse устанавливаются путем указания других проектов и библиотек в пути сборки вашего проекта.Преобразование в OSGI заменит ваши ссылки на пути сборки объявлениями MANIFEST.MF import-package или required-bundles.

Преимущества использования OSGI для управления зависимостями по стандартному механизму затмения:

  • реэкспорт зависимостей: ваш пакет может повторно экспортировать их зависимые пакеты, что означает код, полагающийся на ваш пакеттакже не нужно полагаться на зависимостей вашего пакета, если он также использует их
  • управление версиями: так что вы можете указать минимальную и максимальную ожидаемую версию зависимости.

См. также Стоит ли использовать подключаемые модули Eclipse (или OSGi Bundles) в качестве простого инструмента управления зависимостями?

0 голосов
/ 15 ноября 2010

Если вы когда-нибудь планируете использовать его в контексте OSGi, то вы можете также сделать его связкой. Я не знаю, есть ли какие-либо негативные последствия для того, чтобы сделать его связкой, тогда как, если вы не сделаете его связкой, а потом узнаете, что он вам нужен, возможно, вам придется вернуться и исправить это. Кроме того, я лично не знаю ничего, кроме OSGi, которое использует метаинформацию манифеста - но, как я уже сказал; Я не думаю, что это будет больно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...