Описание тега osgi
Инициатива Open Service Gateway Initiative или обычно называемая OSGi - это спецификация для инфраструктуры компонентов Java с принудительной модульностью. Он предоставляет комплексную модель для создания приложений из более мелких деталей многократного использования. Хотя он работает с любым кодом Java, его преимущества лучше всего достигаются за счет его сильной модульности. OSGi инкапсулирует каждый JAR в свой загрузчик классов и выборочно экспортирует пакеты. Затем OSGi связывает каждый модуль с нужными им версиями пакета / модуля, тем самым обращаясь к аду JAR, поскольку в OSGi разрешены несколько версий одного и того же пакета / модуля. Он также предоставляет частные пакеты, то есть пакеты, невидимые для других модулей.
Модули OSGi - это обычные файлы JAR с их метаданными в манифесте, выражающими требования и возможности модуля (например, пакет импорта / экспорта, но с возможностью расширения). Модули OSGi реифицируются во время выполнения и имеют жизненный цикл. Их можно установить, разрешить, запустить, остановить и удалить. Код модуля может выполняться во время запуска / остановки, а обширный механизм событий является основой для многочисленных промежуточных программ, упрощающих написание модулей.
Популярные модели фабрики Java /DI противоречат строгой модульности (эти модели требуют, чтобы имена классов реализации были известны за пределами их модуля). Чтобы смягчить это противоречие, OSGi предоставляет модульное решение для поиска и совместного использования экземпляров между модулями, так называемая (µ) модель сервисов. Следствием сильной модульности является то, что OSGi может заменять модули без перезапуска приложения. Это очень полезно во время разработки, но также может использоваться в серверных приложениях.
Все популярные серверы Java-приложений либо построены на основе OSGi, либо полностью поддерживают его модульную спецификацию. Две популярные платформы OSGi с открытым исходным кодом - это Felix и Equinox. Equinox - это фундамент, на котором построено Eclipse. Для мира встроенных приложений Java существуют такие реализации, как Knopflerfish, Concierge, Prosyst (коммерческая), а также несколько частных реализаций.
OSGi Alliance является мировым консорциумом технологий новаторов, которые продвигают доказанный и созреть процесс создания открытых спецификаций, которые позволяют модульное программное обеспечение, созданное с использованием технологией Java. Платформа OSGi Service Platform упрощает разбиение на компоненты программных модулей и приложений и обеспечивает взаимодействие приложений и сервисов на различных сетевых устройствах.