Java9 javac 将不再支持Java 1.5以及更早的代码,java9javac
Java9 javac 将不再支持Java 1.5以及更早的代码,java9javac
JEP(Java表达式分析器 Java expression parser的简称) 182:javac -source和-target选项的退休策略
- 作者:Joseph D. Darcy
- 机构:Oracle
- 创建日期:2013/4/2
- 更新日期:2013/4/5
- 类型:信息
- 状态:发布
- 模块:core/lang
- 范围:JDK
- RFE 8011044 (8011043, 8010179)
- 讨论:通过openjdk dot java dot net讨论
- 审查者:Brian Goetz
- 撰写者:Brian Goetz
结论
为了减低javac的维护成本,此JEP定义了javac -source和-target选项的退休策略。在JDK8中不赞成使用1.5或更早版本的source和target选项。而JDK9则会彻底取消对这类选项的支持。JDK9以及后续版本的javac将会采用“一(当前版本)加三(过去的三个版本)”策略提供source和target选项的支持。在这个策略下javac仍然识别并支持所有早先JDK class文件,包括1996年发布的JDK1.0.2生成的45.3版本class文件。
目标
通过移除陈旧代码降低编译器维护成本。
动机
通过移除旧的source和target选项会简化javac编译器的维护。许多JDK8发布版本支持的source和target值已经早就过了它们的生命周期。那些在发布时使用了这些选项的用户需要在将来进行重新编译自己的代码。
Java SE规范里并没有强制规定source和target选项,这些选项的提供只是为开发者提供便利。然而维护这些选项不是免费的,例如当一个-source选项比指定的rt.jar的源码要老,就会出现如何将比“发布版本N”更新的平台函数库加载到编译代码中的问题。通过缩减支持的source和target选项可以简化这类问题给设计带来的麻烦。
描述
jsr14中没有记载的target选项值已经从JDK8中移除了。JDK1.5/5以及早先的target值在JDK8中被标记为不推荐使用,如果使用了这些选项将会提示警告。JDK9 javac则不再接受这些选项。JDK9的“一加三”策略意味着该版本的javac会支持1.9/9, 1.8/8, 1.7/7和1.6/6 中的选项。该策略会在JDK10中延续。
影响
兼容性:该策略会改变命令行程序的兼容性策略,但即使如此10年前甚至更老的代码仍然可以编译。
原文链接: openjdk 翻译: Wld5.com - 唐尤华译文链接: http://www.wld5.com/4797.html
[ 转载请保留原文出处、译者和译文链接。]
用户点评