Я довольно плохо знаком с целым Java и миром OSGi, и я испытываю затруднения при понимании эко-системы веб-приложения OSGi.
Чтобы быть более точным, я в данный момент пытаюсь понять, как все части эко-системы связаны друг с другом:
Чтобы дать Вам визуальное представление моего фактического понимания их отношений проверяют это изображение:
Насколько я знаю, что Платформа OSGi является реализацией спецификации OSGi. Время выполнения является распределением, которое добавляет дополнительную функциональность сверху спецификации OSGi как вход, например. С тех пор, кажется, существуют некоторые различия в механизме пути к классу OSGi и веб-контейнеров как Tomcat, Вам нужен некоторый переводчик. Эта часть обрабатывается "веб-Расширителем".
Разъясните эту целую вещь для меня? Я понимаю, что все исправляет?
OSGi - это стандарт API и упаковки для взаимодействующих программных модулей. Это похоже на другие стандарты API, такие как JPA или Java EE.
Среда выполнения OSGi - это сервер, который следует стандарту OSGi, это реализация стандарта. Вы упомянули несколько распространенных: Knopflerfish, Eqinox. Они позволяют запускать пакеты OSGi.
Веб-контейнер обычно относится к реализации специфичных для Интернета частей Java EE (сервлетов). Стандарт сервлетов также определяет API и упаковку, как и OSGi, только разные.
Вам нужен сервер для запуска ваших веб-приложений Java EE. Вы упаковываете свое приложение как Java Web Archive (WAR) и просите сервер приложений запустить его. Как вы упомянули, существует несколько серверов, таких как Tomcat, Jetty, а также более крупные серверы, которые охватывают большие части стандарта Java EE, такие как Glassfish и JBoss.
Веб-расширитель пытается унифицировать стандарт сервлетов с OSGi. При добавлении некоторых данных, относящихся к OSGi, к уже упакованной WAR, WAR будет автоматически проанализирован и запущен вашей средой выполнения OSGi. Ваши сервлеты WAR будут опубликованы в службе OSGi http с помощью веб-расширителя. С помощью веб-расширителя вы можете запускать как стандартные приложения OSGi, так и WAR, используя только среду выполнения OSGi, без необходимости в Java EE-совместимом сервере, таком как Tomcat.
Jens,
Поскольку у меня есть некоторый опыт работы с OSGi, я бы не советовал вам начать с простой OSGi.
Вместо этого начните с Eclipse RCP (Rich Client Platform).
Вы получите не только среду исполнения OSGi, но и полнофункциональную интегрированную IDE, если скачаете Eclipse IDE for RCP and RAP Developers edition здесь.
К счастью для всех нас, вы можете получить книгу Eclipse Rich Client Platform (2nd Edition), которая была выпущена всего несколько месяцев назад и содержит обновленную информацию/руководство по Eclipse RCP.
OSGi - это фундаментальные строительные блоки Eclipse RCP, однако OSGi сам по себе является запутанным и скучным (по крайней мере, для начинающих). Освоение Eclipse RCP намного проще и приятнее, вы можете создать функциональное приложение "do-something" в течение нескольких часов.
С простым OSGi вам повезет, если вы сможете избавиться от исключений ClassNotFound в течение первых нескольких дней.
После некоторого времени работы с Eclipse RCP "конвертируйте" ваше приложение в Eclipse RAP, чтобы запустить его как веб-приложение в контейнере сервлетов Java. Посмотрите, понравится ли вам это, даже если нет... к этому времени вы уже освоите концепции и практику OSGi, и ваше плавание к "простой OSGi" будет несколько более плавным, чем если бы вы начали с нуля.
Удачи, Дженс!
P.S. Я также пишу об этом на моем блоге Java EE, хотя не всегда конкретно о OSGi.