OSGi: В чем разница между Apache Felix и Apache Karaf?

132

Apache Karaf - это подпроект Apache Felix . Он определяется как «облегченный контейнер OSGi».

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

GabiMe
источник

Ответы:

210

«Легкого OSGi контейнер» этикетка контрастное Karaf с более функционально богатыми OSGi контейнерами, не с Феликсом .

Процитируем Гийома Ноде (автора Карафа) отсюда :

Феликс - это просто среда исполнения ядра OSGi. Karaf предоставляет «распространение» на основе Felix, добавляя другие функции, такие как консоль, механизм удаленного взаимодействия SSH, средство развертывания файлов и многое другое.

На этой диаграмме архитектуры Karaf Felix (или другая реализация OSGi - в настоящее время также поддерживается Equinox ) - это блок OSGi, остальные блоки - это функции, добавленные Karaf:

Архитектура Карафа Следовательно, если у вас нет особых потребностей, которые не удовлетворяются с помощью Karaf (требующего доступа к базовой реализации), обычно имеет смысл использовать это, поскольку оно предоставляет больше «из коробки».

Мэтью Мердок
источник
5
Хорошая особенность любого контейнера OSGi заключается в том, что вы можете выбрать только те пакеты, которые вам нужны, и развернуть их в своем контейнере. Поэтому я бы посоветовал сначала разработать архитектуру своего приложения, а затем выбрать то, что вам нужно. Совет «просто установите всю платформу, потому что она многофункциональна» звучит как возвращение к огромным серверам приложений Java EE. Я не говорю, что Apache Karaf хоть сколько-нибудь велик, я просто подчеркиваю, что вы можете и должны просто развернуть то, что вам действительно нужно.
Марсель Офферманс
1
Мне кажется, что этот ответ неполон, поскольку в нем не упоминается вариант использования встраивания Felix в приложение (без необходимости использования контейнера, такого как Karaf) - например, для обеспечения возможности плагина - что является моей интерпретацией по следующей ссылке. Я ошибся? (Я не эксперт.) Ссылка: felix.apache.org/documentation/subprojects/…
Дж. Вудчак
6

@Marcel Karaf не является монолитным или огромным, как сервер Java EE. Это очень тонкая и минималистичная реализация. Это основной продукт без особых функций, кроме базовой консоли, загрузки файлов, чтобы вы могли читать файлы конфигурации и т. Д. Последний его zip-файл имеет размер 19,1 МБ. Да. Маленький. Он может легко работать на небольших устройствах и работать во встроенном ПО.

Возможно, вы думаете о чем-то более похожем на ServiceMix, который использует Karaf в качестве ядра / ядра. Но он включает в себя CXF, ActiveMQ, Camel и другие библиотеки в своей полной конфигурации. Уже тогда они бывают минимального, среднего и полного размера.

На самом деле, для 99% проектов было бы бессмысленно начинать напрямую с Феликса и не использовать вместо него Karaf.

Ranx0r0x
источник
-1

В настоящее время существует три популярных контейнера OSGi с открытым исходным кодом:

  - Equinox. It is the modular Java runtime at the heart of the Eclipse IDE,
  - Knopflerfish, Is an open source implementation of the OSGi R3 and OSGi R4 specifications. 
  - Apache Felix. Is the open source OSGi container from the Apache Software Foundation.

http://www.javaworld.com/article/2077837/java-se/java-se-hello-osgi-part-1-bundles-for-beginners.html

Проект Apache поддерживает универсальный контейнер OSGi под названием Felix. Здесь используется как ServiceMix и

Основное различие между ServiceMix и Karaf заключается в том, что ServiceMix включает в себя множество других компонентов интеграции - брокер сообщений ActiveMQ, механизм маршрутизации Camel и некоторые другие вещи.

Согласно: http://kevinboone.net/osgitest.html

Алехандро Хдз
источник