Что такое OSGi и какие примеры его использования?
Я только начал слышать, что используется термин OSGi (при чтении учебников на обычных контейнерах Java EE, таких как GlassFish и Spring), однако я не смог найти простой, прямой - простое, понятное объяснение того, что OSGi - это то, что понимает предпринимательский начинающий, такой как я.
Может ли кто-нибудь предоставить такое фиктивное доказательство? Может быть, с некоторыми примерами или даже фрагментами кода?
Спасибо!
Ответы
Ответ 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 ™?