Java 9: Эволюция или революция?

Java 9: Эволюция или революция?

4 мая, 2018 Выкл. Автор FYI

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

Модульная система

Плюсы: Самое главное изменение, которое заявляется для Java 9 — это модульная система. Обновленный инструментарий теперь предлагает модульный вариант реализации программных проектов. Соответственно Java 9 содержит модульную JDK; модульный исходный код Java; модульные run-time изображения; позволяет скрывать внутренние API. Модульная система существенно расширяет возможности для разработки проектов связанных с распределенной обработкой данных. Новая Java 9, например, подходит для проектов по построению IoT решений или платформ, где необходимо параллельно работать с различными данными. Кроме этого, модули java привнесли новое понимание доступа к public methods, что позволяет делать методы public внутри модуля (для разработчиков) и ограничивать доступ к ним обычным пользователям.

Минусы: После выхода Java 9 прекратиться поддержка предыдущих версий программного инструмента и клиентам нужно будет тратить время и средства на миграцию. Если проект в стадии разработки – это будет не слишком сложно, но у других решений могут возникнуть серьезные проблемы. Кроме этого, не решена проблема Dependency hell (взаимных зависимостей программных продуктов и библиотек, приводящее к сложности установки новых и удаления старых продуктов).

Обновленное API

Плюс: В Java 9 будет представлено обновленное API в которое добавят несколько новых классов и методов для удобного управления действиями операционной системы. Появятся и новые интерфейсы в Process API: java.lang.ProcessHandle и java.lang.ProcessHandle.Info.

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

Реактивное программирование

Плюсы: Java SE 9 Reactive Streams API — позволит реализовать асинхронные, масштабируемые и параллельные приложения с использованием Java.

Появятся следующие API:

java.util.concurrent.Flow;

java.util.concurrent.Flow.Publisher;

java.util.concurrent.Flow.Subscriber;

java.util.concurrent.Flow.Processor.

Минусы: Нет.

HTTP/2 клиент

Плюсы: Появится полноценная поддержка протоколов HTTP/2 и WebSocket. Для этого разработан специальный API. Он доступен в пакете «java.net.http». Поддерживает, как синхронный, так и асинхронный режимы.

Минусы: Использование HTTP/2 пока сопряжено с большими трудностями. Новый протокол не корректно поддерживают даже очень популярные сервисы.

Создание мультирелизных версий

Плюсы: Новый инструментарий позволяет создавать multi-release файлы, в которых можно использовать код предыдущих версий Java. Для некоторых проектов, которым сложно перейти на модульную платформу, такое решение может стать полезным.

Минусы: Появление инструмента для создания multi-release файлов свидетельствует о проблеме с обратной совместимостью в новой версии Java. Поэтому новый инструмент вполне можно рассматривать, как попытку Oracle оправдать тот факт, что Java 9 «из коробки» не поддерживает Java 8 или Java 7.

Универсальное API для изображений

Плюсы: Интерфейс MultiResolutionImage доступный в пакете java.awt.image позволит работать с изображениями с различным разрешением.

Минусы: API для работы с изображениями было всегда. Поэтому снова снова речь идет о эволюционном улучшении, которое учитывает наличие с различным разрешением экранов.

Повышение читаемости конструкции обработки исключений

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

Минусы: Никаких инноваций в этом улучшении нет. Все ждут от Java 9 новых технологических возможностей, а не возможностей визуально оптимизировать программный код.

Тестирование в процессе разработки

Плюсы: Java SE 9 по сравнению с предыдущими версиями, обладает лучшими возможностями для устранения ошибок во время разработки. Безусловно, это сокращает сроки тестирования и повышает качество разработки.

Минусы: Нет.

API для управления процессами

Раньше существовали ограничения по управлению операционной системы с Java. В более ранних версиях Java, нужно было, либо получить доступ к собственному коду, либо использовать какое-то обходное решение. Причем для разных программных платформ требовалось разное решение. С выходом новой версии Java управление процессами станет простым и универсальным.

Минусы: Возможные проблемы с обратной совместимостью.

Безопасность

Плюсы: В Java 9 будет применяться новая система обновления при которой обновления будут четко классифицироваться и разделяться. Например, обновления безопасности будут проходить отдельно от других крупных или второстепенных обновлений.

Минусы: речь идет не о безопасности проектов на Java 9, а только о разделенном механизме обновления инструментария. По

Итого:

Переходить на Java 9?

ДА: Если продукт в стадии доработки, разработки – то миграция на Java 9 – это правильные инвестиции. Ведь на момент выхода продукта, он будет работать на поддерживаемой версии Java, с более простой поддержкой и большим выбором ресурсов для поддержки. Кроме этого для работы на предыдущих версиях будет сложнее найти разработчиков.

НЕТ: Увы, выход Java 9 приведет к сворачиванию поддержки версий 7, а затем Java 8. К сожалению, никакой революции с Java 9 не произошло. По количеству инноваций программный инструмент не дотягивает до полноценной номерной версии. Все функции и улучшения вполне могли выйти с простым дополнением к Java 8.