JavaDayTokyo 2017 Report 1 : Java9 関連
今年もJavaDayTokyoに出席させていただきました。この記事ではJava9関連についてまとめます。
Oracle的な目玉はJigsawとjshellでした。
が、
Jigsawは去年のJavaDayTokyoで集中的に話を聞いたけどあまり使いどころがないなぁ… と感じ、
jshellはあると便利だけどこれまた本番で使うようなものではない(あと、以前に触ってみた感じ、そんなに使い勝手いいとも思えない… 変わってるのかな)
ということでこの2つは外して話を聞いてきました。
そんな私に櫻庭さんの、こちらのセッションがドンピシャでした。
D1-A4 Java SE 9のすすめ
Compatibility
いままで一生懸命後方互換性を守り続けてきたJavaがついに一部捨てた… と言うのはすごい分岐点だとは思うのですが、捨てられるだけあって何それなやつは多く。
Java DBってなんや…
Milling Project Coin
Project Coin (Java7に主に取り込まれた、ダイアモンドなど、Javaを書きやすくするプロジェクト)を更にすすめるもの。
Milingがギザギザをつける なので 「『ギザジュウ』作ろうぜ!」的なニュアンスらしいw
StreamAPIで書きにくいよねーっていうのが一部書けるようになった
- dropWhile
- takeWhile
- ofNullable
特にtakeWhileは使いそう。条件満たしたら終了。
これができなくてWhileとか、for + breakが結構残ってる感じ。
Optional
- stream
- ifPresentOrElse(action, elseAction)
- or(supplier)
ifPresentOrElseは使えそうですね。Nullのときの処理をelseとして記述可能に。
CollectionのFactoryメソッド
ofで初期化ができるようになる!
public static final List<String> PLAYERS = List.of("則本", "嶋", "銀次"); public static final MAP<Integer, String> PLAYERS = Map.of(14, "則本", 37, "嶋", 33, "銀次");
もうArrays.asListとか書かなくてよし。
Mapも初期化できるようになったので、何回もputとかしなくてよし。
(テストコードも書きやすくなるんじゃないかなー)
ポイントとして
ofで作ったコレクションはイミュータブル。Javaの標準仕様でイミュータブルなコレクションが扱えるのは初なんだとか。
(これって実装クラスは何が返るんだ? ※あとで確認)
String関係
表立っての変更ではないけど、なかなかおもしろいです。
内部の実装がcharの配列からbyteの配列へ
今までは全ての文字をUTF-16のコードポイント(=16バイト)で表していたのだけど、アスキー文字の場合、8バイトあれば十分なのでbyte型の配列で表すことにした、というもの。
これは結構メモリの使用量変わってくるのでは。
(じゃあ逆に16バイト必要な文字はどう収まるんだろう?byte変数を2個使うのかな? それともそういうときはchar? ※あとで確認)
だったら逆に、サロゲートペアも、もう少し自然に見えるようにしてくれよ… って思ったけど無理か。
+演算子での結合が StringBuilderに置き換え → invokeDynamicに置き換え
いちいちStrinbBuilderで結合してtoStringする時代が終わるのかしら
で、いつリリース?
今の予定では7月27日… ですが、結局JavaOneのころまでずれるんじゃないの… とのことでした。
今年は、これからド新規でいろいろなものを作っていくので、是非 9 を使いたいところなんですが… 果たして。