Что такое OSGi и какие примеры его использования? - PullRequest
53 голосов
/ 02 января 2011

Я только начал слышать, как используется термин OSGi (при чтении учебных пособий по распространенным контейнерам Java EE, таким как GlassFish и Spring), однако я не смог найти простой, прямой,простое для понимания объяснение того, что OSGi понимает начинающий предприниматель, такой как я.

Может ли кто-то дать такое глупое объяснение?Может быть, с некоторыми примерами или даже выдержками из кода?

Спасибо!

Ответы [ 2 ]

64 голосов
/ 03 января 2011

Проще говоря, OSGi - это динамическая модульная система для Java. Он определяет средства для установки, удаления, обновления, запуска и остановки модулей. Эти модули называются комплектами, но в своей простейшей форме на самом деле являются файлами jar Java со специальным манифестом. Модули можно устанавливать, удалять и т. Д. Без остановки или перезапуска Java VM.

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

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

Это просто очень простой обзор. OSGi намного больше. Пожалуйста, ознакомьтесь с https://www.osgi.org/developer/architecture/ (введение в архитектуру OSGi) и https://www.osgi.org/developer/where-to-start/ (множество ссылок и дополнительных материалов, рекомендованных OSGi Alliance).

32 голосов
/ 03 января 2011

За счет некоторых отрицательных голосов ;-), я бы хотел ответить на это своими словами (чтобы я мог поправиться в моем понимании).

Мы создаем приложения в виде набора модулей, каждый из которых функционально сплочен сам по себе и слабо связан с другими модулями. Это имеет много преимуществ, как вы уже знаете. Со временем модуль модульности улучшился: от функций к классам, к пакетам и к единице развертывания (например, jar в Java и сборка в .Net). Но все это происходит только во время разработки, когда приложение (представляющее собой набор модулей) развернуто, сервер все еще видит его как одно гигантское монолитное приложение, то есть логические границы не сохраняются во время выполнения. OSGi делает эти границы явными во время разработки, а также во время выполнения помимо других преимуществ, описанных здесь

Я предлагаю эту превосходную бесплатную книгу, чтобы вы начали OSGi на практике

Если вы работаете на платформе Java, проверьте также эту презентацию: Почему спецификации OSGi основаны на технологии Java ™?

...