Java 8 – курс на «облачные» приложения
Члены совета 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, как открытой платформы промышленного класса, можно прочитать в развернутом обзоре на сайте .