Java9 Overview
@HonMarkHunt
@HonMarkHunt です。
スキル
経験: 1 年 ( くらい )
ずっと Java8 で実装
趣味
・プロレス(見る)
・ダーツ(やる)
・激辛(食べる)
・総合格闘技(やってた)
早速本題!
Java9 新機能概要
... の前に
Java の歴史
1996
Ver 1.0
1998
Ver 1.2
2002
Ver 1.4
2000
Ver 1.3
2004
Ver 5.0
2006
Ver 6
2014
Ver 8
2011
Ver 7
改めて
Java9 新機能概要
新機能一覧
ちょwww
落ち着け・・
流れを知れば・・・
大きな流れを知ろう
Project Coin
  ・ try-with-resours
  ・ try-multi-catch
Project Lamda
 ・ラムダ式
Project Jigsaw
  ・????
Project Jigsaw
    関連
その他の変更
*イメージです
Java9 =
Project Jigsaw
    +
その他の変更
その他の変更
個人的に『おぉ!』と思った
新機能  TOP 4
 
第 4 位
JEP 254 : Lambda Expressions
JEP 126 : Lambda Expressions
[Issue]
 ・まだまだ弱いぞ、 Java のクロージャー
 ・ GS Collection とか出てきちゃったよ!
 ・もっとメソッドほっしーー!
JEP 126 : Lambda Expressions
[Solution]
 ・ takeWhile
 ・ dropWhile
 ・ ofNullable
 の追加
参考: http://qiita.com/k--kato/items/64967d2555f39aace608
JEP 126 : Lambda Expressions
[Kansou]
 ・使い時が微妙
 ・ Optional との連携とか欲しかったな
第 3 位
JEP 254 : Compact Strings
JEP 254: Compact Strings
[Issue]
 ・ String のメモリ消費量は意外とすごい
 ・文字列はヒープに占める割合が最も多いコン
ポーネント
↓
 ・旧時代 (1996 年 ) のコンピューター想定の
        メモリの持ち方をしている
ため。
JEP 254: Compact Strings
[Solution]
 ・文字列の内容に応じて、 ISO-8859-1/Latin-1 ( 1 文字
1 バイト)もしくは UTF-16 ( 1 文字 2 バイト)いずれ
かでエンコードした文字列を格納
 ・ UTF-16 の char 配列から byte 配列にエンコーディン
グフラグのフィールドを追加したものへ、変更
     ↓
 ・メモリフットプリントの削減、 GC 発生の相当な
減少、その他細かい場合では小規模なパフォーマンス
向上
参考: http://qiita.com/k--kato/items/64967d2555f39aace608
JEP 254: Compact Strings
[kansou]
 ・コード書く側が意識することはないけど、
メモリ使用量が減るのは良い事だ!
 
 ・ Java10(Project Vallhara), Java11(Project
Panama) もコンピュータの性能とかメモリ関連
の話だった気がする。今後の Java のテーマな
のかな?
第 2 位
JEP 225 : Javadoc Search
JEP 225 : Javadoc Search
[Issue]
・検索めんど
くせえよ!!
JEP 225 : Javadoc Search
検索
[Solution]
JEP 225 : Javadoc Search
[Kansou]
第 1 位
JEP 222: jshell : The Java Shell
(Read-Eval-Print Loop)
REPL( れぷる ) って何?
・読んで (Read) 、評価して (Eval) 、
 表示する (Print) 。を繰り返す (Loop) 。
・一行書いてタァーーンッ‼一行書いてタァーーンッ‼
 を繰り返す ( スタバでやるとモテそう ) 。
JEP 222 : jshell
[Issue]
 ・ Scala, Ruby, JavaScript, Haskell, Clojure,
Python には REPL はとっくに存在する
 ・コードをちょっと書きたいときメンドイ
 ・実は Java はラーニングコストが高い ( 気軽
に始められない )
↓
 ・プログラム初心者が Java で "Hello
World" 出すまでを考えてみて。。
JEP 222 : jshell
[Solution]
 
demo
jdk9 配下の bin 直下に jshell が入っています。
こちらから DownLoad できます https://jdk9.java.net/download/
すかさず Enter で起動!タアアァアーン!!
HelloWorld してみます
↑Tab の補完も効きます
↑ また Tab で補完
実行してみます ( セミコロン不要 )
できました!!!
   以上
JEP 222 : jshell
[Kansou]
 ・どっとインストール見ながら、書いてみたり
して捗りそう
 ・補完が意外と効いて割とすらすら書ける
 ・逆に勉強以外ケース ( 業務 ) では、特に使えな
いかな
と、言うわけで
お待たせいたしました。
What's Project Jigsaw ?
Issue
• クラスパスやばい
• ふぇぇ。 Jar ファイルしゅごいよぉお。
  = JarHell
Solution
Java を大規模プログラミングへよりよく対
応させるために Java 言語を拡張。
グループ化や依存関係、バージョン管理な
どを表現できるハイレベルのモジュール
構造を実現するために改良を行うプロ
ジェクトを提供します。
つまり
これを
Hadoop のクラスパ
ス
すっきりさせたい。
そのために、
モジュールという概念を導入します。
モジュール化でこうなります
- プロジェクト
  - ソースフォルダ
   - パッケージ
    - エイドリアン .java
- プロジェクト
  - ソースフォルダ
   - モジュール
   - module-info.java
    - パッケージ
     - エイドリアン .java
Legacy Java9
*わかりやすくするために、 Eclipse のディレクトリ構成っぽくしてい
モジュール化でこうなります
- プロジェクト
  - ソースフォルダ
   - パッケージ
    - エイドリアン .java
- プロジェクト
  - ソースフォルダ
   - モジュール
   - module-info.java
    - パッケージ
     - エイドリアン .java
Legacy Java9この、
module-info.java
にクラスパス毎の
依存関係を書いて
いくよ
ざっとこんな感じです。
まとめ
• Java9 には『うおお!』となるような、革
新的な目玉機能はありません。
• ジェットパックではなく、シートベルト
。
• モジュール化の説明は本当にざっくりな
ので、興味があれば調べてください。
• ありがとうございました!!!!!!!

Java9新機能概要