Как начать с OSGi - PullRequest
       93

Как начать с OSGi

0 голосов
/ 12 октября 2018

На моем рабочем месте они попросили меня изучить фреймворк OSGi и решить, как лучше всего с ним работать.

За последние две недели я занимался серфингом в Интернете и обнаружил многос другим подходом к работе с OSGi, например, я нашел подход OSGi enRoute и плагин Eclipse под названием BndTools.Я обнаружил, что могу просто использовать декларативные сервисы или фреймворки, такие как AIOLOS.

Я немного запутался во всех этих разных подходах и технологиях ... Как вы думаете, что является лучшим подходом для начала работы с OSGi?для начинающего?Есть ли реализация, которая лучше, чем другие (например, Equinox)?У вас есть предпочтительный подход к работе с этим фреймворком?

Заранее большое спасибо!

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Я могу понять путаницу ... существует множество инструментов для сборки, и в настоящее время все они поддерживают OSGi.Поскольку иногда вам нужны комбинации инструментов, пространство является сложным.

bnd

Чтобы использовать OSGi, вам нужно собрать связок .Пакет - это файл JAR, формат по умолчанию для библиотек / исполняемых файлов Java.Они являются связками, когда манифест в файле JAR содержит метаданные OSGi .Эти метаданные предоставляют информацию инструменту и платформе OSGi, какие возможности он требует от среды выполнения и какие возможности предоставляет среде выполнения.Эта информация используется для сборки времени выполнения, а также для проверки во время выполнения того, что все совместимо.

Сохранение этой информации вручную - это много тошнотворной работы.По этой причине bnd был разработан мной, около 19 лет назад.В настоящее время bnd является основной библиотекой в ​​отрасли, которая создает эти метаданные, упрощает оформление метаданных и проверку достоверности метаданных.Он выполняет обширный анализ и аннотации пакета для минимизации ручной работы.

В случае bnd он также поддерживает стандартные аннотации сборки OSGi для декларативных служб, аннотаций манифеста и многого другого.(Многие стандарты OSGi возникли в bnd.)

IDE и непрерывная интеграция

IDE предпочтительнее инструментов для чтения, записи и отладки кода.Однако без решения для непрерывной интеграции, которое выполняется на удаленном сервере, вы не можете полагаться на результаты, поскольку ваша среда IDE может зависеть от информации, которая имеется только на вашем ноутбуке.Поэтому для профессионального развития необходимо иметь какой-либо сервер, который собирает ваше программное обеспечение с нуля без использования кешей.

Очевидно, что при разработке программного обеспечения на ноутбуке крайне важно, чтобы результаты были идентичными при использованиисервер.По этой причине bnd предоставляет библиотеку, которую можно использовать в IDE и различных инструментах сборки.Несмотря на то, что существует множество возможных комбинаций с bnd, есть несколько самых популярных.

Модели

Только для Maven

Maven - популярный инструмент для сборки приложений Java.Он определяет всю информацию о сборке в файлах POM (Project Object Model), которые являются файлами XML.POM могут наследоваться от других POM.Каждый POM (и артефакт) идентифицируется идентификатором group , идентификатором artifact и непрозрачной версией.Maven имеет довольно фиксированную структуру для проекта.Вся работа по сборке выполняется с помощью плагинов, которые получают свою конфигурацию из POM.

Существует два плагина Maven, основанные на bnd, которые обеспечивают необходимую генерацию метаданных OSGi.

В этой модели только bndиспользуется для предоставления метаданных в комплекте.Все зависимости должны находиться в репозиториях Maven.

Существует третий плагин Tycho, который создает пакеты с использованием модели Eclipse PDE.Я слышал, что мало кто рекомендует посещать PDE / Tycho сегодня, это не было безболезненным развитием, и многие пользователи PDE ищут альтернативы.Этот плагин должен преодолеть очень большой смысловой разрыв между PDE и Maven.

Только Gradle

Хотя Gradle также использует плагины для всей работы низкого уровня, он в значительной степени полагается на Groovy для обеспечения сборкидействия.

Группа bndtools предоставляет плагин, который упрощает генерацию метаданных OSGi в обычной сборке Java:

В этой модели все зависимости должны храниться в репозиториях, доступных Gradle, которые обычно являются репозиториями Maven.

Eclipse, M2E, Maven и Bndtools

В этом квартете Eclipse является базовой IDE, а M2E - плагином, который учит Eclipse, как создавать пакеты в соответствии со спецификацией maven (pom-файл).В этом квартете bnd работает в Maven как плагин.Bndtools предоставляет некоторые дополнительные функциональные возможности OSGi IDE, которых нет в M2E.Основное внимание уделяется созданию сборок для сред выполнения OSGi и просмотру пакетов.

В этой модели вся информация о сборке хранится в POM Maven.Это модель, которую Б. Дж. Харгрейв написал в другом ответе на этот вопрос.

В этой модели bnd используется только для предоставления метаданных в комплекте.Все зависимости должны находиться в репозиториях Maven.

Eclipse, Bndtools, Gradle

Другая модель, разработанная специально для OSGi / bnd, - это bnd Рабочая область модель.В этой модели рабочее пространство - это каталог с пакетными проектами OSGi, специальный каталог (cnf) содержит всю информацию о рабочем пространстве.Вся информация о сборке хранится в bnd файлах, которые являются старыми добрыми файлами свойств Java.

Eclipse / Bndtools и Gradle (и в этом отношении Ant!) Имеют плагины, которые читают информацию в рабочей области и каталогах проектов и обучают их соответствующим инструментам сборки, где находятся источники, где должны храниться двоичные файлы и т. Д.Плагины для этих инструментов, которые используют bnd, стараются изо всех сил гарантировать идентичность результатов сборки.

Исходный архивированный OSGi enRoute был основан на этой модели.Несмотря на то, что он заархивирован, он все еще является основной моделью для Bndtools и используется многими компаниями.На EclipseCon 2018 есть несколько презентаций об этой модели:

Это также модель, которую OSGi использует сама для создания JAR-файлов спецификации, эталонных реализаций и наборов тестов соответствия.

Модель рабочего пространства bnd является единственной моделью, котораяподдерживает все стандарты хранилища.Это включает в себя репозитории Maven (Maven Central!), Стандарт репозитория OSGi, репозитории Eclipse P2, репозитории на основе каталогов и даже репозитории на основе POM.Поддержка внешних репозиториев в модели рабочего пространства bnd необычайно гибка.

С чего начать?

Как правило, разработчики, которые запускают в OSGi, уже имеют опыт работы с Java.Как правило, это приводит к их выбору инструмента, поскольку он уже унаследован.

Если вы можете начать с чистого листа, тогда я лично предпочитаю модель рабочего пространства bnd.При этом приоритет отдается среде IDE, в которой вы проводите большую часть своего времени, и в то же время обладаете исключительно хорошей точностью при непрерывной интеграции.За последние 2 года я помог компании начать с OSGi с нуля на основе этой модели рабочего пространства, и я весьма впечатлен тем, как они смогли воспользоваться преимуществами OSGi без какого-либо предварительного опыта намного быстрее, чем я когда-либо

Существует Краткое руководство по началу работы , обширное базовое руководство , Руководство по удаленной отладке , если вы работаете с IoT, и учебник по распределенным системам .

0 голосов
/ 12 октября 2018

Начните с OSGi enRoute.Он обсудит использование Bndtools в качестве IDE.Он уже использует плагины Bnd maven для сборки пакетов и демонстрирует использование декларативных сервисов для кодирования предоставления и использования сервисов.

...