Режим компиляции совместимости с Java

Столкнулся со следующей дилеммой. В настоящее время я развертываю приложение Java 8 как на 32-битных, так и на 64-битных машинах Windows.

Поскольку Java 8 достигает своего EoL, я начинаю сталкиваться с очень сложной проблемой, что делать дальше.

Поскольку Oracle не будет предоставлять 32-битные версии своих новых версий Java, я пока должен придерживаться версии 8, хотя и перейдя на предложение OpenJDK, которое они, похоже, обещают поддерживать даже дальше, чем EoL 8. Для этого я также перейду на OpenJ9 в качестве виртуальной машины (которая предоставляет 32-битную версию).

Хотя вопрос у меня следующий. Я начинаю думать о переходе на Java 11. Мне было интересно, можно ли использовать этот jdk для компиляции в режиме совместимости и целевой версии 8 за счет неиспользования каких-либо 11 конкретных функций?

Также может ли скомпилированный код работать правильно в такой комбинации, то есть код Java 11 скомпилирован совместимо и развернут в среде, работающей на 32-битной?

Мне также было интересно, какова поддержка совместимости для Java 11.


person akortex91    schedule 06.09.2018    source источник
comment
ну, теперь, когда я думаю об этом, я делаю это, даже не осознавая этого. У меня есть jdk-11 с -source и -target, установленными на 1.8, и этот код работает на WAS (который использует IBM jre), но на 64 битах.   -  person Eugene    schedule 06.09.2018


Ответы (1)


Мне было интересно, можно ли использовать этот jdk для компиляции в режиме совместимости и целевой версии 8 за счет неиспользования каких-либо 11 конкретных функций?

В идеале флаг --release 8 javac должен нормально работать при компиляции с JDK11 для Java 8.

Мне было интересно, можно ли использовать этот jdk для компиляции в режиме совместимости и целевой версии 8 за счет неиспользования каких-либо 11 конкретных функций?

Я предполагаю, что байт-код, сгенерированный после компиляции с первого шага, можно было бы последовательно использовать в 32-битных и 64-битных системах (средах) выполнения.

person Naman    schedule 06.09.2018