Подтвердить что ты не робот

Что такое OSGi и какие примеры его использования?

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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