Рубрики
Без рубрики

ява.ланг.ArrayIndexOutOfBoundsException Java 9 Модулей

Модули Java 9, Система модулей Java 9, Учебник по Java 9, проект java 9 jigsaw, JDK 8 против JDK 9, Преимущества системы модулей Java SE 9, структура приложения Java 9

Автор оригинала: Pankaj Kumar.

Модули Java 9 являются одним из самых больших изменений в структуре java. Здесь я собираюсь дать краткое введение высокого уровня о “Системе модулей Java 9”.

Модули Java 9

Мы рассмотрим следующие темы о системе модулей java 9.

  1. Вступление
  2. Java SE 9: Проект головоломки
  3. Проблемы текущей системы Java?
  4. Преимущества модульной системы Java SE 9
  5. Сравните JDK 8 и JDK 9
  6. Что такое модуль Java 9?
  7. Мать модульной системы Java 9
  8. Сравнение приложений Java 8 и Java 9

Вступление

Корпорация Oracle перенесла выпуск Java 9 с марта 2017 года на Сентябрь 2017 года .

Как мы знаем, Java SE 8 поставляется с тремя большими новыми функциями (плюс еще несколько улучшений и новых функций).

  1. Лямбда-выражения
  2. Потоковый API
  3. API данных

Точно так же Java SE 9 поставляется с тремя большими функциями (плюс еще несколько улучшений и новых функций).:

  1. Модульная система Java (проект Jigsaw)
  2. Java REPL
  3. Монета Проекта фрезерования

В этом посте мы обсудим основы проекта Oracle Jigsaw.

Java SE 9: Проект головоломки

Проект Jigsaw собирается представить совершенно новую концепцию Java SE 9: Модульная система Java .

Это очень большой и престижный проект от Oracle Corp в выпуске Java SE 9. Первоначально они начали этот проект как часть выпуска Java SE 7. Однако с огромными изменениями он был перенесен на Java SE 8, а затем снова отложен. Теперь он готовится к выпуску с Java SE 9 в сентябре 2017 года.

Основные цели проекта Jigsaw:

  • Модульный JDK
  • Как мы знаем, текущая JDK система слишком велика. Поэтому они решили разделить сам JDK на небольшие модули, чтобы получить ряд преимуществ (мы скоро обсудим их в следующих разделах).

  • Модульный Исходный Код
  • Текущий исходный код jar файлы слишком большие, особенно rt.jar это слишком большое право. Поэтому они собираются разделить исходный код Java на более мелкие модули.

  • Модульные изображения Во Время Выполнения
  • Основная цель этой функции – “Реструктурировать образы среды выполнения JDK и JRE для размещения модулей”.

  • Инкапсулировать Большинство Внутренних API
  • Основная цель этой функции-“Сделать большинство внутренних API Jdk недоступными по умолчанию, но оставить доступными несколько важных, широко используемых внутренних API”.

  • Система Модулей Платформы Java
  • Основная цель этой функции – “Позволить пользователю создавать свои модули для разработки своих приложений”.

  • ссылка: Компоновщик Java
  • Основная цель этого инструмента ссылок – “Позволить пользователю создавать исполняемые файлы для своих приложений”.

Если вы не понимаете эти вещи ясно, не волнуйтесь. Мы подробно обсудим эти концепции с некоторыми полезными примерами в следующих разделах, а также в моих следующих постах.

Проблемы текущей системы Java?

В этом разделе мы обсудим “Зачем нам нужна модульная система Java SE 9”, что означает проблемы текущей системы Java.

Системы Java SE 8 или более ранних версий имеют следующие проблемы при разработке или доставке приложений на основе Java.

  • Поскольку JDK слишком велик, его немного сложно масштабировать до небольших устройств. Java SE 8 представила 3 типа компактных профилей для решения этой проблемы: compact1, compact2 и compact 3. Но это не решает эту проблему.
  • Файлы JAR, такие как rt.jar и т. Д. Слишком велики для использования в небольших устройствах и приложениях.
  • Поскольку JDK слишком велик, наши приложения или устройства не могут поддерживать лучшую производительность.
  • В текущей системе Java нет надежной инкапсуляции, потому что модификатор “публичного” доступа слишком открыт. Каждый может получить к нему доступ.
  • Поскольку JDK, JRE слишком велик, трудно тестировать и поддерживать приложения.
  • Поскольку общественность слишком открыта, они не должны избегать доступа к некоторым внутренним некритичным API, таким как sun.*, *.internal.* и т. Д.
  • Поскольку пользователь также может получить доступ к внутренним API, безопасность также является большой проблемой.
  • Приложение слишком большое.
  • Немного сложно поддерживать меньшую связь между компонентами.

Чтобы решить все эти проблемы, Oracle Corp собирается выпустить систему модулей Java в выпуске Java SE 9.

Преимущества модульной системы Java SE 9

Модульная система Java SE 9 обеспечит следующие преимущества

  • Поскольку Java SE 9 собирается разделить JDK, JRE, JAR и т. Д. На Более мелкие модули, мы можем использовать любые модули, которые захотим. Таким образом, очень легко масштабировать Java-приложение до небольших устройств.
  • Простота тестирования и ремонтопригодность.
  • Поддерживает более высокую производительность.
  • Поскольку public не просто общедоступен, он поддерживает очень сильную инкапсуляцию. ((Не волнуйтесь, это большая концепция. мы скоро рассмотрим это с некоторыми полезными примерами).
  • Мы больше не можем получить доступ к Внутренним Некритическим API.
  • Модули могут очень безопасно скрывать нежелательные и внутренние детали, мы можем повысить безопасность.
  • Приложение слишком маленькое, потому что мы можем использовать только те модули, которые захотим.
  • Легко поддерживать меньшую связь между компонентами.
  • Легко поддерживать Принцип единой ответственности (SRP).

В ближайшее время мы рассмотрим все эти концепции одну за другой.

Сравните JDK 8 и JDK 9

Мы знаем, что содержит программное обеспечение JDK. После установки программного обеспечения JDK8 мы можем увидеть пару каталогов, таких как bin, jre, lib и т.д. В домашней папке Java.

Однако Oracle Corp изменила эту структуру папок немного по-другому, как показано ниже.

Структура папок JDK 8:

Структура папок JDK 9:

Здесь JDK9 НЕ содержит JRE. В JDK 9 JRE разделен в отдельную папку распространения. Программное обеспечение JDK 9 содержит новую папку “моды”. Он содержит набор модулей Java 9, как показано ниже.

В JDK 9 Нет rt.jar и Нет tools.jar

ПРИМЕЧАНИЕ:- На сегодняшний день “jmods” содержит 95 модулей. Она может увеличиться в окончательном выпуске. папка “моды” доступна по адресу ${JAVA_HOME}/jmods. Они известны как модули JDK.

Что такое модуль Java 9?

Модуль-это набор кода, данных и некоторых ресурсов с самоописанием. Это набор связанных пакетов, типов (классов, абстрактных классов, интерфейсов и т.д.) С кодом, данными и ресурсами.

Каждый модуль содержит только набор связанного кода и данных для поддержки Единой ответственности (функциональности). Принцип (SRP).

Основной целью модульной системы Java 9 является поддержка Модульного программирования на Java.

Мы обсудим “Что такое дескриптор модуля” и “Как разрабатывать модули Java” в моих следующих постах.

Мать модульной системы Java 9

На данный момент модульная система Java 9 содержит 95 модулей в JDK раннего доступа. Корпорация Oracle разделила JDK jar и спецификации Java SE на два набора модулей.

  • Все модули JDK начинаются с “jdk.*”
  • Все модули спецификаций Java SE начинаются с “java.*”

Модульная система Java 9 имеет Модуль “java.base” . Он известен как Базовый модуль. Это независимый модуль и НЕ зависит ни от каких других модулей. По умолчанию все остальные модули зависят от этого модуля.

Вот почему модуль “java.base” также известен как Мать модулей Java 9.

Это модуль по умолчанию для всех модулей JDK и пользовательских модулей.

Сравните приложения Java 8 и Java 9

Мы уже разработали множество Java-приложений, использующих Java 5, 6,7 или 8. Мы знаем, как выглядят приложения Java 8 или более ранних версий и что они содержат.

Вкратце, я изобразил приложения Java 8 на диаграмме, как показано ниже:

В приложениях Java 8 или более ранних версий компонент верхнего уровня представляет собой пакет. Он группирует набор, связанный с типами, в группу. Он также содержит набор ресурсов.

Приложения Java 9 не имеют большой разницы с этим. Он только что представил новый компонент под названием “Модуль”, который используется для группировки набора связанных пакетов в группу. И еще один новый компонент, дескриптор модуля (“module-info.java”). Вот и все.

Остальная часть приложения такая же, как и в более ранних версиях приложений, как показано ниже.

Подобно тому, как приложения Java 8 имеют пакеты в качестве компонентов верхнего уровня, приложения Java 9 имеют модули в качестве компонентов верхнего уровня.

ПРИМЕЧАНИЕ:- Каждый модуль Java 9 имеет один и только один модуль и один дескриптор модуля. В отличие от пакетов Java 8, мы не можем создавать несколько модулей в одном модуле.

Вкратце я могу сказать, что модуль Java 9 содержит следующие основные компоненты:

  • Один Модуль
  • Имя модуля
  • Дескриптор модуля
  • Набор упаковок
  • Набор типов и ресурсов

Здесь ресурсы могут быть module-info.java (Дескриптор модуля) или любые другие свойства или XML.

Мы слишком много обсуждали теорию в этом посте. Я думаю, что этого достаточно, чтобы понять основы системы модулей Java 9. Мы начнем разработку некоторых базовых модулей в моем следующем посте. Я буду обсуждать некоторые дополнительные теоретические концепции или терминологию системы модулей Java 9 по мере необходимости.

Вот и все, что касается темы “Введение в систему модулей Java 9”. Мы обсудим еще несколько концепций модульной системы Java SE 9 в моих следующих постах.

Пожалуйста, напишите мне комментарий, если вам нравится мой пост или у вас есть какие-либо вопросы/предложения/ошибки типа.

Спасибо, что прочитали мои учебные пособия.

Счастливого обучения Java SE 9!

Ссылка: Проект Jigsaw