Файл: Современные языки программирования (ИСТОРИЯ И ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ).pdf
Добавлен: 29.03.2023
Просмотров: 455
Скачиваний: 2
Локальные переменные и возвращаемые значения Ref
Операции удаления
Двоичные литералы и цифровые разделители
Выражения throw
Все эти функции предоставляют разработчикам множество новых возможностей и позволяют писать более понятный код. Важным аспектом является доработка объявления переменных путем использования ключевого слова out и поддержки нескольких возвращаемых значений благодаря кортежу.
Сфера применения C# продолжает расширяться. Теперь .NET Core подходит для любой операционной системы и движется в направлении облачных технологий и портативности. Разработчики активно занимаются этими новыми возможностями с добавлением новых функций.
С# 8.0
В C# 8.0 добавлены следующие функции и улучшения языка C#:
Члены только для чтения
Методы интерфейса по умолчанию
Улучшения сопоставления шаблонов:
Объявления using.
Статические локальные функции.
Удаляемые ссылочные структуры.
Ссылочные типы, допускающие значение NULL
Асинхронные потоки.
Индексы и диапазоны.
Присваивание объединения со значением NULL
Неуправляемые сконструированные типы
Выражение stackalloc во вложенных выражениях
Улучшение интерполированных строк verbatim
C# 8.0 поддерживается в .NET Core 3.x и .NET Standard 2.1.
В C# 8.0 добавлены и изменены многие функции, а также улучшены старые что повышает количество возможностей языка. Данное обновление совершенно новое и требуется время для анализа его работы. [16]
2.2 Java
Java — строго типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems, в дальнейшем приобретенный компанией Oracle. Разработка ведется сообществом, организованным через Java Communiti Process. Язык и основные реализующие его технологии распространяются по лицензии GPL. Права на торговую марку принадлежат корпорации Oracle.
Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре с помощью виртуальной Java - машины. Дата официального выпуска — 23 мая 1995 года.
На 2019 год Java — один из самых популярных языков программирования.
Изначально язык назывался Oak («Дуб»), разрабатывался Джеймсом Гослингом для программирования бытовых электронных устройств. Из-за того, что язык с таким названием уже существовал, вскоре Oak был переименован в Java. Назван в честь марки кофе Java, которая, в свою очередь, получила наименование одноимённого острова (Ява), поэтому на официальной эмблеме языка изображена чашка с горячим кофе. Существует и другая версия происхождения названия языка, связанная с аллюзией на кофе-машину как пример бытового устройства, для программирования которого изначально язык создавался. В соответствии с этимологией в русскоязычной литературе с конца двадцатого и до первых лет двадцать первого века название языка нередко переводилось как Ява, а не транскрибировалось.
В результате работы проекта мир увидел принципиально новое устройство, которое опередило своё время более чем на 10 лет. Устройство получило название Star7, но из-за большой стоимости в 50 долларов не смогло произвести переворот в мире технологии и постепенно забылось.
Star7 не пользовался популярностью в отличие от языка программирования Java и его окружения. Следующим этапом жизни языка стала разработка интерактивного телевидения. В 1994 году стало очевидным, что интерактивное телевидение было ошибкой.
С середины 1990-х годов язык стал широко использоваться для написания клиентских приложений и серверного программного обеспечения. Тогда же определённое распространение получила технология Java-апплетов — графических Java-приложений, встраиваемых в веб-страницы; с развитием возможностей динамических веб-страниц в 2000-е годы технология стала применяться редко.
Программы на Java транслируются в байт-код Java, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.
Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.
Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:
Применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде,
Обширное использование платформенно-ориентированного кода
(native-код) в стандартных библиотеках,
Аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами архитектуры ARM).
По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10—30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и большее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.
Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компанией Microsoft.
Версии Java
JDK 1.0
Разработка Java началась в 1990 году, первая официальная версия — Java 1.0, — была выпущена только 21 января 1996 года.
JDK 1.1
Вторая версия была выпущена 19 февраля 1997 года.
Библиотека Accessibility.
Java 2D.
Поддержка технологии drag-and-drop.
Полная поддержка Unicode, включая поддержку ввода на японском, китайском и корейском языках.
Поддержка воспроизведения аудиофайлов нескольких популярных форматов.
Полная поддержка технологии CORBA.
JIT-компилятор, улучшенная производительность.
Усовершенствования инструментальных средств JDK, в том числе поддержка профилирования Java-программ.
J2SE 1.2
Дата выпуска 8 декабря 1998 года. Кодовое имя Playground. В данном случае встречается путаница. Выпускались книги, например, Beginning Java 2 by Ivor Horton (Mar 1999), фактически по J2SE 1.2 (бывшее название — Java 2). Вместе с тем по сей день такие книги публикуются, например: Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантри. Технологии программирования на Java 2. Распределённые приложения (2011).
Когда Java 2 был исторически заменен следующими релизами, подобные названия книг дезориентируют в понимании, о какой же версии Java они написаны на самом деле. Язык J2SE 1.2 принято считать
за Java 2, а авторы книг за Java 2 принимают JDK 7, это приводит к полной путанице.
J2SE 1.3
Дата выпуска 8 мая 2000 года. Кодовое имя Kestrel.
J2SE 1.4
Дата выпуска 6 февраля 2002 года. Кодовое имя Merlin.
J2SE 5.0
Спецификация Java 5.0 была выпущена 30 сентября 2004 года, кодовое имя Tiger. C этой версии изменена официальная индексация, вместо Java 1.5 правильно Java 5.0. Внутренняя индексация Sun осталась
прежней — 1.x. Минорные изменения теперь включаются без изменения индексации, для этого используется слово «Update» или буква «u», например, Java Development Kit 5.0 Update 22. В обновления могут входить как исправления ошибок, так и небольшие добавления в API, JVM.
В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:
1. Перечислимые типы. Ранее отсутствовавшие в Java типы оформлены по аналогии с C++, но при этом имеют ряд дополнительных возможностей.
2. Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
3. Перечисление может реализовывать интерфейсы.
Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
Аннотации — возможность добавления в текст программы метаданных, непосредственно не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций — упрощение создания тестовых модулей для Java-кода.
Средства обобщённого программирования английское обозначение generics — механизм, аналогичный средствам языков Ada и Eiffel позже также появились и в C#, принципиально отличаются от шаблонов C++, дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
Методы с неопределённым числом параметров.
Autoboxing/Unboxing — автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками, например, между int — Integer. Наличие такой возможности сокращает код, поскольку исключает необходимость выполнения явных преобразований типов в очевидных случаях.
Разрешён импорт статических полей и методов.
В язык введён цикл по коллекции объектов итератор, англ. foreach.
Было введено использование Javadoc-комментариев, которые используются для автоматического оформления документации по комментариям в исходном коде.
Java SE 6
Релиз версии состоялся 11 декабря 2006 года, кодовое имя Mustang. Изменена официальная индексация — вместо ожидаемой 6.0 версия значится
как 6. Минорные изменения, как и в Java 5.0, вносятся в обычные обновления версии, например, Java Standard Edition Development Kit 6 Update 27. Внесены следующие изменения:
Коллекции — добавлены интерфейсы для организации очереди, работающей с двух сторон коллекции; организовывающие поиск по ближайшему соответствию; блокирующие себя во время ожидания элемента. Организованы новые классы, реализующие перечисленные интерфейсы.
Добавлена поддержка японского императорского календаря наряду с уже существующими григорианским и буддийским календарями.
Доступны классы-потоки для чтения и передачи сжатых данных, с возможностью передачи их по сети. Сняты ограничения на количество файлов в архиве ранее 64 Кб, длину названия файла ранее 256 символов и количество одновременно открытых файлов ранее 2000 шт.
Организована система управления кэшем и добавлена поддержка параметра «no-cache» в HTTP-запросе.
JConsole, графический мониторинг JVM, стала официально поддерживаемой утилитой.
Java HTTP Server, позволяет создать полноценный HTTP-сервер, с минимально необходимыми функциональными свойствами.
Повысилась скорость вычислений на 70 %, скорость операций ввода-вывода возросла в два раза.
Swing — улучшена работоспособность OpenGL и DirectX; обработка текста на LCD; добавлен GifWriter, для работы с файлами формата GIF.
Исправлено большое количество ошибок.
Java SE 7
Релиз версии состоялся 28 июля 2011 года, кодовое имя Dolphin. В финальную версию Java Standard Edition 7 не были включены все ранее запланированные изменения. Согласно плану развития план «Б», включение нововведений будет разбито на две части: Java Standard Edition 7 без лямбда-исчисления, проекта Jigsaw, и части улучшений проекта Coin и Java Standard Edition 8, намеченный на конец 2012 года.
В новой версии, получившей название Java Standard Edition 7, помимо исправления большого количества ошибок, было представлено несколько новшеств. Так, например, в качестве эталонной реализации Java Standard Edition 7 использован не проприетарный пакет JDK, а его открытая реализация OpenJDK, а сам релиз новой версии платформы готовился при тесном сотрудничестве инженеров Oracle с участниками мировой экосистемы Java, комитетом JCP расшифровывается как Java Community Process
и сообществом OpenJDK. Все поставляемые Oracle бинарные файлы эталонной реализации Java Standard Edition 7 собраны на основе кодовой базы OpenJDK, сама эталонная реализация полностью открыта под лицензией GPLv2
с исключениями GNU ClassPath, разрешающими динамическое связывание с проприетарными продуктами. К другим нововведениям относится интеграция набора небольших языковых улучшений Java, развиваемых в рамках проекта Coin, добавлена поддержка языков программирования с динамической типизацией, таких, как Ruby, Python и JavaScript, поддержка загрузки классов по URL, обновлённый XML-стек, включающий JAXP 1.4, JAXB 2.2a и JAX-WS 2.2 и другие.
За 5 дней до выхода релиза Java Standard Edition 7 было обнаружено несколько серьёзных ошибок в горячей оптимизации циклов, которая включена по умолчанию и приводит виртуальную машину Java к краху. Специалисты Oracle найденные ошибки за столь короткий срок исправить не могли, но пообещали, что они будут исправлены во втором обновлении Java 7 Update 2 и частично в первом.
Поддержка динамически-типизированных языков InvokeDynamic — расширение JVM (семантики байт-кода), языка Java для поддержки динамически-типизированных языков.
Строгая проверка class-файлов — class-файлы версии 51 Java Standard Edition 7 или более поздней версии должны быть проверены typechecking-верификатором; JVM не должна переключаться на старый верификатор.