Есть ли способ показать диапазон версий класса major.minor, поддерживаемых jvm? - PullRequest
1 голос
/ 11 февраля 2020

Может ли команда java напечатать диапазон поддерживаемых ею версий классов? Или есть список этой информации для каждой версии jvm где-нибудь онлайн?

1 Ответ

2 голосов
/ 11 февраля 2020

Требования к поддерживаемым версиям файлов классов описаны в спецификации JVM §4.1 :

+---------+-----------------------------+--------------------------+
| Java SE | Corresponding major version | Supported major versions |
+---------+-----------------------------+--------------------------+
| 1.0.2   | 45                          | 45                       |
| 1.1     | 45                          | 45                       |
| 1.2     | 46                          | 45 .. 46                 |
| 1.3     | 47                          | 45 .. 47                 |
| 1.4     | 48                          | 45 .. 48                 |
| 5.0     | 49                          | 45 .. 49                 |
| 6       | 50                          | 45 .. 50                 |
| 7       | 51                          | 45 .. 51                 |
| 8       | 52                          | 45 .. 52                 |
| 9       | 53                          | 45 .. 53                 |
| 10      | 54                          | 45 .. 54                 |
| 11      | 55                          | 45 .. 55                 |
| 12      | 56                          | 45 .. 56                 |
| 13      | 57                          | 45 .. 57                 |
+---------+-----------------------------+--------------------------+

Для файла класса, Major_version которого равен 56 или выше, minor_version должен может быть 0 или 65535.

Для файла класса, Major_version которого находится между 45 и 55 включительно, minor_version может принимать любое значение.

Историческая перспектива гарантируется поддержкой JDK для версий формата файла класса , JDK 1.0.2 поддерживает версии от 45.0 до 45.3 включительно. JDK 1.1 поддерживает версии от 45.0 до 45.65535 включительно. Когда в JDK 1.2 была введена поддержка основной версии 46, единственной минорной версией, поддерживаемой в этой основной версии, было 0. Позднее JDK продолжили внедрять поддержку новой основной версии (47, 48 и т. Д. 1013 *), но поддерживали только минорную версию. версия 0 под новой основной версией. Наконец, введение функций предварительного просмотра в Java SE 12 (см. Ниже) мотивировало стандартную роль для вспомогательной версии формата файла класса, поэтому JDK 12 поддерживал второстепенные версии 0 и 65535 в основной версии 56. Последующие JDK вводят поддержку для N.0 и N.65535, где N - соответствующая основная версия реализованной платформы Java SE. Например, JDK 13 поддерживает 57.0 и 57.65535.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...