みそスープ

みそスープの話と技術系の話です。

Java 9を試した話

これによりノルマ達成のため、技術的なお話ができます。 misoshiru.hateblo.jp

前もって一つ伝えておきますが、基本的に適当に調べたことをまとめておくブログなので、
時々私の勘違いで間違ったことが書いてあったり、古い情報が混在していたりすると思います。予めご了承ください。
誤った情報で悲しいことになっても責任は負えませんのでよろしくお願いします。

Java 9を試した話

こんばんは。みそスープの人です。
過ぎし日の9月21日、Java SE 9が一般提供されました。

今回の破壊的変更で、30億のデバイスで走るJavaのうち何十億のデバイスが爆発四散するのかはさておき、とりあえず自環境のWindows 10 Pro(Ver1703)にJDK9を導入して色々試してみるまでのお話です。

01. インストールする

こちらからJDK 9をダウンロードします。 Java SE Development Kit 9 - Downloads
その後、いつも通りパスを通します。

f:id:fsluey:20171017235852p:plain
Java Install Directory

Java 9よりディレクトリ名が変わっているのでパスを通す際には注意しましょう。
今までのJavaとはVersion Schemeが異なるので今後も注意が必要です。
詳細はJEP 223: New Version-String Schemeを。

f:id:fsluey:20171018000711p:plain
これで無事、パスが通ったので色々試してみましょう。

02. Streamの新機能

StreamにdropWhile, takeWhile, ofNullableが仲間入りしました。
Stream (Java SE 9 & JDK 9 )

新機能 概要
dropWhile 該当するもの以外を返す
takeWhile 該当するもののみ返す
ofNullable nullでないもののみ返す
list.stream().dropWhile(a -> a < 1).forEach(a -> System.out.println(a));

みたいなことができます。

03. JShell

使ってみた。

f:id:fsluey:20171018185909p:plain
JShell Test

悪くない感じ。外部ファイルの読み込みやクラスの作成も問題なく可能だそうです。

04. Module

Java 9での目玉と言える機能であるModule System。
classpathで依存ライブラリを解決する、という今までのJavaの仕組みで色々とたいへんだった、モジュールというものをPackageの上の階層として作ってあげることで依存関係が見やすくなったりいろいろと便利だよね,という試みのようです。(解釈が間違ってたらごめんなさい)

モジュールについてはmodule-info.java内に記述、依存するモジュールと外部に提供するものを明記するようです。 また、モジュールを用いる事によって、Java 9では各クラスが『特定のモジュールに対してpublic』『モジュール内でのみpublic』といった事ができるようになるようです。

未だ半分も理解できていないので、そのうち別記事としてちゃんとまとめておきたいと思います。

05. おわりに

下位互換性がないことからもまだしばらくは導入は見送られそうな感じがとてもしますが、
内容を見ていると結構面白いので、将来的にはJava 9が普及したらうれしいなと思います。
Listや標準ライブラリとしてのJSONのParserが見送られたのは残念ですがJava 10に期待しましょう。
後は一刻も早くModuleについてきちんと理解しようと思います、はい。

次回はたぶん味噌汁とUnreal Engine 4の話をすると思います。

ではでは。