我维护一个Java应用程序,在分发它之前我一直使用JDK 1.6对其进行编译,因为这是我的应用程序所需的最低版本-我不使用任何较新的功能。我看不到在更高版本中编译它的意义,或者较旧的JRE无法运行它(即,使用Java 1.6的Mac OSX上的用户)。
现在,鉴于最近有关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的任何优化功能还是生成相同的字节码?
您应考虑以下几点:
-source 1.7
,-target 1.6
您可以使用语言功能,例如int i = 0b011
从清单中可以看出,我认为使用当前JDK的优势胜过使用旧JDK的优势。
编辑:我调查了一下,我建议您安装适合您的目标版本的JDK。由于bootstrap / ext类路径的原因,在交叉编译时仍然需要JDK。有关更多信息,请参见如何针对较旧的平台版本进行交叉编译。该站点还指出,不同的JDK之间的编译存在差异(倒数第二段),并建议使用与您的目标版本相关的JDK(最后一段)。同样相关的可能是javac文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句