Java 6から実装されたJava Compiler API(javax.tools)を使ってみた。以前はJavaプログラムからコンパイラを使いたくても、javacは配布可能なJREには含まれていなかったから別の方法をとるしかなかった。
JavaCompiler、JavaFileSystemManager、JavaFileObjectなど、いろんなクラスやインタフェースが組み合わさっているなかなか複雑なAPIだ。
とりあえずJavaCompilerのAPIドキュメントを見るとだいたいわかるようになっている。プログラムでStringにソースコードを入れて、それを直接コンパイラの入力とするJavaFileObject実装も例として紹介されていて助かる。