Spec-Zone.ru › Java Virtual Machine Specification 8

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

Содержание

1.1. Немного истории
1.2. Виртуальная машина Java
1.3. Структура спецификации
1.4. Условные обозначения
1.5. Обратная связь

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 8 и поддерживает язык программирования Java, описанный в Спецификации языка Java, издание Java SE 8.

1.3. Структура спецификации

Глава 2 даёт обзор архитектуры виртуальной машины Java.

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

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

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

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

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

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

Во втором издании Спецификации виртуальной машины Java глава 8 подробно описывала низкоуровневые действия, которые объясняли взаимодействие потоков виртуальной машины Java с общей основной памятью. В Спецификации виртуальной машины Java, издание Java SE 8 читатель обращается к главе 17 Спецификации языка Java, издание Java SE 8 за информацией о потоках и блокировках. Глава 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 во время выполнения. Он также используется для введения новых терминов и просто для выделения.

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

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

1.5. Обратная связь

Читатели могут сообщать о технических ошибках и неоднозначностях в Спецификации виртуальной машины Java в jls-jvms-spec-comments@openjdk.java.net.

Вопросы, касающиеся создания и обработки файлов class компанией javac (справочный компилятор для языка программирования Java), могут быть отправлены в compiler-dev@openjdk.java.net.

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

Spec-Zone.ru

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