Xtend 2.4でアクティブアノテーションの概念を導入された。このアクティブアノテーションを使えば、開発者はXtendのソースコードからJavaのソースコードへの転換処理に手を入れることができる。Xtendのリリース2.4.3では、アクティブアノテーションを使ってファイルシステムにアクセスできる。
Xtendは静的な型付けのプログラミング言語であり、Javaのソースコードに変換される。XtendはJava言語に近いものの、Javaにはない構文上の構成要素を多く提供することでJavaを拡張している。Xtendを使えば、開発者はラムダ式や型推論、拡張メソッドなどを利用できる。
Xtendは通常、Eclipse Java IDEで利用される。Xtendのソースファイルを保存するとバックグラウンドですぐにJavaのコードに変換される。XtendとJavaはプロジェクト上で共存できるので、XtendのコードからJavaのクラスやメソッドを参照することもでき、その逆も可能だ。さらに、Xtendの構文は既存のJavaクラスにも適用できる。したがって、サードパーティのライブラリの機能を拡張することもできる。
アクティブアノテーションが導入されたのはXtendからJavaのコードへの変換に手を入れられるようにするためだ。マクロやObjective-Cのコンパイラ指令のように動作し、定型的なコードを削減するのに役立つ。例えば、普通のXtendクラスに"@singleton" (このアノテーションを定義したとして)を付加すると、生成されるJavaコードは自動的にシングルトンパターンに必要なコードを含んでいる。このコードの生成は後半のフェーズで行われるが、変換後、他のXtendクラスからすぐに参照できる。アノテーション"@singleton"を付加したクラスはgetInstance()を実装するのだ。
ファイルシステムのAPIをを利用すれば、開発者はアクティブアノテーションを使ってソースコード以外のものも作れる。Xtendのリード開発者であるSven Efftinge氏はアクティブアノテーションを使って国際化対応をする方法をブログで紹介している。その方法によれば、静的な文字列定数を含むXtendクラスにアノテーションを付加することで、変換されたJavaクラスにはこれらの定数にアクセスできる静的メソッドが生成され、対応するプロパティファイルにはその文字列定数が含まれる。 また、ソースファイルのダイジェストやシグネチャを自動的に生成する、といった使い方も可能だ。
アクティブアノテーションAPIを使えば、コンパイル中にファイルシステムにアクセスできます。これは構成ファイルやプロジェクトリソースをベースにしたシグネチャを生成するのに役に立ちますし、コードをベースにしてリソースを生成することも可能です。