Ответ 1
Функции Karaf и OBR - это разные способы решения (одной) проблемы. Оба позволяют устанавливать пакеты OSGi в среду OSGi, но как они решают, какие пакеты для установки различны.
С функцией Karaf вы предоставляете файл (feature.xml, скажем), в котором явно перечислены URL-адреса для всех пакетов для этой функции. Они могут жить в файловой системе или в репозитории maven или где-либо еще, что может быть описано URL-адресом.
OBR, с другой стороны, разрабатывает, какие комплекты разрабатываются на основе требований и возможностей. Он разработает переходные зависимости того, что вы устанавливаете в качестве отправной точки, и убедитесь, что все они установлены. Обычно вы настраиваете один или несколько внешних репозиториев, поддерживающих формат OBR, а затем OBR-резольвер в вашей среде выполнения будет предоставлять пакеты из этих репозиториев. Таким образом, вы можете сказать: "Мне нужен пакет org.foo" или "Мне нужен сервис OSGi, который реализует org.bar", и создатель определит, какие пакеты наилучшим образом соответствуют вашим требованиям. OBR является более гибким и универсальным, чем функции Karaf, но может быть излишним, если вы просто устанавливаете четко определенный набор пакетов в инфраструктуру, которая уже загружена необходимой инфраструктурой. Это также не поможет вам, если пакеты, составляющие ваше приложение, не имеют зависимостей друг от друга - вам все равно нужно включить их в свой "начальный набор".
Различие становится немного размытым, потому что функции Karaf позволяют указывать диапазоны версий в URL-адресах maven, поэтому даже с помощью функции вы можете быть немного гибкими в том, что предоставляется. Функции Karaf также совместимы с OBR, поэтому вы можете написать свой файл определения функции с точки зрения требований OBR.
Я считаю, что Karaf Cave - это реализация OBR с некоторыми функциями. Таким образом, это сервер, а не новые "технологии", такие как функции или подготовка OBR.
- Enterprise OSGi в действии: http://www.manning.com/cummins