2009-11-30 2 views
8

OSGi - это динамическая модульная система для Java. Хорошо, но что такое базовая тема, почему был разработан OSGi? Каковы преимущества использования OSGi? Какова основная история разработки OSGi? Почему он существует?Что является основной темой в OSGi?

+0

osgi - это способ, который говорит: «эй, мы знаем, что у программистов у тебя плохие привычки, но вот способ облегчить практику вредных привычек». –

ответ

5

OSGi является

  • система модуль для Java: он предоставляет возможность экспорта и импорта Java пакетов и обеспечения границ модулей, в том числе явной зависимости и информации о версии.

  • Обобщенный контейнер для Java-систем: пучки могут быть динамически загружены и разгружены без остановки системы, где «bundle» - это в основном файл jar.

  • Сервисно-ориентированная система программирования: в дополнение к модуляции системы по пакетам OSGi поддерживает сервис-ориентированную модульность, включая такие вещи, как whiteboard pattern (PDF).

OSGi изначально был разработан для поддержки высокопроизводительных встраиваемых систем, таких как телевизионные приставки, которые мотивируют явные зависимости и управление версии, а также делаешь его довольно легким при использовании в качестве более поздней, предприятий стороны контейнер.

+1

До того, как Альянс OSGi переименовал себя, OSGi выступала за «Инициативу открытых служб». Основной целью были встроенные домашние шлюзы и маршрутизаторы. – akr

17

Если вы посмотрите ближе, концепция classpath в Java действительно отстой.

Вы распространяете свои классы в JAR-файлах, но во время выполнения Java (почти) слепо бросает все классы из всех JAR-файлов в один большой пакет, где классы с тем же именем затмевают друг друга, а затем взаимодействуют неожиданными способами.

OSGi обеспечивает надлежащую модульность исполнения на платформе Java и, кроме того, мощную модель обслуживания, иногда называемую SOA внутри JVM.

Я настоятельно рекомендую прочитать некоторые вступительные статьи об OSGi, которые дадут более конкретное представление о том, что все это значит. Хорошая отправная точка может быть серией статей по InfoQ о Java модульности Алекс Blewitt:

3

Я думаю, этот вопрос может быть сведен к «Что является значением модуляции ». За отличную серию статей на эту тему Кирк Кноерншильд см. http://techdistrict.kirkk.com/. Я считаю, что книга также находится в работах.

Если вы академически склонны - мощь модульности и динамической сборки системы хорошо изучена недавно опубликованной книгой «Разнообразие и сложность» (http://press.princeton.edu/titles/9208.html). Хотя он и не ориентирован на программное обеспечение, в книге объясняется, почему следующее поколение адаптивной/надежной системы программного обеспечения должно быть модульным.

Обратите внимание, что в дополнение к отраслевому стандарту для модульности Java (что позволяет все вышеперечисленное); OSGi также выводит на стол мощную архитектуру «SOA-внутри JVM».

Наконец, для нежного и хорошо обработанного введения в разработке в OSGi - попробуйте книгу Нил Бартлетта «OSGi в практике» http://njbartlett.name/osgibook.html

С уважением

Ричардом

3

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

Эти препятствия снижают производительность разработчика и, следовательно, уменьшают скорость, с которой могут быть сделаны все улучшения исходного кода (а не только улучшения модульности).

+0

Я не согласен, инструментарий вокруг Bundles неплох, поэтому он может многое сделать (Bnd и Felix Annotations, и вы довольно много обходите). И у многих библиотек с открытым исходным кодом уже есть записи манифеста OSGi (именно потому, что их довольно легко добавить). – eckes

+0

Примеры: плагины Maven bundle, генерирующие файлы конфигурации, отклоненные Felix как некорректные (и их исправление вручную), «Применить к classpath», который разбивает проекты maven, нет ошибок или предупреждений, когда что-то не работает, отлаживает wazoo, iPOJO тихо не выполняет свою работу, опечатки в сообщениях, требует взлома (URL-адрес pax), чтобы сделать работу одинаковой между IDE и развернутым JAR, потому что они чрезмерно разработали ее и предположили, что каждая машина будет иметь администратора, управляющего контейнером OSGi, что делает развертывание подключаемых игр, графики, аудиопрограмм для обычных пользователей необоснованно. – user515655

Смежные вопросы