読者です 読者をやめる 読者になる 読者になる

山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Retrolambda

ブログ
Retrolambdaを使ってみました。

RetrolambdaというのはJava8のラムダ式をJava7,6,5でも使えるようにするというものです。ラムダ式というのはだいたいクロージャと同じもので(厳密には違いがあるかもしれませんが)アプリ開発やこないだのリアクティブプログラミングでは重宝します。

どういう仕組みになっているのか疑問で、もしかしたらゲテモノかもしれないと思ったのですが、実際ゲテモノではありませんでした。というのはコンパイルはJava8で行います。そのためソースはなんちゃってJava8でなくちゃんとしたJava8なのです。

Java8のラムダ式は無名クラスの記述をいろいろ省略して書けるようにしたものです。コンパイルの段階で内部的に無名クラスに変換してコンパイルするようになっています。なのでできたバイトコードはその理屈ではJava7以前でも実行可能なはずです。しかし実際必ずしもそうはいかないのでバイトコードを調整する必要があります。その調整をするのがRetrolamdaです。

Retrolamdaで書いたソースは将来的に正式なJava8にアップデートするときに変更がいらないのはポイントが高いですね。