Тож станом на вчорашній ранок я не мав уявлення про те, що таке OSGi. OSGi - це просто модне слово, яке я постійно бачив, що з’являється знову і знову, і, нарешті, я нарешті виділив трохи часу, щоб розглянути його.
Насправді це здається досить цікавою штукою, тому я хотів би розпочати, сказавши (для протоколу), що я не є анти-OSGi в будь-якому відношенні, і це не якесь "OSGi-bashing" питання.
Зрештою, схоже, OSGi - по суті - звернувся до JSR 277 щодо модульності Java, який визнав, що у JAR
специфікації файлу є недоліки, які можуть призвести до вирішення простору імен та проблем із завантаженням класів у певних кутових випадках. OSGi також робить багато інших справді крутих речей, але з того, що я можу встановити, це її найбільша нічия (або одна з них).
Для мене - як досить нового (вже кілька років) розробника Java EE, абсолютно вражає те, що ми перебуваємо в 2011 році і в даний час живемо в еру Java 7, і що ці проблеми з завантаженням класів все ще присутні; особливо в корпоративних середовищах, де на одному сервері додатків можуть бути сотні JAR-файлів, причому багато з них залежать від різних версій один одного і всі працюють (більш-менш) одночасно.
Моє запитання:
Наскільки я зацікавлений в OSGi, і наскільки я хочу почати дізнаватися про нього, щоб побачити, де / чи це може бути корисним для моїх проектів, я просто не маю часу сісти і навчитися чогось такого великого, принаймні зараз.
То що робити розробникам, які не є OSGi, коли виникають ці проблеми? Які рішення Java (Oracle / Sun / JCP) наразі існують, якщо такі є? Чому лобзик вирізали з J7? Наскільки впевнена спільнота, яку Jigsaw запровадить наступного року в J8? Чи можна отримати Jigsaw для вашого проекту, хоча він ще не є частиною платформи Java?
Думаю, те, про що я тут прошу, - це поєднання паніки, інтриг та фейспалму. Тепер, коли я нарешті зрозумів, що таке OSGi, я просто не розумію, як щось на зразок Jigsaw знадобилося понад 20 років, щоб здійснитися, а потім, як це можна було консервувати з релізу. Це просто здається принциповим.
І, як розробнику, мені також цікаво, якими є мої рішення, без OSGi.
Крім того, Примітка : Я знаю, що це не питання " чистого програмування ", але перед тим, як у когось із вас ніс зіпсується, я хотів сказати (знову ж таки на протокол), що навмисно поставив це питання ТАК. Це тому, що я не маю нічого, крім найвищої поваги до своїх співвітчизників, і я шукаю відповіді на архітектурному рівні від деяких "богів ІТ", котрі бачу, що вони ховаються тут щодня.
Але для тих з вас, хто абсолютно наполягає на тому, щоб питання SO було підкріплено деяким сегментом коду:
int x = 9;
(Дякуємо всім, хто може зважити цей OSGi / Jigsaw / classloader / space names / JAR!)