Java 8 の現状をチェック - 2013年2月時点
最近は、ここで扱っている情報をリアルタイムに収集することはほとんどなくなっています。
久しぶりにJava関連の情報を集めに行ってみると...どうやら今年の秋ごろにJava8がリリースされる見込みとか。
Java7ではまとめたことですし、今回もちょっとだけ追いかけてみることにします。
今回は、2013年2月時点での情報についてコメントしてみます。
ラムダ式の導入
"Project Lambda"と呼ばれています。かつては Java Clojures、すなわちJavaのクロージャと呼ばれていたもの。Java 7で見送られていました。
ラムダ式以前は、関数型インタフェース(ActionListenerやComparable)によって実現されていました。でもこの方法は、様々な点で簡潔さに欠けます。
このラムダ式の導入によって関数型インタフェースを置き換えることが可能になり、GUIのアクションが記述しやすくなったり、コレクションの操作の充実が期待されます。特にコレクションは、関数型言語などでお馴染みのmapやfilterが使えるようになる(未確認)ようです。
新しい日時API
Java標準ライブラリの日時APIは、最初はjava.util.Dateが、その後にjava.util.Calendarが導入されましたが、いずれも決定版と言えるものではありません。
日付を上手く扱いたい場合は、Joda Timeとか、Apache Commonsなどのサードパーティのライブラリを使うことが多いでしょう。
新しい日時APIでは、オフセット(紀元からのミリ秒など)やタイムゾーンを分離した単純な日時を表すLocalDate/Timeというクラス群が設けられています。例えば日付であれば、"2013-02-19"という文字列とLocalDateが相互変換可能です。
いずれソースコードも見てみたいところです。
新JavaScriptエンジン Nashorn
Java6でScripting for Java *1が導入された際には、JavaScriptエンジン"Rhino"が標準搭載されました。
今回は、Rhinoから新しい高速なJavaScriptエンジンであるNashornに置き換えられるようです。Nashornは、Oracle内部プロジェクトで開発が進んでいたもので、Java8に搭載されることになりました。
延期・廃止
モジュールシステム(JSR 294)は、"Project Jigsaw"と呼ばれるプロジェクトで開発されていますが、延期になったようです。
Swingアプリケーションフレームワーク(JSR 296)は、残念ながら廃止となってしまいました。今後は、Swingに代わってJavaFXがGUIの主力になっていくのでしょうか。それともデスクトップアプリ自体が無くなるのでしょうか。