Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
1.91 Mб
Скачать

1. Java — интерпретируемый язык (виртуальная Java-машина)

Java — интерпретируемый язык. Для этого есть свои причины. Основная проблема программ, которые предполагается использовать в Интернет - это необходимость выполнять программу на различных типах компьютеров. В Java эта проблема решена, для этого между компилятором и компьютером вводится посредник, называемый виртуальная Java-машина (Java Virtual Machine, JVM). Java-компилятор транслирует исходный текст программы в низкоуровневые байт-коды, которые не зависят от типа компьютера и одинаковы для всех JVM-машин. Байт-коды записываются в файл класса, с расширением ".class". Каждая команда байт-кода состоит из однобайтного кода операции и одного или нескольких аргументов. В процессе выполнения программы JVM-машина читает и интерпретирует эти байт-коды, в результате чего Java-программа может выполняться на любом типе компьютера, для которого написана JVM-машина (Windows, Unix, Macintosh и т.д.). Все Web-браузеры, выполняющие Java-апплеты, также имеют встроенную JVM-машину. Такой подход удобен как для разработчиков, т.к. нет необходимости переписывать Java-программу для каждого из существующих типов платформ компьютеров. Единственным недостатком JVM-машины является то, что интерпретация байт-кода выполняется намного медленнее, чем работает скомпилированная программа на машинно-зависимом языке. Для преодоления этой проблемы JVM-машина дополняется ЛТ-компилятором (Just-in-Time) который читает байт-код и транслирует его в машинно-зависимые команды. Таким образом, например, нет необходимости 100 раз интерпретировать одни и те же команды цикла, т.к. они уже скомпилированы в машинно-зависимый код. В результате Java-программа может работать почти с той же скоростью, что и машинно-зависимая программа на C++.

2. Java — объектно-ориентированный язык

Язык Java является объектно-ориентированным и имеет много общего с языком C++. Как и любой объектно-ориентированный язык, программа Java строится на иерархии объектов, которые представляют из себя единство данных (свойств) и процедур работы с этими данными (методов). Для упрощения языка, в Java не все данные являются объектами. Например, булевские типы, числа и другие простые типы данных не есть объекты, хотя в языке все-таки имеются упакованные объекты для этих типов данных. В остальном, Java — строгий объектно-ориентированный язык: никакая объявляемая переменная или процедура не может не входить в состав какого-либо объекта. Описание свойств и методов объекта называется классом. Объекты создаются на основании классов. Классы могут наследовать свойства и методы других классов, например: " Все люди (класс) имеют возраст (свойство), футболисты - это порожденный класс от класса люди и он также наследует свойство возраст". В дополнение к наследованию, в порожденных объектах можно добав­лять новые свойства и методы, а также модифицировать унаследованные, подменяя их своими методами и свойствами. Можно создавать абстрактные классы - классы в которых объявлены методы, но не описана их реализация (хотя бы одного). Задача описания реализации метода ложится на классы, порожденные от абст­рактного, т. к. объект нельзя создать пока полностью не описаны все его свойства и методы. Java поддер­живает только простое наследование, т. е. каждый класс в отдельный момент времени может порождаться только от одного какого-либо класса (а не от нескольких, как при множественном наследовании). При таком подходе к наследованию устраняются проблемы с классом, порожденным от противоречивых или взаимо­исключающих классов. В компенсацию за отсутствие множественного наследования в Java можно создавать совершенно абстрактные классы, называемые интерфейсами (interface), которые позволяют описывать методы, разделяемые между несколькими классами. Интерфейсы могут содержать только свойства-константы и объявления методов, без описания их реализации. Объекты могут порождаться от любого количества интерфейсов. К примеру, существует интерфейс "Спортсмен" и интерфейс "Военный", каждый из которых определяет свой специфический набор свойств и методов. Каждый человек (объект) может быть объявлен одновременно и "Спортсменом" и "Военным", получив свойства и методы этих двух интерфейсов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]