2012年5月28日月曜日

JavaQne(じゃばきゅん) Fukuoka 2012 に参加しました(中編)

前編からの続きです。
JavaQne(じゃばきゅん) Fukuoka 2012 に参加しました(前編)

Java SE 7、そしてJava SE 8

今までのJavaの仕様策定に関する紆余曲折の歴史を楽しそうに語る櫻庭さんが印象的な講演でした。

講演内容は、Java SE7, 8 の追加機能についてです。
基本的にはIT Proの「Java SE 7徹底理解」を読んでくださいとのことでしたw

ポイントまとめてみます。

Java SE 7について

Project Coin

Project Coin(文法の小さな変更)は以下のとおりです。
詳細は「Java SE 7徹底理解」に譲ります。

  • switchでの文字列
  • 例外のmulti catch
  • safe rethrow
  • ジェネリクスの省略記法(ダイヤモンド演算子)
  • try-with-resources
  • 簡潔な可変長引数メソッド

try-with-resourcesのみ解説がありました。
こんな感じでAutoCloseableを実装したクラスを以下の構文で記述するとclose処理をJava側で自動でやってくれるとのことです。
コードが簡潔になってclose漏れがなくなるので積極的に使っていくべき構文だと思います。
close処理が必要な標準のストリーム系のクラスは既にAutoCloseableがimplementされているみたいなので、その辺も意識しなくてよいみたいです。


NIO.2

NIO.2は新しいファイルシステムAPIです。
ファイルのコピー、シンボリックリンクなどのファイル操作ユーティリティが(やっと)提供されました。

さようなら、FileInputStream、さようならDecoratorで記述する長い処理。
FileVisitorクラスが提供され、ディレクトリツリーの検索も簡単にできるようです。
ここについては、別途調べてみようと思います。

InvokeDynamic

InvokeDynamicは、JVM上で動作するJava以外の言語でのメソッド呼出しのための仕組みみたいです。
Java言語でプログラム記述している分には意識することがない機能ですが、例えばJRubyのような言語はこの機能を使うことで呼出しが最適化されて、かなり性能があがるみたいです。

Fork/Join Framework

Fork/Join Frameworkは、マルチコア環境での効率的なタスク処理をサポートするためのフレームワークのようです。
この辺は、もう少し勉強が必要なので、機会があれば別途まとめたいと思います。


Java SE 8について

Project Lambda

ラムダと読みます。読めませんでした。ランバダと心の中で読んでいました。
以下、これがラムダと読めなかった人レベルの理解で書いてあるので、詳しい方のつっこみを期待します。

Java SE 8 では ラムダ式(記述方法)が導入されます。
よくセットで使われるクロージャが導入されるわけではないことに注意。
クロージャは「レキシカルスコープを伴うファーストクラスの関数(無名関数)」らしいです。
相変わらずJavaでは関数をオブジェクトとして使えないということです。
無名クラスまでですね。

Javaでのラムダ式は、ある条件での記述を簡単にするための新しい構文という理解です。

どういうときの記述を簡単にできるかというと、メソッドがひとつしかないインターフェースを実装した無名クラスのインスタンス生成時に簡易に記述することができます。

ラムダ式によるビフォーアフターが以下です。
AndroidのOnClickLitenerの場合、(注:Androidではまだラムダは使えません)

なんということでしょう。定義のためだけに記述していた無名クラスの記述が
こんなにすっきりしていましました。まさに匠。

匠はさらに技を見せてくれます。

型すら不要になってしまいました。まさに匠。

ラムダ式は以下の記述で利用できます。
(引数, 引数, ...) -> メソッド本体

この簡潔なコードは、前に述べたFork/Join Frameworkで処理ごとにたくさんのタスクを記述するのに効果を発揮するみたいです。

コードがすっきりとするので、これも積極的に導入していきたい機能です。
櫻庭さんの以下のサイトで勉強しました。上記以外にもっと機能があるみたいなので興味があるかたは是非。
Java in the Box Annex


Jigsaw Project


パッケージングに関する仕様をまとめたものみたいですが、時間切れであまり触れられませんでした。
おいおい調べます。



ラムダが長くなってしまった... 後編に続きます。
JavaQne(じゃばきゅん) Fukuoka 2012 に参加しました(後編)

0 件のコメント:

コメントを投稿