Требования к поддерживаемым версиям файлов классов описаны в спецификации 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.