Подтвердить что ты не робот

Почему Sun изобретает еще одну модульную систему, когда все стандартизированы на OSGi?

Sun прилагает много усилий для модуляции JDK в виде Jigsaw и намекает, что это должен быть формат модуля по выбору для других разработчиков Java. Единственным заметным игроком, который использует это, является NetBeans (и производные приложения).

С другой стороны, индустрия стандартизовалась вокруг OSGi, и все крупные поставщики приложений, основанные на их работе, на платформе модулей, даже Sun own Glassfish. Там даже порт NetBeans использует OSGi в качестве модульной системы вместо собственных модулей NetBeans. Даже Maven работает над тем, чтобы стать средой OSGi.

Это просто NIH, лицензирование или другая причина?

4b9b3361

Ответ 1

Отличный вопрос. Я понимаю, что в некоторых областях OSGi выходит за рамки того, что необходимо для модулей JVM (со всей соответствующей сложностью, которые приносят), в то время как в других областях он не проходит достаточно далеко. Таким образом, существует много совпадений между ними, но, возможно, недостаточно.

Смотрите эту запись в блоге

Ответ 2

Цитирование http://blogs.oracle.com/mr/entry/jigsaw:

OSGi совсем не интегрирован с Язык Java, однако, был построенный на платформе Java SE чем изнутри.

Эта последняя проблема может быть зафиксирована. солнце планирует теперь работать непосредственно с OSGi Alliance, чтобы будущая версия OSGi Framework может полностью использовать возможности JSR 294 и тем самым добиться более тесной интеграции с языком.

(...)

Если и когда будущая версия Платформа Java SE включает спецификацию модульной системы, то Sun предоставит означает перенос модулей Jigsaw до это стандарт. Тем временем хорошо активно искать пути, взаимодействовать с другим модулем систем и, в частности, OSGi.

Ответ 3

Обоснование проекта Jigsaw и того, как оно относится к OSGi, было описано командой Jigsaw в Java Posse Podcast 259.

Эти проекты не полностью перекрываются, и введение Jigsaw не звучит как death knell для OSGi - объем OSGi выходит за пределы того, что Jigsaw будет пытаться. Гораздо больше для Jigsaw, чем команда OSGi, может предоставить (изменения языка, класса и JVM). Дизайн OSGi основан на текущей конструкции JVM - изменения в JVM принесут пользу всем.

По крайней мере, это мое взятие из того, что я прочитал.

Ответ 4

Одна функция отсутствует в OSGi. Он не поддерживает модули, которые являются подмножествами пакетов. Экспорт выполняется на уровне пакета.

Модули подмножества пакетов - единственный способ разрезать гордиев узел зависимостей JDK. И хороший намек на то, почему вы должны сохранить свой код в чистоте круговых зависимостей.

На протяжении многих лет, однако, этот стиль развития может привести к неожиданным соединения между API-интерфейсами и между их реализации - в свою очередь, к увеличению времени запуска и памяти след. Тривиальная командная строка "Привет мир!" программы, например, сейчас загружает и инициализирует более 300 отдельные классы, занимающие около 100 мс на недавней настольной машине, несмотря на еще более героические инженерные усилия таких как обмен данными между классами. ситуация еще хуже, конечно, для более крупных приложений.

Изменить: я был неправильным. OSGi поддерживает разделенные пакеты.