Эволюция Java, или “Тигр” перед прыжком

РАЗРАБОТКА ПО

Обзор новых функций языка программирования Java, которые, возможно, появятся в J2SE 1.5 Tiger

Java развивается вполне динамично и не случайно является одним из самых популярных в мире языков объектно-ориентированного программирования. С самого первого дня своего существования он привнес в мир разработки ПО и элегантность, и мощь одновременно.

Но создатели языка не захотели почивать на лаврах: они постоянно обновляли его в соответствии с новыми веяниями рынка и пожеланиями программистов. Это стало возможно благодаря наличию в языке специальной конструкции, позволяющей помечать те элементы API, от которых хотелось бы избавиться в будущем. Такой механизм помог постепенно отказаться от неудачных конструкций языка и дал ему возможность развиваться естественным образом. Очень удачное и дальновидное решение!

Большое влияние на развитие Java также оказывает организованная и поддерживаемая с 1995 г. корпорацией Sun инициатива JCP (Java Community Process - общественный процесс развития Java, jcp.org), в рамках которой создаются открытые рабочие группы JSR (Java Specification Request - запрос на изменение спецификации Java), призванные вносить в язык изменения и улучшения. Это избавило Java от пристрастного влияния на него отдельных людей или компаний.

В апреле этого года вышла J2SE (Java 2 Standard Edition) 1.4.2, которая станет последним выпуском версии 1.4. Язык Java переходит на новый виток своего развития: на горизонте уже “мелькает” версия 1.5 с интригующим именем Tiger. В JCP придерживаются правила: представлять очередные версии пакета разработчика J2SE SDK каждые полтора года (см. табл. 1), исправляя ошибки предыдущих версий и включая новые возможности языка программирования.

Таблица 1. История выхода версий J2SE

* Ожидаемая дата выпуска.                               

А теперь перейдем к самому интересному: рассмотрим эволюционные изменения, которые, возможно, несет с собою Tiger в стан Java-разработчиков. Именно “возможно”, так как инициативная группа JSR 176 лишь рассматривает и объединяет имеющиеся у других инициативных групп предложения по улучшению языка и не гарантирует, что все они попадут в его новую версию.

Самые значительные изменения (их аж четыре!) предусмотрены JSR 201. Рискнем предположить, что это первая попытка серьезного изменения непосредственно самого языка после добавления внутренних классов в версии 1.1 и ключевого слова assert в версии 1.4. Первое новшество - явная поддержка типа перечисления (конструкция enum языка Си). Теперь это специальный тип класса, в который вы можете добавлять свои методы и атрибуты *1. Второе нововведение - автоматическая упаковка простых типов (boolean, int, float и др.). Они могут непосредственно помещаться в коллекции и интерпретироваться как экземпляры класса Object, при этом для них будут автоматически создаваться классы “оболочки” (Boolean, Integer, Float и др.).

_____

*1. Соответствует паттерну Typesafe Enums, описанному Джошуа Блоха в мировом бестселлере “Java. Эффективное программирование”. М.: Лори, 2002.

Следующее изменение - статический импорт. Идея очень проста: можно импортировать статистические методы и атрибуты классов и затем обращаться к ним без префикса в виде этих же самых классов. Очевидный пример - класс Math, имеющий статический атрибут Pi и статический метод cos. При проведении статического импорта класса Math к ним можно обращаться непосредственно как к Pi и cos соответственно. И наконец, четвертое нововведение состоит в добавлении ключевого слова foreach, позволяющего при помощи экземпляра класса Iterator обходить объекты коллекций.

Одним из самых существенных различий между языками C++ и Java является наличие в первом параметризованных типов. Стоит отметить, что этот механизм очень важен и полезен и разработчики давно ждут его появления в Java по представлению инициативной группы JSR 14. Во-первых, из кода исчезнет масса явных преобразований типов. Во-вторых, вместо набора одноименных методов для различных примитивных и объектных типов данных останется только один - параметризованный метод. В-третьих, появится функция отлавливания ошибок преобразования типов в режиме компиляции, а не исполнения программы. В J2SE 1.5 поддержка параметризованных типов будет точно введена!

JSR 175 предлагает расширить возможности языка по управлению метаданными, позволяющими разработчикам аннотировать создаваемый ими код. Они преимущественно будут использоваться утилитами разработки и развертывания приложений. Каждый атрибут, метод и класс сможет иметь скрытый атрибут, описывающий его. Например, для технологии JavaBean предусмотрено два метода: getFoo и setFoo, с помощью которых можно будет связывать между собой методы и атрибуты. Актуальны метаданные и для описания процесса развертывания EJB-приложений.

Что же касается остальных изменений, то мы свели их в табл. 2, используя которую пытливый читатель сможет самостоятельно найти дополнительную информацию.

Таблица 2. Перечисление некоторых

возможных эволюционных дополнений J2SE 1.5

В статье использована информация портала TheServerSide (www.theserverside.com).

Версия для печати