Spec-Zone.ru › Java Virtual Machine Specification 7

Глава 1. Введение

Содержание

1.1. Немного истории
1.2. Виртуальная машина Java
1.3. Краткое содержание глав
1.4. Условные обозначения

1.1. Немного истории

Язык программирования Java® — это универсальный, конкуретный, объектно-ориентированный язык. Его синтаксис похож на C и C++, но он опускает многие функции, которые делают C и C++ сложными, запутанными и небезопасными. Платформа Java первоначально разрабатывалась для решения проблем создания программного обеспечения для сетевых потребительских устройств. Она была разработана для поддержки нескольких архитектур хостов и для обеспечения безопасной доставки компонентов программного обеспечения. Для удовлетворения этих требований скомпилированный код должен был выдерживать транспортировку по сетям, работать на любом клиенте и гарантировать клиенту, что его безопасно запускать.

Популярность Всемирной паутины сделала эти атрибуты гораздо более интересными. Веб-браузеры позволили миллионам людей просматривать сеть и получать доступ к медиа-содержанию простыми способами. Наконец-то появился инструмент, где то, что вы видите и слышите, по существу, было одинаковым независимо от используемой машины и от того, подключена она к быстрой сети или к медленному модему.

Веб-энтузиасты вскоре обнаружили, что содержимое, поддерживаемое форматом документов HTML, было слишком ограничено. Расширения HTML, такие как формы, лишь подчеркивали эти ограничения, делая ясным, что ни один браузер не может включить все функции, которые пользователи хотели бы иметь. Ответ был в расширяемости.

Браузер HotJava впервые продемонстрировал интересные свойства языка и платформы Java, позволяя встраивать программы в HTML-страницы. Программы прозрачно загружаются в браузер вместе с HTML-страницами, в которых они отображаются. Перед тем, как быть принятыми браузером, программы тщательно проверяются, чтобы убедиться, что они безопасны. Как и HTML-страницы, скомпилированные программы независимы от сети и хоста. Программы ведут себя одинаково независимо от того, откуда они поступают или на какой тип машины они загружаются и на которой они выполняются.

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

1.2. Виртуальная машина Java

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

Виртуальная машина Java — это абстрактная вычислительная машина. Как и реальная вычислительная машина, она имеет набор команд и манипулирует различными областями памяти во время выполнения. Довольно распространённо реализовывать язык программирования с помощью виртуальной машины; самой известной виртуальной машиной может быть машина P-Code языка UCSD Pascal.

Первая прототипная реализация виртуальной машины Java, выполненная в Sun Microsystems, Inc., эмулировала набор команд виртуальной машины Java в программном обеспечении, размещенном на портативном устройстве, напоминающем современный персональный цифровой помощник (PDA). Текущие реализации Oracle эмулируют виртуальную машину Java на мобильных, настольных и серверных устройствах, но виртуальная машина Java не предполагает никакой конкретной технологии реализации, аппаратного обеспечения или операционной системы хоста. Она не является по своей сути интерпретируемой, но может быть реализована путём компиляции её набора команд в набор команд кремниевого процессора. Она также может быть реализована в микрокоде или непосредственно в кремнии.

Виртуальная машина Java не знает ничего о языке программирования Java, а только о конкретном двоичном формате — формате файла class. Файл class содержит инструкции виртуальной машины Java (или байткоды) и таблицу символов, а также другую вспомогательную информацию.

В целях безопасности виртуальная машина Java накладывает сильные синтаксические и структурные ограничения на код в файле class. Однако любой язык с функциональностью, которая может быть выражена в терминах допустимого файла class, может быть размещён в виртуальной машине Java. Привлечённые общей машинонезависимой платформой, разработчики других языков могут обратиться к виртуальной машине Java как к транспортному средству для своих языков.

Здесь описанная виртуальная машина Java совместима с платформой Java SE 7 и поддерживает язык программирования Java, описанный в Спецификации языка Java, издание Java SE 7.

1.3. Краткое содержание глав

Остальная часть этой книги структурирована следующим образом:

  • В главе 2 представлен обзор архитектуры виртуальной машины Java.

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

  • В главе 4 описывается формат файла class, двоичный формат, независимый от аппаратного обеспечения и операционной системы, используемый для представления скомпилированных классов и интерфейсов.

  • В главе 5 описывается запуск виртуальной машины Java и загрузка, связывание и инициализация классов и интерфейсов.

  • В главе 6 описывается набор команд виртуальной машины Java, представляя команды в алфавитном порядке мнемоники кодов операций.

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

В Спецификации виртуальной машины Java, второе издание, глава 2 давала обзор языка программирования Java, который предназначался для поддержки спецификации виртуальной машины Java, но сам по себе не являлся частью спецификации. В Спецификации виртуальной машины Java, издание Java SE 7 читатель должен обратиться к Спецификации языка Java, издание Java SE 7 за информацией о языке программирования Java. Ссылки вида: (JLS §x.y) указывают на это, где это необходимо.

В Спецификации виртуальной машины Java, второе издание, глава 8 подробно описывала низкоуровневые действия, объясняющие взаимодействие потоков виртуальной машины Java с общей основной памятью. В Спецификации виртуальной машины Java, издание Java SE 7 читатель должен обратиться к главе 17 Спецификации языка Java, издание Java SE 7 за информацией о потоках и блокировках. Глава 17 отражает Модель памяти Java и спецификацию потоков, разработанную экспертной группой JSR 133.

1.4. Условные обозначения

В этой спецификации мы ссылаемся на классы и интерфейсы, взятые из API платформы Java SE. Всякий раз, когда мы ссылаемся на класс или интерфейс (кроме тех, которые объявлены в примере), используя один идентификатор N, предполагается ссылка на класс или интерфейс с именем N в пакете java.lang. Мы используем полное имя для классов или интерфейсов из пакетов, отличных от java.lang.

Всякий раз, когда мы ссылаемся на класс или интерфейс, который объявлен в пакете java или в любом его подпакете, подразумевается ссылка на этот класс или интерфейс, как загруженный загрузчиком классов Bootstrap (§5.3.1).

Всякий раз, когда мы ссылаемся на подпакет пакета с именем java, предполагается ссылка на этот подпакет, как определённый загрузчиком классов Bootstrap.

Использование шрифтов в этой спецификации таково:

  • Шрифт fixed width используется для типов данных виртуальной машины Java, исключений, ошибок, структур файлов class, кода Prolog и фрагментов кода Java.

  • Курсив используется для «ассемблерного языка» виртуальной машины Java, его кодов операций и операндов, а также элементов областей данных виртуальной машины Java во время выполнения. Он также используется для введения новых терминов и просто для выделения.

Ненормативная информация, предназначенная для уточнения спецификации, приводится в более мелких, отступающих текстах.

Это ненормативная информация. Она предоставляет интуицию, обоснование, советы, примеры и т. д.

© Oracle and/or its affiliates. All rights reserved.
Licensed under the Oracle Technology Network License Agreement.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API