BT

Java 9が1.5以前のソースコードのコンパイルを非サポートに

| 作者: Alex Blewitt フォローする 4 人のフォロワー , 翻訳者 編集部N フォローする 0 人のフォロワー 投稿日 2013年7月8日. 推定読書時間: 2 分 |

原文(投稿日:2013/06/28)へのリンク

Java 8 と Java 9を目標にした最近のJava Enhancement Proposalは、Javaコンパイラーによって使われる-target-source ディレクティブのサポートモデルを成文化することを目指している。提案では、コンパイラーは、せいぜいJavaコンパイラー自身のバージョンの3つ前までサポートする、と言っている。

-targetフラグによって、コンパイラーはJavaクラスフォーマットの特定のバージョンをターゲットにできる。典型的には1.5 や 1.6のようにJavaバージョンが特定されるけれども、これは実際には生成される出力に使用されるバイトコードのバージョンに翻訳される。

  • 48: Java 4
  • 49: Java 5
  • 50: Java 6
  • 51: Java 7
  • 52: Java 8 (未リリース)
  • 53: Java 9 (未リリース)

-sourceフラグによって、コンパイラーは、ラムダ、try-with-resources, strings-in-switch(switchに文字列が使える)などのような新しい言語要素を認識したり、あるいはエラーとして扱うことができる。幾つかの新言語フィーチャ(ラムダのような)は固有のバイトコードフィーチャ(invokedynamicのような)を使う必要がある。結果として、ターゲットバージョンよりも新しいソースバージョンを使うことは、殆どの場合不可能である。

JEP 182 は、最大3バージョンの-target-sourceがコンパイラーによって今後サポートされることを明言している。今年初めのJava 6の終焉によって、Java 8 コンパイラーではJava 6以降にサポートを制限(そして、Java 9コンパイラーではJava 7)、この制限が重要な障害にとなることは、誰にもないだろう。しかし、あるビルドツール(Mavenのような)では、特に指定しなければデフォルトでソースの互換バージョンが1.5である。これはJava 8上で走るにはアップデートが必要である。

変化はすでに始まっている。Java 8では、 jsr141.4のターゲットはもはやで受け入れられていない。1.5を使用すると警告を出す。Java 9がリリースされるときに、1.5のサポートは削除され、1.6に対しては警告を上げる。

実用的な観点から、これは大きな変化のように見えないかもしれません、しかし最近まで、OSGiのランタイムは、ジェネリックスを具現化できるコードを生成するために、-source 1.5 -target jsr14でコンパイルされたが、J2MEと互換なバイトコードを生成する。jsr14の使用は、Eclipseのコードベースから昨年取り除かれた。Androidは、ほとんどJ2MEを外した(とにかく、もし商業的な必要性があるなら、Felix と EquinoxなどのOSGiランタイムをまだ利用可能だ)ので、それらがもっと最近のランタイムでコンパイルされている事実は、大多数のJava開発者にとっては問題ではない。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT