Преамбула к Java SE 8 Edition
Java SE 8 Edition спецификации Виртуальной машины Java® включает все изменения, внесенные в Виртуальную машину Java с момента Java SE 7 Edition в 2011 году. Кроме того, были внесены многочисленные исправления и уточнения для согласования с популярными реализациями Виртуальной машины Java.
Это издание продолжает традицию спецификации абстрактной Виртуальной машины Java, служащей документом для конкретной реализации лишь как чертеж дома. Реализация Виртуальной машины Java должна воплощать эту спецификацию, но ограничена ею только в строго необходимых случаях.
Значительные изменения в языке программирования Java в Java SE 8 повлекли соответствующие изменения в Виртуальной машине Java. Для максимальной совместимости с двоичными кодами желательно было указать методы по умолчанию непосредственно в Виртуальной машине Java, а не полагаться на магию компилятора, которая может не быть переносимой между поставщиками или версиями продукта и, безусловно, неприменима к существующим class файлам. В контексте JSR 335, Lambda-выражения для языка программирования Java, Дан Смит из Oracle консультировался с разработчиками реализаций, чтобы определить лучший способ интеграции методов по умолчанию в пул констант и структуры методов, алгоритмы разрешения методов и интерфейсных методов, а также набор инструкций байткода. JSR 335 также представил private и static методы в интерфейсах на уровне файлов class; они также были тщательно интегрированы с алгоритмом разрешения интерфейсных методов.
Тема Java SE 8 — это совместная эволюция платформ Java SE с Виртуальной машиной Java. Небольшим, но полезным примером является поддержка имен параметров методов во время выполнения: хранение таких имен в структуре файлов class идёт рука об руку с предоставлением стандартного API для их извлечения (java.lang.reflect.Parameter). Это иллюстрирует интересное развитие структуры файлов class на протяжении многих лет: в первом издании этой спецификации было определено шесть атрибутов, три из которых считались критическими для Виртуальной машины Java, в то время как это издание Java SE 8 определяет 23 атрибута, пять из которых считаются критическими для Виртуальной машины Java; то есть, атрибуты теперь существуют в основном для поддержки библиотек и инструментов, а не самой Виртуальной машины Java. Чтобы помочь читателям понять структуру файлов class, в этой спецификации более четко документируется роль каждого атрибута и ограничения, накладываемые на него.
Многие коллеги из группы Java Platform в Oracle оказали ценную поддержку этой спецификации: Манди Чун, Джо Дарси, Йоэль Борггрён-Франк, Штаффен Фриберг, Юрий Гаевский, Джон Гиббонс, Жаннетт Хун, Эрик МакКоркл, Матерей Нуньес, Марк Рейнхольд, Джон Роуз, Жорж Сааб, Стив Сайдс, Бернард Траверсат, Мишель Трудо и Микаэль Видстедт. Особая благодарность Дану Хейдинге (IBM), Карейн Киннер, Кит МакГуайн и Гарольду Сигелу за их железную приверженность совместимости и безопасности в популярных реализациях Виртуальной машины Java.
© Oracle and/or its affiliates. All rights reserved.
Licensed under the Oracle Technology Network License Agreement.