Upload
honmarkhunt
View
6.924
Download
0
Embed Size (px)
Citation preview
Java9 Overview
@HonMarkHunt
@HonMarkHunt です。
スキル経験: 1 年 ( くらい )
ずっと Java8 で実装
趣味・プロレス(見る)・ダーツ(やる)・激辛(食べる)・総合格闘技(やってた)
早速本題!
Java9 新機能概要... の前に
Java の歴史
1996Ver 1.0
1998Ver 1.2
2002Ver 1.4
2000Ver 1.3
2004Ver 5.0
2006Ver 6
2014Ver 8
2011Ver 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 Pana
ma) もコンピュータの性能とかメモリ関連の話だった気がする。今後の 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, Pyth
on には 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 には『うおお!』となるような、革新的な目玉機能はありません。
• ジェットパックではなく、シートベルト。• モジュール化の説明は本当にざっくりな
ので、興味があれば調べてください。•ありがとうございました!!!!!!!