Скачиваний:
190
Добавлен:
05.07.2021
Размер:
16.53 Mб
Скачать

Тема 6: Обзор Java. Введение в ооп в Java.

1. Этапы развития языка Java. Понятие байт-кода. Понятие компилируемого и интерпретируемого языка. Схожие качества и различия Java и С++

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

Следующим этапом развития языка стала платформа Java 2.Компания Sun перекомпоновала программный продукт Java в J2SE (Java 2 Platform Standard Edition, Стандартная версия платформы Java 2), и с тех пор номера версий стали относиться именно к этому продукту.

Затем появилась версия J2SE 1.3, в которую были внесены первые значительные изменения по сравнению с первоначальным выпуском Java 2. Новые функциональные средства были в основном добавлены к уже существующим и более тесно связаны со средой разработки.

Версия J2SE 1.4 стала очередным этапом в развитии Java. Она содержала новые важные средства, в том числе цепочки исключений, канальный ввод/вывод и ключевое слово assert.

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

  • обобщения и перечисления;

  • автоупаковка и автораспаковка;

  • усовершенствованный вариант цикла for;  список аргументов переменной длины;  статический импорт и аннотации.

Следующая версия Java была названа Java SE 6. Версия Java SE 6 создавалась на основе платформы J2SE 5, но отличалась от последней рядом нововведений. В ней были улучшены библиотеки интерфейса прикладного программирования (API), добавлен ряд новых пакетов и доработана исполняющая система. По существу, в версии Java SE 6 были закреплены усовершенствования, внедренные в J2SE 5.

Следующая версия Java получила название Java SE 7, а соответствующий комплект разработки приложений – JDK 7. В версии Java SE 7 появилось немало новых средств, в том числе существенные дополнения были включены как в сам язык, так и в стандартные библиотеки API. Также была усовершенствована исполняющая система Java, в которой теперь поддерживаются программы, написанные на других языках программирования.

Для версии Java – Java SE 8 – требуется комплект разработчика JDK 8, имеющий внутренний номер версии 1.8. Комплект JDK 8 существенно расширяет возможности языка Java за счет добавления нового языкового средства – лямбда-выражений.Добавление в Java лямбда-выражений привело к появлению в языке нового оператора (->) и нового синтаксического элемента.

JAVA SE 9 и 10

Функции, добавленные в Java 9:

  • модульность в JDK (проект Jigsaw, система модулей в Java)

  • jshell: консоль Java (Java REPL)

  • Ahead-of-Time компилятор Graal

  • XML Catalog

  • обновления библиотек многопоточности; включение в Java проекта Reactive Streams, включая класс Flow.

  • Variable Handles: определение стандарта вызова эквивалентов различных операций java.util.concurrent.atomic и sun.misc.Unsafe.

  • jlink (компоновщик Java): создание инструмента, который может скомпоновать и оптимизировать комплект модулей с зависимостями в Runtime. Это позволяет создавать запускаемые файлы без дополнительных установок, даже JVM.

Выпуск Java 10 обусловлен появлением новых функций. Среди самых интересных хочется выделить следующие:

  • Вывод типа локальной переменной: улучшает язык Java, позволяя сократить объявление переменной до ключевого слова var.

  • Parallel Full GC для G1: усовершенствованный сборщик мусора.

  • Application Class-Data Sharing: ряд наработок, позволяющих классам приложений размещаться в одном архиве.

  • Экспериментальный JIT-компилятор на базе Java: новый JITкомпилятор Java VM.

Добиться безопасности и переносимости программ по сети позволяет генерируемый компилятором Java код, не являющийся исполняемым. Такой код называется байт-кодом. Это оптимизированный набор команд, предназначенных для выполнения в исполняющей системе Java, называемой виртуальной машиной Java (Java Virual Machine - JVМ). Виртуальная машина Java, по существу, представляет собой интерпретатор байт-кода. Трансляция исходного кода Java в байт-код существенно упрощает перенос программ из одной среды в другую, поскольку для обеспечения работоспособности кода достаточно реализовать на каждой платформе виртуальную машину Java.

Компилируемый язык — это такой язык, что программа, будучи скомпилированной, содержит инструкции целевой машины; этот машинный код непонятен людям. Интерпретируемый же язык — это такой, в котором инструкции не исполняются целевой машиной, а считываются и исполняются другой программой (которая обычно написана на языке целевой машины). 

Язык Java очень похож на языки С и С++. От С язык Java унаследовал синтаксис, а от С++ – объектную модель. Сходство Java с языками С и С++ играет важную роль.

Во-первых, многие программисты знакомы с синтаксисом С и С++, что упрощает изучение языка Java. Те же, кто освоил Java, могут без труда изучить С и С++.

Во-вторых, тем, кто программирует на Java, не приходится изобретать колесо. Они могут успешно применять уже известные и хорошо зарекомендовавшие себя подходы.

Современная эпоха в программировании, по существу, началась с языка С. Затем появился язык С++, а после него – Java. Имея такое богатое наследство, Java предоставляет программистам производительную и логически согласованную среду, в которой были реализованы лучшие из уже известных решений и добавлены новые средства, необходимые для интерактивной среды. Очень важно отметить тот факт, что вследствие своей схожести языки С, С++ и Java сформировали концептуальную основу для профессионального программирования. При переходе от одного языка к другому программистам не приходится преодолевать глубокие "пропасти" принципиального характера.

Один из принципов проектирования, заложенных в основу С и С++, заключается в предоставлении программисту широчайших полномочий. Разработчики Java также следовали этому принципу.

У Java имеется еще одно сходство с языками С и С++: все эти языки были задуманы, разработаны, проверены и уточнены программистами-практиками. В их основу положены реальные потребности их создателей.

У Java имеется целый ряд существенных отличий от С++ как в концептуальном, так и в прикладном плане. Несмотря на то что С++ оказал очень сильное влияние на язык Java, последний вовсе не является расширенной версией первого. В частности, эти языки не совместимы ни сверху вниз, ни снизу вверх.

Архитектурная независимость – лишь составная часть переносимости. В отличие от С или С++ в Java не существует понятия "зависимости от реализации", когда речь идет о размерности базовых типов.

Java является полностью объектно-ориентированным языком программированияЗдесь есть существенное отличие от С++, который допускает разработку программ в традиционном стиле, без использования объектно-ориентированного подхода. ориентированную модель. Основной структурной единицей Javaпрограммы является класс, содержащий данные и код. Более того, в Java весь код программы должен находиться внутри одного или нескольких классов. Поддерживаются все компоненты объектно-ориентированной модели: инкапсуляция, наследование, полиморфизм.