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