Итак, по вчерашнему утру я понятия не имел, что такое OSGi. OSGi было всего лишь одним модным словом, которое я продолжал видеть, возникая снова и снова, и поэтому я, наконец, отложил некоторое время, чтобы освежить его.
На самом деле это выглядит довольно классно, поэтому я хотел бы начать, заявив (для записи), что я вообще не против OSGi, и это не вопрос "OSGi-bashing".
В конце дня кажется, что OSGi по существу - обратился к JSR 277 о модульности Java, в котором признано, что есть недостатки с спецификацией файла JAR
, которая может привести к разрешению пространства имен и проблемам с загрузкой в некоторых случаях. OSGi также делает много других действительно классных вещей, но из чего я могу констатировать, что его самая большая ничья (или одна из них).
Для меня - как довольно новый (уже несколько лет) разработчик Java EE, совершенно поразительно, что мы находимся в 2011 году и в настоящее время живем в эпоху Java 7, и что эти проблемы с загрузкой по-прежнему остаются настоящее время; особенно в корпоративных средах, где один сервер приложений может иметь сотни JAR на нем, причем многие из них зависят от разных версий друг от друга и всех запущенных (более или менее) одновременно.
Мой вопрос:
Как и я, в OSGi, и насколько я хочу начать изучать его, чтобы увидеть, где/если он может быть полезен для моих проектов, у меня просто нет времени, чтобы сесть и узнать что-то что большой, по крайней мере сейчас.
Итак, что делать разработчикам без OSGi, когда возникают эти проблемы? Какие существуют Java (Oracle/Sun/JCP) решения, если таковые имеются? Почему Jigsaw отрезали от J7? Насколько уверен сообщество, что Jigsaw будет реализовано в следующем году в J8? Возможно ли получить Jigsaw для вашего проекта, хотя он еще не является частью платформы Java?
Я предполагаю, что я прошу здесь, это сочетание паники, интриги и facepalm. Теперь, когда я наконец понял, что такое OSGi, я просто не понимаю, как что-то вроде Jigsaw заняло 20+ лет, и затем, как это могло быть закончено с релиза. Это просто кажется фундаментальным.
И, как разработчик, мне также интересно узнать, что такое мои решения, без OSGi.
Кроме того, Примечание: Я знаю, что это не вопрос типа "чистого программирования", но прежде чем некоторые из вас согнут из-за формы, я хотел бы указать (опять же, для запись), что я намеренно поставил этот вопрос на СО. Это потому, что у меня нет ничего, кроме самого уважения к моим сослуживцам, и я ищу архитектурный ответ от некоторых из "Богов ИТ", которые я вижу каждый день здесь.
Но для тех из вас, кто абсолютно настаивает на том, чтобы вопрос SO был подкреплен некоторым сегментом кода:
int x = 9;
(Спасибо всем, кто может взвесить на этом OSGi/Jigsaw/classloader/namespace/JAR hell stuff!)