2016-09-20 5 views
3

Я понимаю, что это еще не актуально на 100%, но мне это очень интересно. В JDK8 параметры javac «источник» и «цель» устарели и будут удалены в JDK9. Как разработчик JavaME, мне интересно, как тогда я смогу ориентироваться на более старые платформы. Например, я использую целевой 1.3 при разработке для Blu-ray. Как скомпилировать мои Xlets для Blu-ray, когда JDK9 отсутствует, если нет «целевого» варианта? Я полагаю, что также должны быть другие (хотя мы можем согласиться не так много) людей, которым все еще нужно ориентироваться на более старые устройства. Что нам делать, когда JDK9 отсутствует?Как ориентировать старые платформы с JDK9? (Цель: 1.3)

РЕДАКТИРОВАТЬ: Возможно ли даже установить таргетинг 1.3 с помощью JDK9?

ответ

5

Чтобы ответить на вопрос «как скомпилировать без целевой опции», новый флаг -release является более безопасной и надежной альтернативой -source и -target. См. JEP-247 для более подробной информации. Вы будете нацелены на более старые платформы с -release так же, как и с -source и -target.

Оператор «источник и цель будет удален в JDK9» является своего рода верно, но не совсем: -source и -target флаги сами не удаляются, но их использование целевых конкретных старых версий устарела. От JEP-182: «в JDK 9 поддержка источника или цели 1.5 или более ранней версии будет удалена».

Чтобы ответить на вопрос «возможно ли даже настроить таргетинг 1.3 на JDK9?» Ответ заключается в том, что в отношении флага -release JDK9 не будет компилироваться для достижения цели 1.3.

От JAVAC -help:

--release <release> 
     Compile for a specific VM version. Supported targets: 6, 7, 8, 9 

Ваш лучший вариант заключается в компиляции с более старой версии JDK. Если вам нужно настроить таргетинг на 1.3, в любом случае использовать множитель Java 9 не так много.

+0

Это хорошо новости, хотя немного озадачивает. Они удаляют «источник» и «цель», чтобы снизить стоимость обслуживания javac, а затем ввести другой параметр, который в основном делает то же самое? Ой, пока я могу скомпилировать мои Xlets в файл jar, совместимый с Blu-ray, тогда я счастлив. Полагаю, что время покажет, делает ли этот новый подход что-то другое, что делает мои файлы jar несовместимыми с спецификациями Blu-ray. –

+0

Из JEP: «По умолчанию javac компилируется против самой последней версии API-интерфейсов платформы. Поэтому скомпилированная программа может случайно использовать API-интерфейсы, доступные только в текущей версии платформы. Такие программы не могут работать в более старых версиях платформы, независимо от значений, переданных параметрам -source и -target.Это долгосрочная точка удобства использования, так как пользователи ожидают, что, используя эти параметры, они получат файлы классов, которые могут выполняться на указанной версии платформы ». – Jay

+0

Просто хочу быть ясным, что новый флаг имеет очень специфическую причину, и что это улучшение по сравнению с оригинальными флагами. Они не просто меняют вещи, потому что им это нравится :) – Jay

1

Я не знаю -source и -target, будучи устаревшим на Java 8 и удалённым в Java 9 - досрочная сборка доступа (не менее 9-b131) все еще имеет их. У вас есть источник для этого?

Единственное изменение в этой области, о которой я знаю, это JEP 247, в котором вводится -release, что является ярлыком для двух других.

+0

Я нашел это раньше: http://openjdk.java.net/jeps/182 –

+0

Вы должны задать новый вопрос для этого, сосредоточив внимание на правиле «один + три назад», описанном в [JEP 182] (http: //openjdk.java.net/jeps/182). – Nicolai

+0

Не нужно, если новый флаг «release» позволит мне вернуться к 1.3 –

Смежные вопросы