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

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

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

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

Добавлен: 25.06.2023

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

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

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

Июль 1994 г. — Нотон ограничивает область применения проекта Liveoak, просто переориентировав Oak на Internet.

16 сентября 1994 г. — Пейн и Нотон начинают писать WebRunner — браузер типа Mosaic, позднее переименованный в HotJava.

29 сентября 1994 г. — Прототип HotJava впервые продемонстрирован исполнительным лицам компании Sun.

11 октября 1994 г. — Нотон уходит в компанию Starwave.

Осень 1994 г. — Ван Хофф реализует компилятор Java на языке Java. (Ранее Гослинг реализовывал его на языке С).

23 мая 1995 г. — Компания Sun официально представляет Java и HotJava на выставке SunWorld '95.

История версий Java

JDK Alpha and Beta

Первые публичные альфа и бета релизы Java были выпущены в 1995 году и имели крайне нестабильные API и ABI. Прилагавшийся к среде веб-браузер назывался WebRunner.

JDK 1.0 (23 января 1996)

Кодовое имя Lucatjuh.

Первая официальная версия вышла 23 января 1996 года и имела кодовое имя «Oak» (Дуб). Первая стабильная версия JDK 1.0.2, получила название «Java» (Джава).

JDK 1.1 (19 февраля 1997)

Наиболее значимые дополнения:

  • обширное изменение событий библиотеки AWT;
  • в язык добавлены внутренние классы;
  • JavaBeans (классы в языке Java, написанные по определённым правилам. Они используются для объединения нескольких объектов в один для удобной передачи данных);
  • JDBC (соединение с базами данных) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД;
  • RMI (программный интерфейс вызова удаленных методов);
  • ограниченная рефлексия (модификация во время выполнения невозможна, есть только наблюдение собственной структуры);
  • JIT (Just In Time) — компилятор для платформ Microsoft Windows, выпущенный для JavaSoft фирмой Symantec;
  • Интернационализация и поддержка Юникода, берущие начало от операционной системы Taligent.

J2SE 1.2 (8 декабря 1998)

Кодовое имя Playground.

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

Java 2, или Java 2.0 — дальнейшее развитие и усовершенствование спецификации исходного стандарта языка и платформы Java, на который теперь принято ссылаться как на Java 1.0. В настоящее время спецификация платформы Java 2 продолжает интенсивно развиваться и обогащаться, пополняясь новыми возможностями, особенно из-за конкуренции с платформой .Net, перенявшей у Java ряд ключевых особенностей.


Основными усовершенствованиями Java 2 по сравнению с Java 1.0 являются:

  • Swing включен в спецификацию платформы Java 2;
  • Коллекции;
  • Policy файлы;
  • Цифровые сертификаты пользователя;
  • Библиотека Accessibility;
  • Java 2D;
  • Поддержка технологии drag-and-drop;
  • Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках;
  • Поддержка воспроизведения аудиофайлов нескольких популярных форматов;
  • Полная поддержка технологии CORBA;
  • Включение в JDK для Java 2 JIT-компилятора, улучшенная производительность;
  • Усовершенствования инструментальных средств JDK, включая поддержку профилирования Java-программ.

J2SE 1.3 (8 мая 2000)

Кодовое имя Kestrel.

Изменения:

  • Добавлен HotSpot JVM (the HotSpot JVM был впервые выпущен в апреле 1999 для J2SE 1.2 JVM);
  • RMI был модифицирован для обеспечения совместимости с CORBA;
  • Java Naming и Directory Interface (JNDI) включены в основные библиотеки (в прошлом были доступны в виде расширений);
  • Java Platform Debugger Architecture (JPDA);
  • JavaSound API (интерфейс программирования приложений);
  • Прокси классы.

J2SE 1.4 (6 февраля 2002)

Кодовое имя Merlin.

  • Языковые изменения:
    • Ключевое слово assert (указанное в Java Specification Request 41);
  • Изменения в библиотеках:
    • Модель регулярных выражений основана на регулярных выражений языка Perl;
    • Цепочки исключений позволяют исключению инкапсулировать оригинальные исключения нижнего уровня;
    • Добавлена поддержка протокола Internet Protocol версии 6 (IPv6);
    • Не блокирующийся ввод-вывод (назван New Input/Output, NIO) (указано в JSR 51);
    • Запись журналов API (указано в JSR 47);
    • Программный интерфейся (API) для чтения и записи файлов изображений в форматах JPEG и PNG;
    • Встроенный парсер XML и процессор XSLT (JAXP) (указано в JSR 5 и JSR 63);
    • Встроенные расширения безопасности и криптографии (JCE, JSSE, JAAS);
    • Включен пакет Java Web Start (Java Web Start был впервые выпущен в марте 2001 для J2SE 1.3) (указано в JSR 56)
    • Настройки API (java.util.prefs);
    • Публичная поддержка и обновления безопасности для Java 1.4 закончились в октябре 2008. Платные обновления безопасности для пользователей Oracle закончились в феврале 2013.

J2SE 5.0 (30 сентября 2004)

Кодовое имя Tiger. Спецификация Java 5 была выпущена в сентябре 2004 года. Начиная с этой версии появилась новая система нумерации версий. Старая нумерация сохранилась для использования в библиотеках разработчиков. Оба номера версий «1.5.0» и «5.0» используются для обозначения этого выпуска Java 2 Platform Standard Edition. Число «5.0» лучше отражает уровень завершенности, стабильности, масштабируемости и безопасности J2SE. Данное соответствие было продолжено в последующих выпусках (Java 6 = JDK 1.6, Java 7 = JDK 1.7, и так далее).


В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:

  • Перечислимые типы (enum). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей:
    • Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные;
    • Перечисление может реализовывать интерфейсы;
    • Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым;
  • Аннотации — возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода;
  • Средства обобщённого программирования (generics) — механизм, аналогичный Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java;
  • Методы с неопределённым числом параметров;
  • Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками (например, между int и Integer). Наличие такой возможности упрощает код, поскольку исключает необходимость в выполнении явных преобразований типов в очевидных случаях;
  • Разрешён импорт статических методов и переменных;
  • В язык введён цикл по коллекции объектов (итератор, foreach).

Java SE 6 (11 декабря 2006)

Кодовое имя Mustang. Начиная с версии, выпущенной 11 декабря 2006, компания Sun изменила название продукта «J2SE» на «Java SE» убрала «.0» из номера версии. Внутренняя нумерация для разработчиков осталась такой же — 1.6.0. Эта версия была выпущена в рамках документа JSR 270.

Во время фазы разработки, новые билды (включая добавление улучшений и исправление дефектов) выходили примерно еженедельно. Бета версии были выпущены в феврале и июне 2006, и в итоге привери к финальному выпуску, который состоялся 11 декабря 2006.

Основные изменения вошедшие в эту версию:

  • Прекращена поддержка старых версий Win9x; Неофициально Java 6 Update 7 стала последней версией, допускавшей запуск на этих версиях Windows. Считается, что так произошло из-за сильных изменений вошедших в обновление 10 (Java 6 Update 10);
  • Поддержка скриптовых языков (JSR 223): Универсальный API для тесной интеграции с скриптовыми языками и встроенная интеграция Mozilla JavaScript Rhino;
  • Существенное улучшение производительности работы ядра и графической оболочки Swing;
  • Улучшенная поддержка веб-сервиса с использованием JAX-WS (спецификация JSR 224);
  • Поддержка JDBC 4.0 (спецификация JSR 221);
  • Компилятор Java API (спецификация JSR 199): программный интерфейс, позволяющий Java-программам программно выбирать и вызывать компилятор Java;
  • Обновление JAXB до версии 2.0: Включена интеграция парсера StAX;
  • Поддержка подключаемых аннотаций (спецификация JSR 269);
  • Множественные улучшения графического интерфейса. Такие как интеграция SwingWorker в API, сортировка и фильтрация таблиц, двойная буферизация Swing (устраняющая эффект «серых» областей);
  • JVM улучшеия включая: синхронизацию и оптимизации производительности компилятора, новые алгоритмы и обновления к существующим алгоритмам сборщика мусора, производительности запуска приложения.

Поддержка Java 6 прекратилась в феврале 2013. К этому времени все публичные обновления, включая обновления безопасности, были прекращены. Компания Oracle выпустила ещё два обновления для Java 6 в марте и апреле 2013 года, которые устраняли некоторые уязвимости безопасности.

После выпуска Java 6, Sun, а позднее Oracle, выпустили несколько обновлений которые хоть не имели изменений в публичном API, улучшали удобство использования конечным пользователем или исправляли дефекты. Начиная с января 2016 года Java 6 и более ранние версии больше недоступны для загрузки с серверов Oracle.

Java SE 7 (7 июля 2011)

Java 7 (кодовое имя Дельфин) стало крупным обновлением, которое вышло 7 июля 2011 года и стало доступным для разработчиков с 28 июля 2011. Процесс разработки был разбит на 13 этапов; последний этап был завершён 6 июня 2011. В среднем, в течение одного этапа выходило выпускалось 8 билдов, которые преимущественно состояли из улучшений и исправлений дефектов.

Новые возможности в Java 7:

  • Поддержка виртуальной машиной динамических языков в рамках Мультиязыковой виртуальной машины
  • Сжатые 64-битные указатели Доступны в Java 6 с параметром -XX:+UseCompressedOops
  • Изменения в рамках Project Coin. Возможности, включенные в Project Coin:
    • Строки в switch
    • Автоматическое управление ресурсами
    • Выведение типов при создании экземпляра обобщённого (generic) класса
    • Упрощен вызов метода с переменным числом аргументов
    • Поддержка подчеркиваний в качестве разделителей цифр для чисел (Возможность разбивать визуально числа на разряды, увеличивает удобочитаемость)
    • Поддержка коллекций на уровне языка
  • Средства для параллельного исполнения в рамках JSR 166
  • Новая библиотека Ввода-вывода для улучшения платформонезависимости и поддержки метаданных и символьных ссылок. Пакеты: java.nio.file и java.nio.file.attribute
  • Поддержка алгоритмов эллиптической криптографии на уровне библиотеки.
  • XRender для Java 2D, улучшающий управление возможностями современных GPU
  • Новое графическое API, которое планировали выпустить в Java версии 6u10
  • Расширение поддержки сетевых протоколов (включая SCTP и Sockets Direct Protocol) на уровне библиотеки
  • Обновления в XML и Юникоде.

От Лямбда-функции, проекта Jigsaw и некоторых других возможностей проекта Coin в Java 7 было решено отказаться. Они будут отложены до Java 8.

Java SE 7 Update 1 (18 октября 2011)

Изменения:

  • данный релиз содержит исправления уязвимостей безопасности
  • исправлено 6 ошибок

Java SE 7 Update 2 (12 декабря 2011)

Изменения:


  • Новый JVM (Java HotSpot Virtual Machine, версия 22), который повышает надёжность и производительность
  • Поддержка Oracle Solaris 11
  • Поддержка Firefox 5 и старше
  • JavaFX входит в состав Java SE

Java SE 7 Update 3 (14 февраля 2012)

Изменения:

  • данный релиз содержит исправления 14 уязвимостей безопасности

Java SE 8 (18 марта 2014)

Java 8 was была выпущена 18 марта 2014 года и включала некоторые функции, которые были запланированы для Java 7, но позже были отложены.

Работа над функциями была организована в соответствии с предложениями по улучшению JDK Enhancement Proposals (JEPs).

Java 8 не поддерживается на Windows XP, но по состоянию на JDK 8 Update 25, по прежнему существует возможность установки и запуска в операционной среде Windows XP. Прошлые обновления JDK 8 могут быть запущены в Windows XP, но они могут быть установлены после непосредственной распаковки файлов из запускаемого инсталляционного пакета.

Начиная с октября 2014, Java 8 стала версией по умолчанию, предлагаемой для загрузки с сайта.

Новые возможности в Java 8

  • Лямбда-выражения и аннотация @FunctionalInterface
  • Возможность наличия у метода интерфейса реализации по умолчанию
  • Аннотации типов
  • JavaScript-движок Nashorn
  • Base64 декодер (java.util.Base64)
  • Date & Time API (java.time)
  • Bulk-операции для коллекций (интерфейс Stream);
  • Параллельная сортировка массивов и коллекций (parallelStream)

Java SE 9 (Ожидается 23 марта 2017)

Будет содержать:

  • Модуляризация — проект Jigsaw
  • REPL (jshell)
  • HTTP 2.0 клиент
  • Обновление Process API
  • Money API
  • JMH

Java SE 10

Существует предположение, что будут представлены объекты без типов, а также продвижение к 64-битным адресным массивам для поддержки больших наборов данных. Ожидаемая дата выхода около 2018 года.

  • Спецификация JSR 354: API для работы с деньгами и валютой

Другие реализации Java

OpenJDK является бесплатно реализацией Java Platform, Standard Edition (Java SE) с открытым программным кодом.

До OpenJDK, существовало несколько бесплатных реализаций Java,изготовленных разными компаниями и организациями, такими как Apache Harmony. Фирма IBM также предоставляет свою реализацию Java, а RedHat предоставляет через проект IcedTea: сборочный и интерграционный пакет для OpenJDK.

Список использованных источников

  • https://ru.wikipedia.org/
  • https://geektimes.ru/post/114588/
  • https://www.bell-labs.com/
  • http://www.codenet.ru/progr/cpp/ccpphistory.php
  • The C++ Programming Language by Bjarne Stroustrup — Addison–Wesley Pub Co; 3rd edition (February 15, 2000); ISBN 0-201-70073-5
  • The Design and Evolution of C++ by Bjarne Stroustrup — Addison–Wesley Pub Co; 1st edition (March 29, 1994); ISBN 0-201-54330-3
  • http://www.interestprograms.ru/articles/historyprogramming/historycpp
  • Х.М.Дейтел, П.Дж.Дейтел "Как программировать на C++"
  • Бьерн Страуструп "Язык программирования C++. 3-е издание."
  • Симон Робинсон, Олли Корнес, Джей Глинн и др. "C# для профессионалов"
  • Джесс Либерти "Освой самостоятельно С++ за 21 день"
  • Е Зуев, А Кротов "Новые возможности языка Си++", PC Magazine/Russian Edition, #7, 1994.
  • http://www.tiobe.com/tiobe-index/