argius note

プログラミング関連

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に代わってJavaFXGUIの主力になっていくのでしょうか。それともデスクトップアプリ自体が無くなるのでしょうか。


その他の新機能

アノテーションは、例えば@NonNullのように制約を付けるような使い方があるようです。

HotSpotとJRockitの統合は、Oracleが既に旧BEAシステムズのJRockit JVMを所有しており、旧サンマイクロシステムズのHotSpot JVMを取得したことでダブってしまいました。今回は、この2つのJVMを統合するというものです。


他にも、Wikipediaによれば、JavaFX 3.0、マルチタッチデバイス対応などがあるようです。



その他の機能を含む詳細は、下記ページで確認できます。



今度は正式版リリース直後くらいにまとめられると良いのですが。

*1:JSR 223: Scripting for the Java Platform のこと。