Файл: История возникновения и развития языка программирования Си (С++) и Java (Создание языка C - начало современной эры программирования).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 30.03.2023

Просмотров: 169

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Примерно в то время, когда определялись основные черты и характеристики языка Java, появился второй, еще более важный фактор, который должен был сыграть решающую роль в судьбе этого языка. И этим вторым фактором, конечно же, стала Всемирная паутина (веб). Если бы формирование веб не происходило почти одновременно с реализацией языка Java, он мог бы остаться полезным, но незамеченным языком программирования для бытовых электронных устройств. Но с появлением Интернета язык Java вышел на передний план разработки языков программирования, поскольку Интернет также нуждался в кроссплатформенных и переносимых программах. [2, c.37-38]

Как говорилось ранее, язык Java наследует многие свои характеристики от языков C и C++. Это сделано умышленно, ведь создатели Java знали, что использование знакомого синтаксиса от C (Си) и повторение объектно-ориентированного подхода от C++ должно было сделать этот язык привлекательным для миллионов разработчиков, имеющих опыт программирования на C/C++. Помимо внешнего сходства, в Java прилагаться ряд других характерных особенностей, которые способствовали успеху языков C и C++. Во-первых, язык Java был разработан, проверен и усовершенствован людьми, имевшими солидный практический опыт программирования. Этот язык разработан с учетом потребностей и опыта его создателей. Во-вторых, Java целостен и логически непротиворечив. В-третьих, Java предоставляет программисту полный контроль над программой, если не учитывать ограничения, накладываемые средой Интернета. Если программировать грамотно, это непосредственно отражается на самих программах. В равной степени справедливо и обратное.

Из-за данных стилистических сходств характеристик языков Java и C некоторые программисты считают, что Java - это просто одна из "версий языка C++ для Интернета". Но это абсолютно серьезное заблуждение. Языку Java присущи значительные практические и концептуальные отличия. Язык C++ действительно оказал влияние на стилистику Java, но Java, всё-таки, не является усовершенствованной версией C++. Например, Java несовместим с языком C++. Разумеется, у него немало сходств с языком C++, и в исходном коде программы на Java, человек, программирующий на C++, будет чувствовать себя почти как «дома». Язык Java предназначен не для замены C++, а для решения одних задач, в то время как как язык C++ для решения других. Оба этих языка будут еще долго сосуществовать. [2, с. 39]

Нововведения в языках C (Си), C++ и Java

Языки программирования не стоят на месте, они непрерывно развиваются. Выходят новые версии синтаксиса уже существующих языков, добавляются новые концепции и техники программирования, обновляются компиляторы. Подробнее в этой главе рассказывается о функциональном программировании и о лямбда-выражениях в языке Java.


    1. Эволюция языка 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 начала запускать в релиз программное обеспечение в виде пакета J2SE (Java 2 Platform Standard Edition - Стандартная версия платформы Java 2), и с тех пор номера версий стали присваиваться именно этому программному продукту. В Java версии 2 была добавлена поддержка огромного ряда новых средств, в том числе Swing и Collections Framework. Кроме того, была усовершенствована виртуальная машина JVM и различные инструментальные средства разработки програмного обеспечения. Одновременно с этим Java версии 2 содержала некоторые не рекомендованные к употреблению средства. Наибольшие изменения претерпел класс Thread , где методы suspend(), resume() и stop() стали предпочтительными к употреблению в многопоточном программировании.

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


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

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

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

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

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

Очередной версии языка программирования Java был присвоен номер SE 6. С релизом этой версии в компании Sun Microsystems решили в очередной раз изменить название платформы Java. В названии была опущена цифра 2. Таким образом, данная платформа теперь называется сокращенно Java SE, а официально - Java Platform, Standard Edition 6 (Платформа Java, стандартная версия 6). Комплект разработчика был назван JDK 6. Как и в обозначении версии J2SЕ 5, цифра 6 в названии Java SE 6 означает номер версии продукта. Внутренним номером разработки этой версии является 1 .6.


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

После этого была выпущена версия Java SE 7 с комплектом разработчика Jаvа JDK 7 и внутренним номером версии 1.7. Это был первый главный выпуск Jаvа с тех пор, как компания 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, в целом они, тем не менее, дают много больше достоинств, чем подразумевает само понятие "мелкие". [2, с. 48-49]

    1. Зачем понадобилось изменять Java?

Самая первая версия языка программирования Java (Java 1.0) была выпущена еще в середине 90-х, и с тех пор мир разработчиков и программистов претерпел масштабные перемены. Бизнес требует все более и более крупных приложений, а программы в основном исполняются на мощных машинах с многоядерными процессорами. Разработка целого арсенала виртуальных вычислительных машин Java с эффективными компиляторами означала, что теперь разработчики и программисты могут сконцентрироваться на создании чистого и абсолютно удобного для сопровождения кода, а не выжимать из оборудования все до последнего такта процессора, содрогаясь над каждым битом памяти. [6, с.16]

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

Несомненно, за все нужно расплачиваться. В такой ситуации придется научиться писать и читать код с лямбда-выражениями, но это неплохая сделка, ведь разработчикам проще изучить новый дополнительный синтаксис и несколько новых идиом, чем вручную писать тонны громоздкого и потокобезопасного кода.

    1. Лямбда-выражения в Java

Лямбда-выражение вносит новый элемент в синтаксис и оператор в язык Java. Этот новый оператор называется лямбда-оператором, или операцией "стрелка" (->). Он разделяет лямбда-выражение на две части. В левой части указываются любые параметры, требующиеся в лямбда-выражении. А в правой части находится тело лямбда-выражения, где указываются действия, выполняемые лямбда-выражением. Операция -> буквально означает "становиться" или "переходить". [2, с.438]