javac - Javaプログラミング言語コンパイラjavacは、Javaプログラミング言語で記述されたソース・ファイルを読み取り、バイトコードのクラス・ファイルにコンパイルします。 必要に応じて、プラガブルな注釈処理APIを使用して、ソース・ファイルとクラス・ファイルから検出された注釈を処理することもできます。 このコンパイラはコマンド行ツールですが、JavaコンパイラAPIを使用して呼び出すこともできます。 このコンパイラは、JLS (Java言語仕様)で定義されたソース・コードを受け入れ、JVMS (JAVA仮想マシン仕様)で定義されたクラス・ファイルを生成します。  
次のリストには、javacツールで導入されたAPIを示します。
分野: コンパイラ
概要: 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を参照してください。
javacツールの詳細は、次のリンク先を参照してください。