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

Как модули Java 8 отличаются от OSGi?

Java 8 с Project Jigsaw приносит модульную систему в SDK. Я считаю, что это хорошо, как часть пакета (встроенная). OSGi также предоставляет модульную систему, но требует наличия контейнера. Но кроме того, что является основным различием между ними.

Если я использую OSGi, смогу ли я запустить его, используя стандартную версию JDK 8?

Будет ли OSGi релевантным, если SDK по умолчанию включает такие возможности? Я понимаю, что и OSGi, и Jigsaw можно использовать для написания обычных модульных Java-приложений, а не только для серных приложений (сервлетов и т.д.), Правильно?

Ответ на вопрос OSGi, Java Modularity и Jigsaw говорит, что для JRE, вероятно, необходима модульная система Jigsaw. По JRE, я полагаю, что OP означает стандартные Java-библиотеки, такие как IO, CORBA, RMI, которые написаны на Java или это реализация библиотеки классов, лежащая в основе этих целей? От чтения страницы проекта Jigsaw, я думаю, это первая. Если это позже, то как это помогает другим разработчикам Java, которые пишут Java-код? Библиотеки классов написаны на C/С++. Может ли кто-нибудь прояснить ситуацию?

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

4b9b3361

Ответ 1

Как уже написано в комментариях, Java 8 не будет поставляться с Jigsaw. Возможно, Java 9.

Кроме того, на JavaOne 2013 я присутствовал на разговоре Марка Рейнхольда, и это звучало так, что способ, которым движется Jigsaw, вообще не открыт для разработчиков Java, то есть Jigsaw будет использоваться JRE для модуляции JRE (read: rt. jar), но он не должен использоваться разработчиками Java. Одной из причин было то, что Jigsaw не должна конкурировать с существующими решениями, такими как Maven, OSGi и т.д. Еще одна причина заключалась в том, чтобы закрыть доступ к солнечным * внутренним пакетам.

Но я также слышал от кого-то, присутствовавшего в BOF позже в тот день, что был некоторый спрос со стороны сообщества на открытие Jigsaw для разработчиков Java, но я не слышал об этом никаких обновлений.

В любом случае OSGi должен отлично работать с Jigsaw. Но многие библиотеки будут разбиваться на Java 9, если они будут продолжать использовать старые пакеты sun. * Или другой внутренний JRE-код.

Обновить март 2015

В EclipseCon 2015 Марк Рейнхольд выступил с основным докладом с обновлением Java 9. Java 9 будет включать в себя модульную систему для Java. Он предназначен для JRE/JDK, а также доступен для любого приложения Java, которое хочет его использовать. Однако область изменилась немного.

Основные отличия (по состоянию на март 2015 года):

  • Погрузчики классов - Jigsaw не будет использовать загрузчик классов; до работы (например, серверов приложений или OSGi) для работы с модулями и загрузчиками классов.
  • Зависимости - Jigsaw позволит указать зависимость от модулей по имени, но не на уровне пакета
  • Динамические службы. Модель обслуживания во время выполнения, предоставляемая OSGi, не будет предоставлена ​​Jigsaw.

Jigsaw не предназначена для замены и/или конкурирования с какой-либо другой системой времени выполнения или времени сборки (например, OSGi или Maven). Фактически, это намерение Jigsaw быть совместимым (каким-то образом) с обоими.