http://openjdk.java.net/jeps/182 のテキトーな訳。
ぶっちゃけJEP 182でぐぐって出てくる日本語の解説記事読んだ方が分かりやすいんだけど……まぁ気にしない。
JEP 182: Policy for Retiring javac -source and -target Options
Author Joseph D. Darcy Owner Joe Darcy Created 2013/04/02 20:00 Updated 2014/07/10 20:16 Type Informational Status Draft Component tools / javac Scope JDK Discussion discuss at openjdk dot java dot net Priority 4 Reviewed by Brian Goetz Endorsed by Brian Goetz Issue 8046172 Relates to 8028563: Remove javac support for 6/1.6 source and target values 8011043: Warn about use of 1.5 and earlier source and target values 8011044: Remove support for 1.5 and earlier source and target options 8010179: Remove transitional target values from javac
Summary
javac
のメンテナンスコスト削減のために、このJEPは古い-source
と-target
オプションを取り除くためのポリシーを定義します。JDK 8ではsourceやtargetに1.5
かそれ以前を使うことはdeprecatedとなり、JDK9では1.5
かそれ以前のサポートは削除されます。JDK 9および将来的にはjavac
のsourceとtargetでサポートするオプションのポリシーは"自身とその三つ前(one + three back)"となります。このポリシー下では、javac
は依然として、1996年初出荷のJDK 1.0.2で生成されたversion 45.3クラスファイルまでさかのぼる、すべての過去のJDKのクラスファイルの処理と解釈が可能です。
Goals
陳腐化したコードを削除することでコンパイラーのメンテナンスコストを削減する。
Motivation
古いsourceとtargetオプションを削除することで、javac
コンパイラのメンテナンスを簡素化します。JDK 8でサポートしている多くのsourceとtargetの値は、public updatesの終了から長い時間経過しているrelease trainsのためのものです。その古いリリースのユーザはそのリリースのjavac
を、もし再コンパイルが将来必要とされる場合、使用可能です。
sourceとtargetオプションはJava SE specificationでは管理されておらず、プログラマ都合の目的用に提供されています。しかし、古いオプションのメンテナンスのコストはゼロではありません。たとえば、rt.jar
のソースレベルよりも古い-source N
オプションが指定されるとき、リリースN
より新しい(newer-than-release-N)プラットフォームライブラリの言語機能をコンパイルされるコードに組み込むべきかどうか、明確ではありません。サポートするsourceとtargetの期間を縮小することで、そうした質問を考慮する設計を簡素化します。
Description
文書化されなかった(never-documented)targetオプションjsr14
, 1.4.1
, 1.4.2
は既にJDK 8で削除されています。1.5/5とそれ以前のsourceとtargetはJDK 8ではdeprecatedになります。これらのオプションを使用するとwarningが出力されます。JDK 9では、これらのオプションはjavac
が最早解釈しません。JDK 9は"one plus three back"サポートポリシーを実装し、このリリースで解釈可能なのは1.9
/9
, 1.8
/8
, 1.7
/7
, 1.6
/6
となります。このポリシーはJDK 10に引き継がれます。
Impact
*1:Issue, Relates toはその関連ページへのリンクが貼られているが、俺の訳文では割愛。本文を参照。