Согласно спецификации JVM:

Реализация виртуальной машины Java Oracle в JDK версии 1.0.2 поддерживает версии формата файлов классов с 45.0 по 45.3 включительно. JDK выпускает 1.1. * Поддерживает версии формата файлов классов в диапазоне от 45.0 до 45.65535 включительно. Для k ≥ 2 версия 1.k JDK поддерживает версии формата файла класса в диапазоне от 45.0 до 44 + k.0 включительно.

https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html

Мне интересно, почему они начали версионирование с 45 , а не, скажем, с 1 или 0 ?

6
Ivan Babanin 19 Окт 2019 в 22:18

1 ответ

Лучший ответ

Почему версии файлов классов Java начинаются с 45?

Существовали версии Java до первой публично выпущенной версии (Java 1.0.2).

Первоначально Java зародилась как язык программирования Oak в 1991 году. Он был переименован в Java в 1994 году, а первый публичный релиз состоялся в 1996 году.

Можно с уверенностью предположить, что версии файлов классов менее 45 использовались для более ранних (предварительных) версий Java и, возможно, Oak. В первые дни вполне вероятно, что разработчики внесли многочисленные изменения в набор инструкций байт-кода и другие аспекты формата файла классов. Это потребовало бы регулярного «наталкивания» номера версии файла класса.

Это предположение. Общедоступной информации о Oak и Java до версии 1.0 очень мало. Однако в тексте спецификации дуба от 1993 года указано, что они были < em> уже компилирует исходный код Oak в байт-коды, которые хранились в файлах ".class", по одному на класс.

5
Stephen C 30 Окт 2019 в 00:03