Эволюция языка Java

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

В отличие от большинства других систем программирования, совершенствование которых происходило небольшими, последовательными шагами, язык Java продолжает стремительно развиваться. Уже вскоре после выпуска версии Java 1.0, разработчики создали версию Java 1.1. Добавленные в эту версию функциональные возможности значительно превосходили те, которые можно было ожидать, судя ио изменению подномера версии. Разработчики добавили много новых библиотечных элементов, переопределили способ обработки событий и изменили конфигурацию многих свойств библиотеки версии 1.0. Кроме того, они отказались от нескольких свойств (признанных устаревшими), которые первоначально были определены в Java 1.0. Таким образом, в версии Java 1.1 были как добавлены новые атрибуты, так и удалены некоторые атрибуты, определенные в первоначальной спецификации.

Следующей базовой версией Java стала версия Java 2, где "2" означает "второе поколение". Создание Java 2 явилось знаменательным событием, означавшим начало "современной эры" Java. Первой версии Java 2 был присвоен номер 1.2. Это может казаться несколько странным. Дело в том, что вначале номер относился к внутреннему номеру версии библиотек Java, но затем он был распространен на всю версию в целом. С появлением версии Java 2 компания Sun стала выпускать программное обеспечение Java в виде пакета J2SE (Java 2 Platform Standard Edition — Стандартная версия платформы Java 2), и теперь номера версий применяются к этому продукту.

В Java 2 была добавлена поддержка ряда новых функций, таких как Swing и Collections Framework. Кроме того, были усовершенствованы виртуальная машина Java и различные средства программирования. Из Java 2 был исключен также ряд свойств. Наибольшие изменения претерпел класс потока Thread, в котором методы suspend (), resume () и stop () были представлены как устаревшие.

Версия J2SE 1.3 была первой серьезной модернизацией первоначальной версии Java J2SE. В основном модернизация свелась к расширению существующих функциональных возможностей и "уплотнению" среды разработки. В общем случае программы, написанные для версий 1.2 и 1.3, совместимы по исходному коду. Хотя версия 1.3 содержала меньший набор изменений, чем три предшествующих базовых версии, это не снижало ее важности.

Версия J2SE 1.4 продолжила совершенствование языка Java. Эта версия содержала несколько важных модернизаций, усовершенствований и добавлений. Например, в нее было добавлено новое ключевое слово assert, цепочки исключений и подсистема ввода-вывода на основе каналов. Изменения были внесены и в каркас Collections Framework и сетевые классы. Эта версия содержала также множество небольших изменений. Несмотря на значительное количество новых функциональных возможностей, версия 1.4 сохранила почти стопроцентную совместимость по исходному коду с предшествующими версиями.

Следующей версией Java стала версия J2SE 5, в которой был внесен ряд революционных изменений. В отличие от большинства предшествующих модернизаций Java, которые предоставляли важные, но постепенные усовершенствования, J2SE 5 коренным образом расширяет область применения, возможности и диапазон языка. Чтобы оценить объем изменений, внесенных в язык Java в версии J2SE 5, ознакомьтесь с перечнем основных новых функциональных возможностей:

• общие функции;

• аннотации;

• автоматическое помещение в контейнер и автоматическое извлечение из контейнера;

• перечисления;

• усовершенствованный, поддерживающий стиль for-each, цикл for;

• аргументы переменной длины (varargs);

• статический импорт;

• форматированный ввод-вывод;

• утилиты параллельной обработки.

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

Важность новых функциональных возможностей нашла отражение в примененном номере версии — "5". Если следовать привычной логике, следующим номером версии Java должен был быть 1.5. Однако новые свойства столь значительны, что переход от версии 1.4 к версии 1.5 не отражал масштаб внесенных изменений. Поэтому, чтобы подчеркнуть значимость этого события, в компании Sun решили присвоить новой версии номер 5. Поэтому версия продукта была названа J2SE 5, а комплект разработчика — JDK 5. Тем не менее, для сохранения единообразия в компании Sun решили использовать номер 1.5 в качестве внутреннего номера версии, называемого также номером версии разработки. Цифру 5 в обозначении версии называют номером версии продукта.