如何使用 JDK9 定位旧平台? (目标:1.3)

How to target older platforms with JDK9? (Target: 1.3)

我意识到这还不是 100% 相关,但我对此很好奇。 在 JDK8 中,javac 参数 "source" 和 "target" 已弃用,并将在 JDK9 中删除。 作为一名 JavaME 开发人员,我想知道我如何才能面向较旧的平台。例如,我在为蓝光开发时使用目标 1.3。如果没有 "target" 选项,当 JDK9 出来时如何为蓝光编译我的 Xlet?我想肯定还有其他人(虽然我们同意的不多)仍然需要针对旧设备。 JDK9出来了我们怎么办?

编辑:是否可以使用 JDK9 定位 1.3?

我不知道 -source-target 在 Java 8 中被弃用并在 Java 9 中删除 - 早期访问版本(至少 9-b131) 仍然有它们。你有这方面的来源吗?

我知道该领域的唯一变化是 JEP 247,它引入了 -release,这是其他两个领域的一种捷径。

为了回答问题 "how to compile without the target option",新的 -release 标志是比 -source 和 -target 更安全、更可靠的替代方案。有关详细信息,请参阅 JEP-247。您将使用 -release 以与使用 -source 和 -target 相同的方式定位旧平台。

声明 "source and target will be removed in JDK9" 有点正确但不完全正确:-source 和 -target 标志本身没有被删除,但是它们用于针对 特定的旧版本 已弃用。来自 JEP-182:"in JDK 9, support for a source or target of 1.5 or earlier will be removed."

回答问题 "is it even possible to target 1.3 with 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 编译器。