我意识到这还不是 100% 相关,但我对此很好奇。在 JDK8 中,不推荐使用 javac 参数“source”和“target”,并将在 JDK9 中删除。作为一名 JavaME 开发人员,我想知道如何才能针对较旧的平台。例如,我在开发蓝光时使用的是 target 1.3。如果没有“目标”选项,当 JDK9 出局时,如何为蓝光编译 Xlet?我想肯定还有其他人(尽管我们同意不是很多)仍然需要针对旧设备。JDK9出来了我们怎么办?
编辑:甚至可以使用 JDK9 来定位 1.3 吗?
为了回答“如何在没有目标选项的情况下进行编译”的问题,新的 -release 标志是 -source 和 -target 的更安全和更可靠的替代方案。有关详细信息,请参阅JEP-247 。您将使用 -release 以与使用 -source 和 -target 相同的方式定位旧平台。
“JDK9 中将删除源和目标”这句话有点正确但并不完全正确:-source 和 -target 标志本身并未被删除,但它们用于针对特定旧版本的用途已被弃用。来自JEP-182:“在 JDK 9 中,将删除对 1.5 或更早版本的源或目标的支持。”
要回答“JDK9 甚至可以针对 1.3 吗?”这个问题。答案是关于 -release 标志,JDK9 不会编译到目标 1.3。
从 javac -帮助:
--release <release>
Compile for a specific VM version. Supported targets: 6, 7, 8, 9
您最好的选择是使用旧版本的 JDK 进行编译。如果您需要以 1.3 为目标,那么无论如何都没有太多理由使用 Java 9 编译器。
我不知道-source
并且-target
在 Java 8 中被弃用并在 Java 9 中被删除 - 早期访问版本(至少9-b131
)仍然有它们。你有那个来源吗?
我所知道的该领域的唯一变化是JEP 247,它引入了-release
,这是其他两个的捷径。