Java9 javac 将不再支持Java 1.5以及更早的代码

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 翻译: ImportNew.com - 唐尤华
译文链接: http://www.importnew.com/4797.html
[ 转载请保留原文出处、译者和译文链接。]

关于作者: 唐尤华

我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。(新浪微博:@唐尤华

查看唐尤华的更多文章 >>



相关文章

发表评论

Comment form

(*) 表示必填项

2 条评论

  1. zangxt 说道:

    翻译存在一些问题。
    比如JEP是JDK Enhancement Process,JDK增强提案。

    use of a source or target of 1.5 or earlier will be deprecated and in JDK 9,是说JDK9中将“弃用”这些选项,而不是“不赞成使用”。

    Thumb up 2 Thumb down 0

  2. zangxt 说道:

    The never-documented target options jsr14, 1.4.1 and 1.4.2 have already been removed from JDK 8.
    从来没有写入文档的 jsr14、1.4.1和1.4.2等target选项已从JDK 8中移除。

    Thumb up 2 Thumb down 0

跳到底部
返回顶部