55
Java9 Overview @HonMarkHunt

Java9新機能概要

Embed Size (px)

Citation preview

Page 1: Java9新機能概要

Java9 Overview

@HonMarkHunt

Page 2: Java9新機能概要

@HonMarkHunt です。

スキル経験: 1 年 ( くらい )

ずっと Java8 で実装

趣味・プロレス(見る)・ダーツ(やる)・激辛(食べる)・総合格闘技(やってた)

Page 3: Java9新機能概要

早速本題!

Java9 新機能概要... の前に

Page 4: Java9新機能概要

Java の歴史

1996Ver 1.0

1998Ver 1.2

2002Ver 1.4

2000Ver 1.3

2004Ver 5.0

2006Ver 6

2014Ver 8

2011Ver 7

Page 5: Java9新機能概要

改めて

Page 6: Java9新機能概要

Java9 新機能概要

Page 7: Java9新機能概要

新機能一覧

Page 8: Java9新機能概要
Page 9: Java9新機能概要
Page 10: Java9新機能概要
Page 11: Java9新機能概要
Page 12: Java9新機能概要

ちょwww

Page 13: Java9新機能概要

落ち着け・・流れを知れば・・・

Page 14: Java9新機能概要

大きな流れを知ろうProject Coin  ・ try-with-resours  ・ try-multi-catch

Project Lamda ・ラムダ式

Project Jigsaw  ・????

Page 15: Java9新機能概要

Project Jigsaw    関連

その他の変更*イメージです

Page 16: Java9新機能概要

Java9 =Project Jigsaw    +その他の変更

Page 17: Java9新機能概要

その他の変更

個人的に『おぉ!』と思った

新機能  TOP 4

 

Page 18: Java9新機能概要

第 4 位

JEP 254 : Lambda Expressions

Page 19: Java9新機能概要

JEP 126 : Lambda Expressions

[Issue] ・まだまだ弱いぞ、 Java のクロージャー ・ GS Collection とか出てきちゃったよ! ・もっとメソッドほっしーー!

Page 20: Java9新機能概要

JEP 126 : Lambda Expressions

[Solution] ・ takeWhile ・ dropWhile ・ ofNullable

 の追加

参考: http://qiita.com/k--kato/items/64967d2555f39aace608

Page 21: Java9新機能概要

JEP 126 : Lambda Expressions

[Kansou] ・使い時が微妙 ・ Optional との連携とか欲しかったな

Page 22: Java9新機能概要

第 3 位

JEP 254 : Compact Strings

Page 23: Java9新機能概要

JEP 254: Compact Strings[Issue] ・ String のメモリ消費量は意外とすごい ・文字列はヒープに占める割合が最も多いコン

ポーネント

↓ ・旧時代 (1996 年 ) のコンピューター想定の 

       メモリの持ち方をしているため。

Page 24: Java9新機能概要

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

Page 25: Java9新機能概要

JEP 254: Compact Strings[kansou] ・コード書く側が意識することはないけど、メ

モリ使用量が減るのは良い事だ!  ・ Java10(Project Vallhara), Java11(Project Pana

ma) もコンピュータの性能とかメモリ関連の話だった気がする。今後の Java のテーマなのかな?

Page 26: Java9新機能概要

第 2 位

JEP 225 : Javadoc Search

Page 27: Java9新機能概要

JEP 225 : Javadoc Search

[Issue]

・検索めんどくせえよ!!

Page 28: Java9新機能概要

JEP 225 : Javadoc Search

検索

[Solution]

Page 29: Java9新機能概要

JEP 225 : Javadoc Search

[Kansou]

Page 30: Java9新機能概要

第 1 位

JEP 222: jshell : The Java Shell (Read-Eval-Print Loop)

Page 31: Java9新機能概要

REPL( れぷる ) って何?

・読んで (Read) 、評価して (Eval) 、 表示する (Print) 。を繰り返す (Loop) 。・一行書いて一行書いて‼ ‼ を繰り返す ( スタバでやるとモテそう ) 。

Page 32: Java9新機能概要

JEP 222 : jshell

[Issue] ・ Scala, Ruby, JavaScript, Haskell, Clojure, Pyth

on には REPL はとっくに存在する ・コードをちょっと書きたいときメンドイ ・実は Java はラーニングコストが高い (気軽に始められない )

↓ ・プログラム初心者が Java で "Hello World"出

すまでを考えてみて。。

Page 33: Java9新機能概要

JEP 222 : jshell

[Solution] 

demo

Page 34: Java9新機能概要

jdk9 配下の bin直下に jshell が入っています。

こちらから DownLoad できます https://jdk9.java.net/download/

Page 35: Java9新機能概要

すかさず Enter で起動!タアアァアーン!!

Page 36: Java9新機能概要

HelloWorld してみます

Page 37: Java9新機能概要

↑Tab の補完も効きます

Page 38: Java9新機能概要

↑また Tab で補完

Page 39: Java9新機能概要

実行してみます (セミコロン不要 )

Page 40: Java9新機能概要

できました!!!   以上

Page 41: Java9新機能概要

JEP 222 : jshell

[Kansou] ・どっとインストール見ながら、書いてみたり

して捗りそう ・補完が意外と効いて割とすらすら書ける ・逆に勉強以外ケース (業務 ) では、特に使え

ないかな

Page 42: Java9新機能概要

と、言うわけで

Page 43: Java9新機能概要

お待たせいたしました。

Page 44: Java9新機能概要

What's Project Jigsaw ?

Page 45: Java9新機能概要

Issue

• クラスパスやばい•ふぇぇ。 Jar ファイルしゅごいよぉお。  = JarHell

Page 46: Java9新機能概要

Solution

Java を大規模プログラミングへよりよく対応させるために Java言語を拡張。

グループ化や依存関係、バージョン管理などを表現できるハイレベルのモジュール構造を実現するために改良を行うプロジェクトを提供します。

Page 47: Java9新機能概要
Page 48: Java9新機能概要

つまり

Page 49: Java9新機能概要

これを

Hadoop のクラスパス

Page 50: Java9新機能概要

すっきりさせたい。

Page 51: Java9新機能概要

そのために、モジュールという概念を導入します。

Page 52: Java9新機能概要

モジュール化でこうなります

- プロジェクト  - ソースフォルダ   - パッケージ    - エイドリアン .java

- プロジェクト  - ソースフォルダ   - モジュール   - module-info.java    - パッケージ     - エイドリアン .java

Legacy Java9

*わかりやすくするために、 Eclipse のディレクトリ構成っぽくしています。

Page 53: Java9新機能概要

モジュール化でこうなります

- プロジェクト  - ソースフォルダ   - パッケージ    - エイドリアン .java

- プロジェクト  - ソースフォルダ   - モジュール   - module-info.java    - パッケージ     - エイドリアン .java

Legacy Java9この、

module-info.java

にクラスパス毎の依存関係を書いていくよ

Page 54: Java9新機能概要

ざっとこんな感じです。

Page 55: Java9新機能概要

まとめ

• Java9 には『うおお!』となるような、革新的な目玉機能はありません。

• ジェットパックではなく、シートベルト。• モジュール化の説明は本当にざっくりな

ので、興味があれば調べてください。•ありがとうございました!!!!!!!