С официальным выходом платформы Java
7 SE (Standard
Edition) компания Oracle и члены совета JCP (Java Community Process) начали обсуждать
перспективы следующей версии – Java SE 8. Главным пунктом в повестке дня
для стали, как и ожидалось, «облачные» вычисления. Кроме
того, большое внимание разработчики Java 8 собираются
уделить такому аспекту, как модульность, а также независимое обслуживание нескольких заказчиков
(приложений или юридических лиц) в одной виртуальной Java-машине
(multitenancy).
Члены совета JCP отмечают, что по «облачным» вычислениям, модульности и обслуживания нескольких клиентов
одной Java-машиной уже есть серьезные наработки. К
сожалению, компания Oracle предпочла не включать их в
версию Java 7, чтобы не задерживать и без того долгий
срок выпуска новой версии. Предполагается, что все эти наработки будут
отшлифованы и доведены до промышленного уровня к релизу Java
8.
Немаловажным аспектом в реализации технологии Java 8 должна стать модульность всей архитектуры в целом.
Именно она поможет уменьшить размер и ресурсоемкость конкретных
развертываний платформы в реальных условиях, ведь далеко не в
каждом случае для работы нужны все базовые библиотеки Java.
Кроме того, модульная архитектура Java 8 облегчит труд разработчиков
приложений – они смогут использовать только необходимые части платформы
вместо того, чтобы справляться со всеми компонентами программы одновременно. В частности, модульность должна решить одну из
важнейших проблем Java-приложений, получившую название
«classloader hell» (ад загрузки классов), когда при
работе с множеством JAR-архивов приложение часто может
получать доступ к неправильным версиям классов.
Один из проектов, нацеленных на устранение проблем с
загрузкой не тех версий классов, носит название Project Jigsaw. Вместе с альтернативным
решением OSGi (Open Services Gateway initiative)
этот проект должен войти в состав основной ветки Java до конца 2011 года. Предполагается, что модульность в Java 8 будет реализована именно на базе технологии Jigsaw и, частично, на базе наработок OSGi.
Что касается обслуживания нескольких клиентов в одной Java-машине – этот аспект является ключевым для массового
развертывания Java-приложений в «облаках», чтобы несколько
независимых сторон могли одновременно использовать одну и ту же инфраструктуру.
На данный момент в J2EE (Java Enterprise Edition) есть частичное решение этой
задачи, но оно несет в себе серьезный риск – клиент с недобрыми
намерениями потенциально может захватить все данные других пользователей.
Планируемые решения смогут решить эту проблему за счет предоставления каждому
клиентскому приложению в JVM изолированных
областей памяти – таким образом, «агрессивные» приложения даже теоретически не
смогут захватывать ресурсы других клиентских приложений, исполняемых на той же
виртуальной Java-машине.
Следует также упомянуть о реализации функций внутри функций
с помощью логических замыканий. Такие замыкания, давно обсуждаемые в сообществе
Java-разработчиков, могли бы существенно повысить
эффективность исполнения приложений в многопроцессорных системах. С появлением
логических замыканий Java, как язык программирования,
получит возможности написания вложенных функций с общими переменными, которые
уже достаточно давно реализованы в таких языках, как JavaScript и Scala.
Подробнее о жарких спорах вокруг перспектив выпуска Java 8 SE и о
роли компании Oracle в
дальнейшем развитии технологии Java, как открытой
платформы промышленного класса, можно прочитать в развернутом обзоре на сайте Computer
World.
|