Эволюция языка Java: развитие версий и основные возможности

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

 

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

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

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

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

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

  • Обобщения.
  • Аннотации.
  • Автоупаковка и автораспаковка.
  • Перечисления.
  • Усовершенствованный цикл for в стиле for each.
  • Аргументы переменной длины (varargs).
  • Статический импорт.
  • Форматированный ввод-вывод.
  • Утилиты параллельной обработки.

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

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

Следующая версия получила название Java SE 6. С выходом этой версии в ком­пании Sun Microsystems решили в очередной раз изменить название платформы Java. В названии была опущена цифра 2. Таким образом, данная платформа теперь называется сокращенно Java SE, а официально — Java Platform, Standard Edition 6 (Платформа Java, стандартная версия 6). Комплект разработчика был назван JDK 6. Как и в обозначении версии J2SE 5, цифра 6 в названии Java SE 6 означает номер версии продукта. Внутренним номером разработки этой версии является 1.6.

Версия Java SE 6 была построена на основе версии J2SE 5 с рядом дальнейших усовершенствований. Она не содержала дополнений к числу основных языковых средств Java, но расширяла библиотеки API, добавляя несколько новых пакетов и предоставляя ряд усовершенствований в исполняющей системе. В этой версии было сделано еще несколько усовершенствований и внесено несколько дополне­ний. В целом версия Java SE 6 призвана закрепить достижения в J2SE 5.

Далее была выпущена версия Java SE 7 с комплектом разработчика Java JDK 7 и внутренним номером версии 1.7. Это был первый главный выпуск java с тех пор, как компания Sun Microsystems была приобретена компанией Oracle (этот процесс начался в апреле 2009 года и завершился в январе 2010 года). Версия Java SE 7 со­держит много новых средств, включая существенные дополнения языка и библи­отек Java API. В данной версии была усовершенствована исполняющая система Java, а также включена в нее поддержка других языков, кроме Java, но програм­мирующих на Java больше интересовали дополнения, внесенные в сам язык и его библиотеку. Новые языковые средства были разработаны в рамках проекта Project Coin. Этот проект должен был обозначать многие, так называемые “мелкие” изменения в Java, которые предполагалось включить в JDK 7, хотя эффект от всех этих новых “мелких” новшеств весьма велик с точки зрения их воздействия на код. В действительности для большинства программистов эти изменения могут стать самым важным нововведением в Java SE 7. Ниже перечислены новые языковые средства, внедренные в JDK 7.

  • Расширение типа String возможностями управлять ветвлением в операто­ре switch.
  • Двоичные целочисленные литералы.
  • Символы подчеркивания в числовых литералах.
  • Расширение оператора try, называемое оператором try с ресурсами, обеспечивающим автоматическое управление ресурсами. (Например, потоки ввода-вывода могут теперь быть закрыты автоматически, когда они больше не нужны.)
  • Выводимость типов (с помощью ромбовидного оператора <>) при создании обобщенного экземпляра.
  • Улучшенная обработка исключений, благодаря которой два исключения или больше могут быть обработаны в одном блоке оператора catch (много­кратный перехват), а также улучшенный контроль соответствия типов по­вторно генерируемых исключений.
  • Улучшение предупреждений компилятора, связанных с некоторыми типами методов с переменным количеством аргументов. И хотя это нельзя считать изменением в синтаксисе, оно дает больший контроль над предупреждениями.

Несмотря на то что средства, внедренные в рамках проекта Project Coin, счи­таются мелкими изменениями в языке Java, в целом они тем не менее дают мно­го больше преимуществ, чем подразумевает само понятие “мелкие”. В частности, оператор try с ресурсами оказывает существенное влияние на порядок написания кода, опирающегося на потоки ввода-вывода. Кроме того, возможность использо­вать объекты типа String в операторе switch оказалась долгожданным усовершенствованием, позволившим во многом упростить код.

В версии Java SE 7 внесено несколько дополнений в библиотеку Java API. Важнейшими из них являются усовершенствования каркаса NIO Framework и до­полнения каркаса Fork/Join Framework. Новая система ввода-вывода NIO (перво­начально называвшаяся New I/O) была внедрена в версии Java 1.4. Но изменения, внесенные в версии Java SE 7, значительно расширили возможности этой систе­мы, причем настолько, что она зачастую обозначается как N10.2.

Каркас Fork/Join Framework обеспечивает важную поддержку параллельного программирования. Термином параллельное программирование обычно обозначают­ся технологии, повышающие эффективность применения компьютеров с несколькими процессорами, включая многоядерные системы. Преимущества, которые дают многоядерные системы, позволяют в перспективе значительно повысить производительность программ. Каркас Fork/Join Framework позволяет решать задачи параллельного программирования в следующих областях:

  • упрощение составления И использования заданий, которые могут выпол­няться параллельно;
  • автоматическое использование нескольких процессоров.

Следовательно, с помощью каркаса Fork/Join Framework можно создавать при­ложения, в которых автоматически используются процессоры, доступные в исполняющей среде. Разумеется, не все алгоритмы оказываются параллельными, но те из них, которые таковыми все же являются, позволяют добиться существенных преимуществ в скорости выполнения.

 

Вас заинтересует / Intresting for you:

Распространенные заблуждения о...
Распространенные заблуждения о... 2492 просмотров Ирина Светлова Thu, 21 Jun 2018, 18:35:12
Аплеты Java и Интернет
Аплеты Java и Интернет 2639 просмотров Ирина Светлова Sat, 09 Jun 2018, 10:17:34
Использование потоков в Java
Использование потоков в Java 1460 просмотров Antoni Wed, 12 May 2021, 09:51:36
Создание языка Java
Создание языка Java 2323 просмотров Дэн Mon, 05 Nov 2018, 09:36:39
Войдите чтобы комментировать