Файл: История возникновения и развития языка программирования Си (С++) и Java.pdf
Добавлен: 03.07.2023
Просмотров: 59
Скачиваний: 3
Важность новых функциональных возможностей нашла отражение в примененном номере версии — “5”. Если следовать привычной логике, следующим номером версии Java должен был быть 1.5. Однако новые свойства столь значительны, что переход от версии 1.4 к версии 1.5 не отражал бы масштаб внесенных изменений. Поэтому, чтобы подчеркнуть значимость этого события, в компании Sun решили присвоить новой версии номер 5. Поэтому версия продукта была названаJ2SE 5, а комплект разработчика — JDK 5. Тем не менее для сохранения единообразия в компании Sun решили использовать номер 1.5 в качестве внутреннего номера версии, называемого также номером версии разработки. Цифру 5 в обозначении версии называют номером версии продукта [14].
Следующая версия Java получила название SE 6. С выходом этой версии компания Sun решила в очередной раз изменить название платформы Java. В названии была опущена цифра 2. Таким образом, теперь платформа называется Java SE, а официальное название продукта —Java Platform, Standard Edition 6 (Платформа Java, стандартная версия 6). Комплект разработчика Java был назван JDK 6. Как и в обозначении версии J2SE 5, цифра 6 в названии Java SE 6 означает номер версии продукта. Внутренним номером разработки этой версии является 1.6.
Версия Java SE 6 была построена на основе версии J2SE 5 с рядом дальнейших усовершенствований. Она не содержала дополнений к числу основных функций языка Java, но расширяла библиотеки API, добавляя несколько новых пакетов и предоставляя рад усовершенствований времени выполнения. Было сделано еще несколько модификаций и внесено несколько дополнений. В целом версия Java SE 6 призвана закрепить достижения, полученные в J2SE 5.
Новейший выпуск Java, Java SE 7, с комплектом разработчика Java JDK 7 и внутренним номером версии 1.7 — первый главный выпуск Java от Sun Microsystems, который был приобретен Oracle (процесс начался в апреле 2009 года и завершился в январе 2010 года). Java SE 7 содержит много новых средств, включая существенные дополнения языка и библиотек API. Усовершенствована система исполненияпрограмм Java, включена также поддержка языков, отличных от Java, но программистам Java больше интересны дополнения в области языка и библиотек [13].
Проект Project Coin должен объединить множество небольших изменений языка Java, которые будут включены в JDK 7. Хотя все эти новые средства вместе называют “небольшими”, эффект этих изменений весьма велик с точки зрения кода, на который они воздействуют. Фактически для большинства программистов эти изменения могут стать самой важной новой возможностью Java SE 7. Вот список новых средств языка.
- Тип String теперь может контролировать оператор switch.
- Бинарные целочисленные литералы.
- Символы подчеркивания в числовых литералах.
- Расширенный оператор try, называемый try-с-ресурсами, обеспечивающий автоматическое управление ресурсами. (Например, потоки теперь могут быть закрыты автоматически, когда они больше не нужны.)
- Выведение типов (при помощи оператора <>) при создании экземпляра обобщения.
- Улучшенная обработка исключений, при которой два или больше исключений могут быть обработаны одним блоком catch (мультиобработчиком), и лучший контроль соответствия типов повторно передаваемых исключений.
- Хотя синтаксис не изменился, предупреждения компилятора, связанные с некоторыми типами методов и переменным количеством аргументов, были улучшены. Кроме того, вы получаете больше контроля над предупреждениями.
Как можно заметить, даже притом что средства Project Coin считаются небольшими изменениями языка, их преимуществ, в целом, намного больше, чем подразумевает слово “небольшой”. В частности оператор try-с-ресурсами существенно влияет на способ создания кода, ориентированного на потоки. Кроме того, способность использовать строки в операторе switch является долгожданным усовершенствованием, которое упростит код во многих ситуациях.
В Java SE 7 внесено несколько дополнений в библиотеку API Java. Важнейшими из них являются усовершенствования NIO Framework и дополнения для Fork/ Join Framework. NIO (первоначально именуемый как New I/O) был добавлен к Java в версии 1.4. Однако изменения, предложенные в Java SE 7, существенно увеличили его возможности. Причем настолько существенно, что зачастую используется термин NIO.2.
Инфраструктура Fork/Join Framework оказывает существенную поддержку для параллельного программирования (parallel programming). Параллельное программирование — это термин, используемый обычно для описания технологий, повышающих эффективность использования компьютеров с несколькими процессорами, включая многоядерные системы [9]. Преимущества, предлагаемые многоядерными системами, способны в перспективе существенно увеличить производительность программ. Инфраструктура Fork/Join Framework обеспечивает параллельное программирование в таких областях, как
- упрощение создания и использования задач, способных выполняться одновременно;
- автоматическое использование нескольких процессоров.
- Java 8 - обновленная платформа для встраиваемых устройств, вобравшая в себя самый огромный пакет обновлений со времен начала существования этого международного стандарта веб-разработки. Выбранный курс на поддержку и развитие кросплатформенности Джава должен во много раз увеличить возможности выбора платформ, развить и облегчить портируемость (возможность перенесения) приложений и в целом удлинить жизненный цикл продуктов функционала [13].
- Java 8 поддерживает вхождение лямбда-выражений, или так называемых замыканий, способствующих очистке кода, использующегося для работы с многоядерными процессорами. Одно только это может стать приличным аргументом к тому, чтобы скачать эту версию Java 8 и попробовать её работу, тем более что сейчас это можно сделать бесплатно.
- Также Джава для Windows 7, 8, 10 способна работать с компактными профилями, предназначенными для развертывания на ограниченном в ресурсах оборудовании, что немаловажно для многих пользователей подобных продуктов.
- Java 8 содержит улучшенные средства шифрования, такие как TLS 1.2 на клиентской стороне, стоящие по умолчанию, усиленные использованием паролей алгоритмы шифрования и поддержку идентификации имени сервера в JSSE Server, которая обеспечивает доступ к вирт-хостам одного IP с помощью шифрованного соединения.
- Также в Java 8 добавлены средства, использующиеся для параллельной сортировки больших массивов, а кроме этого, еще и функции, позволяющие проводить кодирование и декодирование Base64.
2.4 Последняя версия Java
21 сентября 2017 года состоялся релиз Java 9.
Особенности предыдущей (8-й) версии благодаря своей универсальности предоставили разработчикам возможность создавать решения для самых разных секторов бизнеса, включая финтех, здравоохранение и другие индустрии. Среди ключевых нововведений Java 8 следует отметить лямбда-выражения, стримы и изменения в API.
В свою очередь Java 9 также изобилует разнообразием обновлений “под капотом” и в API. Кроме очевидного проекта Jigsaw, на который возложена обязанность по внедрению модулярности в основные компоненты Java, новая версия может похвастаться ещё тремя важными дополнениями:
Полная поддержка клиента HTTP 2.0: Вопрос в скорости, и HTTP 2.0 предоставляет более высокие результаты, колеблющиеся от 11.81% до 47.7% по сравнении с клиентом HTTP 1.1.
- Jshell: Новый инструмент командной строки. Если разработчик хочет автономно запустить несколько строк Java, то это можно выполнить без необходимости заворачивать все в отдельный метод или проект.
- Microbenchmark: Теперь производительность отдельных небольших частей кода можно измерить стандартизированным методом. Анализ JMH за наносекунды уникален для Java 9.
Далее мы ближе рассмотрим несколько опций, отсутствовавших в Java 8.
HTTP/2 клиент
Это, пожалуй, самое ожидаемое нововведение — HTTP клиент с поддержкой как HTTP/2 протокола, так и WebSocket. Ведь SPDY протокол от Google, на базе которого основан HTTP/2 уже демонстрирует улучшенную производительность наравне с Netty или Jetty, поддержку неблокирующего режима (много потоков на запрос/ответ), а также Push-поддержку сервера, позволяющую отправлять ресурсы клиенту без явного запроса.
Новый API представлен как первый инкубаторный модуль для Java — экспериментальная фича, которая при должном развитии официально появится в следующей версии (то есть Java 10), либо будет удалена. Необычный концепт для Java, который поощряет эксперименты, но при этом не нарушает обратной совместимости.
Проект Jigsaw
Проект Jigsaw (в переводе “головоломка”) направлен на модуляризацию Java. Это значит, что программный код разбивается на части и организуется по модулям в зависимости от задач, которые эти модули выполняют. Это позволяет использовать модули повторно, упрощает их организацию и отладку. Что ведет к оптимизированной и отлаженной разработке ПО. Это ключевое отличие Java 9 от Java 8.
Второе большое преимущество — Java Platform становится легче и более масштабируемой. Это позволяет Java-приложениям работать даже на устройствах с низкой производительностью (так как для работы требуется меньше ресурсов). Это большое изменение особенно в контексте интернета вещей (IoT). Шаг вперед для Java, и шанс увидеть больше IoT-приложений, написанных на этом языке.
Jshell
Jshell добавит встроенную поддержку и популяризирует подход Java к REPL (Read-Eval-Print-Loop). Это интерактивный инструмент, позволяющий тестировать небольшие части кода без необходимости создавать новые классы. Он оснащен функциями истории и автозаполнения, а также рядом других особенностей, включая сохранение и загрузку написанных выражений.
Скажем, если захочется запустить несколько строк Java самостоятельно, то теперь не придется заворачивать их в отдельный проект или метод. Что касается точек с запятой — можно забыть про них: Существуют различные альтернативы наподобие плагинов REPL для популярных IDE или веб-консоли Java REPL, но ни одна из них не является официальной.
Унифицированное протоколирование JVM
Добавлена единая система протоколирования всех JVM-компонентов. Тем не менее, если мы посмотрим на плюсы и минусы Java 9, вот один из них. Вызовы протоколирования отдельных компонентов JVM отсутствуют, также как и протоколирование Java-кода в Java Development Kit
G1 — дефолтный сборщик мусора
Очень часто сталкиваемся с заблуждением, что в Java есть только один сборщик мусора, хотя по факту их 4. Parallel / Throughput Collector считался дефолтным в прошлых версиях, но теперь его заменил G1, который был представлен в Java 7 и был разработан для лучшей поддержки куч размером более 4GB. Он вызывает меньше GC пауз, но если они все же происходят, то длятся дольше.
Изображения с мульти-разрешением
Этот API позволяет инкапсулировать набор изображений с разными разрешениями в единый объект. Таким образом, разработчик может получить изображение с определенным разрешением или все варианты внутри одного.
Примечательные обновления API: Concurrency и Stack Walking
Java 9 получил обновление CompletableFuture и java.util.concurrent.Flow. Flow — это Java-реализация Reactive Streams API. Reactive Streams помогают решить проблему back-pressure — накопления большого количества данных, которое происходит, когда скорость получения входящих событий выше, чем скорость их обработки приложением, что приводит к появлению буферов необработанных данных. Кроме того, в рамках улучшения concurrency, CompletableFuture получил обновление, которое решило проблемы, выявленные после его внедрения в Java 8. Оно включает поддержку задержек и тайм-аутов, улучшенную поддержку подклассов и несколько полезных методов.
Также хочется упомянуть о Stack Walking API. Все верно, Java 9 меняет подход к работе со стек-трейсами, предоставляя официальный способ обработки стек-трейсов, вместо приравнивания их к простому тексту.
Immutable List, Set, Map, и Map.Entry API
Создание множеств из нескольких элементов в Java 8 требовало нескольких строк кода. Теперь это можно осуществить только одной. Таким образом, один из самых времязатратных недостатков Java 8 был устранен. Это должно облегчить работу с массивами и ускорить некоторые функции.
Преимущества Java 9
Детали отличий Java 9 от Java 8 представляют большой интерес для разработчиков, а следовательно и для бизнеса, находящегося в поиске наилучших решений. Нововведения девятой версии улучшают следующие аспекты разработки:
Скорость выше благодаря поддержке клиента HTTP/2.
- Приложения становятся ресурсоэффективней, потому что разработчики могут использовать только необходимые модули, а не всю JRE.
- Разработка ускоряется благодаря системе модулей, позволяющей их повторное использование, упрощенную отладку и управление.
- Появляется возможность анализа производительности очень маленьких частей кода благодаря Microbenchmarks.
- Множества создаются одной строчкой кода.
Заключение
В рамках данной курсовой работы была изучена история возникновения и развития языка программирования Си (С++) и Java. , что в современном мире является очень актуальным.
Были решены следующие задачи:
- Изучена история возникновения и развития языка Си
- Изучена история возникновения и развития языка Си++
- Изучена история стандартов Си++
- Изучено начало разработки языка Java
- Изучена связь языков Java и C++
- Изучен обзор версий Java
Список литературы
- Александр Чиртик Программирование на C++. Трюки и эффекты / Александр Чиртик. - М.: "Издательство "Питер", 2010. - 352 c.
- Бьерн Страуструп Дизайн и эволюция языка С++ / Бьерн Страуструп. - М.: ДМК Пресс, 2014. - 446 c.
- М. Фленов Программирование на C++ глазами хакера / М. Фленов. - М.: БХВ-Петербург, 2011. - 352 c.
- Михаил Фленов Искусство программирования игр на С++ / Михаил Фленов. - М.: "БХВ-Петербург", 2006. - 256 c.
- Николаи М. Джосаттис Стандартная библиотека C++. Справочное руководство / Николаи М. Джосаттис. - М.: Вильямс, 2014. - 123 c.
- Лафоре Объектно-ориентированное программирование в С++ / Роберт Лафоре. - М.: Питер, 2015. - 928 c.
- Берд, Барри Java для чайников / Барри Берд. - М.: Диалектика / Вильямс, 2013. - 521 c.
- Гарнаев, Андрей WEB-программирование на Java и JavaScript / Андрей Гарнаев , Сергей Гарнаев. - Москва: СПб. [и др.] : Питер, 2017. - 718 c.
- Гонсалвес, Энтони Изучаем Java EE 7 / Энтони Гонсалвес. - М.: Питер, 2016. - 640 c.
- Гупта, Арун Java EE 7. Основы / Арун Гупта. - М.: Вильямс, 2014. - 336 c.
- Монахов, В. Язык программирования Java и среда NetBeans (+ CD-ROM) / В. Монахов. - М.: БХВ-Петербург, 2012. - 720 c.
- Савитч, Уолтер Язык Java. Курс программирования / Уолтер Савитч. - М.: Вильямс, 2015. - 928 c.
- Шилдт, Герберт Java 8. Руководство для начинающих / Герберт Шилдт. - М.: Вильямс, 2015. - 720 c.
- Эккель, Брюс Философия Java / Брюс Эккель. - М.: Питер, 2016. - 809 c