Spec-Zone.ru › Java Virtual Machine Specification 17

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Шрифт 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