javac - Java™ プログラミング言語コンパイラ

Java プログラミング言語コンパイラである javac は、Java プログラミング言語で記述されたソースファイルを読み取り、バイトコードのクラスファイルにコンパイルします。必要に応じて、プラグイン可能な注釈処理 API を使用して、ソースファイルとクラスファイルから検出された注釈を処理することもできます。このコンパイラはコマンド行ツールですが、Java コンパイラ API を使用して呼び出すこともできます。このコンパイラは、JLS (Java 言語仕様) で定義されたソースコードを受け入れ、JVMS (JAVA 仮想マシン仕様) で定義されたクラスファイルを生成します。

API の仕様

Java SE 7 Update 2 の拡張機能

分野: コンパイラ
概要: Java 7 コンパイラでは、配列初期化子式に含まれるダイヤモンド演算子が誤って受け入れられました。たとえば、次のコードはこれまで受け入れられていましたが、今後は正しく拒否されます。

class Foo<X> {}

class Test {
    Foo<String>[] fooArr = new Foo<>[]{ }; //error
}

7057297 を参照してください。

分野: コンパイラ
概要: Java 7 コンパイラでは、もっとも特異的なアルゴリズム実装のバグにより、次のプログラムが誤って受け入れられていました。

import java.util.*;

interface A {List<Number> getList();}
interface B {ArrayList getList();}
interface AB extends A, B {}

class Test {
   void test(AB ab) {
      Number n = ab.getList().get(1);
   }
}

JDK 6 では、このプログラムは失敗していました。Java SE 7u2 では、このプログラムを正しく拒否するための修正が行われました。7062745 を参照してください。

詳細情報


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.