JJUG CCC 2013 Springに参加してきました #jjug #jjug_ccc
今日は朝早くから、西新宿でJJUG CCC 2013 Springに参加してきました。(まとめ)
久々の1日の勉強会で楽しかったです。あと都庁を間近かで見れてよかった。
ブログ書くまでが勉強会、という基本を新ためて学んだので、書きます。
基調講演-1 Javaのこれからを考える #ccc_k1
変容することが確実なこれからのシステム開発、それに耐え得る「サステイナブルSI」を考える。
途中から入りました(すみません)ので半端なメモです。
基調講演-2 What’s New for JavaFX in JDK 8 #ccc_k2
JavaFX、ちゃんと生きてます!、という話。
- 資料: http://www.slideshare.net/OracleMiddleJP/jjugwhatsnewforjavafxinjdk8
- JavaFXのイベントハンドラがJava8 Lambda式でわかりやすくなる
- 「モデナ」というUIテーマが追加。
- 3Dグラフィック機能追加(ジオメトリ、カメラ、ライト)
- 質問: iPadのJavaFXを去年デモしてたけどあれはどうなった?
- あれはコンセプトプルーフプロトタイプであって、提供予定はない(キリっ。OSSなので、誰でも可能性がありますよ。いつ参加する?今でしょ!!
Java EE 6 から Java EE 7 に向かって #ccc_h1
Java EE 7の情報。押えておくべき。
- 資料: http://www.slideshare.net/OracleMiddleJP/java-ee-6-to-java-ee-7
- プロファイルによるサブセット化はJavaSEの方にも将来的に入るよ。ラズベリーパイ用のJavaはそれを使ってるはず。
- Java EEのAPIは枝刈り(プルーニング)をして、古い・使わないものは整理します。
- JAXRPC,JAXR,EJB Entity Beanは、Jax-WS, JPAになります。
- 古いのはそのうち削除しますので移行してください。
- JavaEEのコンテナ(APサーバ)をJavaSEから立ち上げられるようになります。
- APIについては
- Concurrency,Batch,JSON,WebSocket→新規
- JSF2.2,JAX-RS→大幅な変更
- JSON JSR 353。前とは結構変化した。
- EL3.0ではメモリ上のオブジェクト群に対してLINQっぽい操作ができる(例を見る限り、Lambda式が使える、ということに思えたけど…)。
Project Lambda Essential #ccc_h2
基本をしっかりと。これを聞いてからGroovy資料作れたなら楽ができたのにorz。
- Lambda式の目的は、並列計算の記述を簡単にするため。
- クロージャとはあえて呼びたくない。なぜなら、ローカル変数をキャプチャしない(実効final)なのでレキシカルスコープとは言えない、関数型(高階型)が無い、など一般的なクロージャと思うとがっかりするよ。
- Lambda式の「構文」より「並列API(JSR166y、Fork/Join Framework)」の方が重要
- 2コアのCPUで、100万個の要素の平均分散をparrallellStream()で処理とると半分の時間になる!
- 100とか200個とかでは意味無いってことね。
- Lambda式が表すクラスをコンパイルしても.classファイルが生成されない。メモリ上に動的に生成される。またinvokeDynamicが使われている。
- streamは遅延評価される。
- 今までstreamは別バイナリだったけどb89でJava8 eaの本体の方に取り込まれ一体化しました。
Type Annotation って何? それを使うとプログラムはどう変わる? #ccc_r53
Java8で新規導入される「型アノテーション」なる言語機能について。
個人的には今回このセッションがツボでした。使いやすいかどうかはともかく、野心的なところがイイね! 個人的要望としてはJava10あたりでASTを変更可能にして欲しいw。
- 資料: http://www.slideshare.net/kimuchi583/r5-3-type-annotation
- Java8では、まず、アノテーションを置ける場所が増えます。
- Java7:宣言に付与する
- Java8: 型が書ける場所はどこでも
- こういうところに置けるアノテーションを型アノテーションと呼びます。
- 型アノテーションは@Target=ElementType.TYPE_USEで定義します。
例:
MyObject m = new @Interneed MyObject(); //new対象のクラス MyObject n = new @NonEmpty @ReadOnly MyObject(); //new対象のクラス class Hoge implements @Readonly List<@Readonly String> {} //ジェネリクスの型引数 MyObject xxx = (@NonNull String) myObject; //キャスト int @ReadOnly[]@ReadOnly[] a = .. int @ReadOnly[][] a = .. int []@ReadOnly[] a = ..
- 何をするものかというと、コード中の型情報に追加情報を指定してやって、それを元に代入やアクセスなどの操作を制限する。実効的にはGroovy 2.1の型チェック拡張みたい。
- Java8で何らかのASTをアクセスするAPIが提供されるはず。
- Java8の型アノテーション仕様のサポートは、「型アノテーションを含むコードがコンパイルできますよ」というだけ。驚くべきことに型アノテーション自体は1つも標準APIで定義されない。
- Checker FrameworkはJava6,7でも実行できるが、以下のような特殊コメントを使う。
//*>>> @ReadOnly...
/*>>> @ReadOnly... */
Groovy2.Xの新機能 #ccc_r25
あてくしの発表。人数多い。JGGUGとは違うのだよ!状態。
しかしまさかのプロジェクタ出力できず。
急遽Windows PCをお借りして2分ロスしてスタート。
PC貸してくださいました方ありがとうござました。
USB接続のRGBコネクタを持ってくるべきだったな。
でも結果としては無事になんとか。(かな?)
失敗から学ぶAPI設計 #ccc_r26
- 資料: http://www.slideshare.net/yusukey/api-ccch4-jjug-jjugccc-jjug-ccc-2013-spring?utm_source=dlvr.it&utm_medium=twitter
- 楽しく聞けました。バッテリー消耗によりメモなし。「デザインパターン使うな」が心に残ります。