【发布时间】:2014-02-12 15:32:42
【问题描述】:
我维护一个 Java 应用程序,我在分发它之前一直使用 JDK 1.6 编译它,因为这是我的应用程序所需的最低版本 - 我不使用任何更新的功能。我看不出在更高版本中编译它的意义,否则旧的 JRE 将无法运行它(即 Mac OSX 上使用 Java 1.6 的用户)。
现在,鉴于最近有关 Java 的新闻报道以及 JDK 更高版本中的错误修复,最好使用可用的最新 JDK 交叉编译它,使用以下语法:
javac -Xlint -source 1.6 -target 1.6 -bootclasspath jre6/lib/rt.jar MyClass.java
这会生成一个在 JRE 1.6 下运行良好的 Class 文件,但是首先使用 JDK 1.6 有什么好处吗?我是在利用较新的 JDK 中的任何优化,还是在生成相同的字节码?
【问题讨论】:
-
例如,字符串连接的字节码改变了几次
-
好的,字节码可能会发生变化,但我主要关心的是安全性和性能 - 使用更新的 JDK 但针对 1.6 有什么好处?
-
AFAIK,如果您在 JDK 1.6 上不带标志进行编译,则相当于说 -source 1.6 和 -target 1.6。