В чем разница между Equinox и Virgo?
Я уверен, что я пойму разницу, поскольку я начинаю делать больше вещей, связанных с OSGi, но я думал, что это хороший вопрос, потому что это неясно мне из нескольких быстрых поисков Google. Если у кого-то есть ясный, краткий ответ...
Ответы
Ответ 1
Неточная аналогия: Equinox - это двигатель, Дева - автомобиль.
Equinox - это среда выполнения из проекта Eclipse (варианты реализации включают Felix (из Apache) и Knopflerfish).
Дева использует Equinox в своем ядре, но обеспечивает многие из вещей, которые потребуются при использовании в производстве. Дева - это проект SpringSource dm Server, пожертвованный Фонду Eclipse, поэтому он явно поддерживает все вещи Spring. Существует много подобных продуктов (Karaf (ServiceMix), а также множество серверов приложений Java EE).
Рабочая среда OSGi - это, как правило, очень маленькая среда (среда выполнения), достаточная для запуска/обеспечения среды OSGi. Такие продукты, как "Дева", предлагают единую производственную/корпоративную функциональность в последовательном, проверенном виде и часто включают удаленный доступ к оболочке, поддержку веб-приложений, безопасность и т.д.
Вы можете работать с рабочей средой напрямую, добавляя каждую функцию по мере необходимости, но, хотя это может быть полезно для систем с ограниченными ресурсами, обычно требуется много усилий для небольшой награды (кроме учебного курса).
Ответ 2
Технически Equinox - это OSGi Framework, а Дева - это контейнер. Контейнер едет поверх фреймворка и добавляет функциональность. Конкурирующими технологиями для этого являются Felix и Karaf, которые являются платформой OSGi Apache Software Foundation (Felix) и контейнером (Karaf). Разница между предложением ASF и базой Eclipse заключается в том, что предложения Eclipse являются эталонной реализацией спецификации OSGI 4.2.
Реферальная реализация "подсистем" Девы действительно является существенным улучшением для скоординированного развертывания наборов пакетов. В Karaf они используют механизм развертывания "функций". Основное различие между механизмом развертывания "подсистем" и "функциями" заключается в том, что в подсистемах вы можете разделить конкретные наборы библиотек и запретить использование их пакетов вне определенной подсистемы. Благодаря функциям все пакеты, доступные для других библиотек, становятся доступными для всего контейнера.