Не зовсім.
JEP 247: Компіляція для старих версій платформи визначає цей новий параметр командного рядка--release
:
Ми визначили новий параметр командного рядка --release
, який автоматично конфігурує компілятор для створення файлів класів, які будуть посилатися на реалізацію даної версії платформи. Для платформ, визначених у javac
, --release N
еквівалентно-source N -target N -bootclasspath <bootclasspath-from-N>
. (курсив мій)
Так що ні, це не рівнозначно -source N -target N
. Причина цього доповнення зазначена в розділі "Мотивація":
javac
надає два параметри командного рядка -source
і -target
, які можна використовувати для вибору версії мови Java, прийнятої компілятором, та версії файлів класу, які він створює, відповідно. Однак за замовчуванням javac
компілюється з останньою версією API платформи. Тому скомпільована програма може випадково використовувати API, доступні лише в поточній версії платформи. Такі програми не можуть працювати на старих версіях платформи, незалежно від значень, що передаються в -source
та -target
. варіанти. Це довгострокова проблема використання, оскільки користувачі очікують, що за допомогою цих параметрів вони отримають файли класів, які можуть працювати на вказаній версії платформи.
Коротше кажучи, зазначення джерела та цільових параметрів недостатньо для перехресного компіляції. Оскільки javac
, за замовчуванням, компіляції проти останнього з API платформи, вони не можуть гарантовано працювати на старих версіях. Вам також потрібно вказати -bootclasspath
параметр, що відповідає старішій версії, щоб правильно перехресно компілювати. Це включатиме правильну версію API для компіляції та дозволить виконувати її на старій версії. Оскільки про це дуже часто забували, було вирішено додати один параметр командного рядка, який виконував усі необхідні дії для правильної перехресної компіляції.
Подальше читання у списку розсилки та документації Oracle . Оригінальна помилка була подана тут . Зверніть увагу, що з моменту інтеграції цієї опції збірки JDK постачаються в комплекті з описами API платформи старих версій, згаданих у розділі "Ризики та припущення". Це означає, що вам не потрібна старіша версія, встановлена на вашому комп'ютері, для перехресного компіляції.