JSR 308: Annotations on Java Types を試してみる

JavaSE 7 で採用される予定の JSR 308 を JSR 308 Prototype Implementation を使って試してみる。
ちなみに、JSR 308 というのはアノテーションの適用範囲をローカル変数やジェネリックの型引数などへも広げるための仕様です。

使用するための準備

現時点で JSR 308 を試すには、以下のような手順を実施し、JSR 308 プロトタイプ実装が用意している Java コンパイラを実行できる環境を用意する必要があり、ここでは Windows XP 上の JavaSE 7 ea-b22 で実行するための環境を用意した。

  1. JSR 308 プロトタイプ実装のダウンロードと展開
  2. コンパイルと javac コマンドの作成
  3. 動作確認

JSR 308 プロトタイプ実装のダウンロードと展開

http://groups.csail.mit.edu/pag/jsr308/ サイトの Download から jsr308-langtools.zip をダウンロードし、適当なディレクトリに展開します。

コンパイルと javac コマンドの作成

展開したディレクトリの langtools/make/build.properties ファイルを編集し、boot.java.home に Java のホームディレクトリのパスを設定します。

# This is the JDK used to build and run the bootstrap version of javac.
# The bootstrap javac is used to compile both boostrap versions of the
# other tools, and product versions of all the tools.
# Override this path as needed, either on the command line or in 
# one of the standard user build.properties files (see build.xml)
boot.java.home = c:/jdk1.7.0
・・・

build.properties の編集後、langtools/make ディレクトリ内で ant コマンドを使って、javac のビルドを行います。

>ant build-javac

javac のビルドが正常に終了すると langtools/dist/bin に javac ファイルが作成されますが、Windows 上ではこれを直接実行できないため、今回は以下のような bat ファイル(javac.bat)を同ディレクトリに作成しました。(ただし、動作確認が未だなので間違ってるかも)

@echo off

set mydir=%~d0%~p0
set ea=-ea:com.sun.tools

"java" %ea% -jar %mydir%/../lib/javac.jar %*

動作確認

環境変数 PATH で langtools/dist/bin ディレクトリが JavaSE 7 の bin ディレクトリよりも優先されるように設定(langtools/dist/bin/javac.bat を実行するように設定)した後、javac コマンドを実行して JSR 308 用の javac が実行されていることを確認します。

>javac -version
javac 1.7.0-jsr308-0.3