SlideShare a Scribd company logo
1 of 55
Download to read offline
レガシープログラマ的に
未知のJava9について
少しだけ考えてみた。
fun-tech meetup #5
2017-11-10(金)
この発表は、
この発表は、
ラムダ式(※1)どころか
switch文で文字列を扱えない環境(※2)で
保守開発をしていたレガシープログラマが、
zJava9新機能の嬉しい度を測ったりして
いろいろと考えてみた。
(※1) Java8からの機能。気合を入れないと読めない。
(※2) Java7からString型が利用可能に。嬉しかった。
・・・という内容です。
自己紹介
※ 背景は2017年5月23日の横浜スタジアムの様子
自己紹介
@meguro_n
facebook.com/megurono
目黒 のぞみ(Meguro Nozomi)
● 都内SIer勤務(7年半くらい)
● 北海道出身(鍛高譚の生産地)
● 趣味は野球観戦(来年こそ\横浜優勝/)
● 業務でJavaや.NET系を扱う程度の能力
※ 背景は2017年5月23日の横浜スタジアムの様子
Java のリリースの歴史
↑
JDK
1.0
Java
発表
↓
JDK
1.1
↓
↑
J2SE
1.2
Playground
J2SE
1.3
Kestrel
↓
↑
J2SE
1.4
Merlin
J2SE
5.0
Tiger
↓
↑
Java
SE 6
Mustang
Java
SE 7
Dolphin
↓
↑
Java
SE 8
Java
SE9
Java のリリースの歴史
↑
JDK
1.0
Java
発表
↓
JDK
1.1
↓
↑
J2SE
1.2
Playground
J2SE
1.3
Kestrel
↓
↑
J2SE
1.4
Merlin
J2SE
5.0
Tiger
↓
↑
Java
SE 6
Mustang
Java
SE 7
Dolphin
↓
↑
Java
SE 8
Java
SE9
Java のリリースの歴史
↑
JDK
1.0
Java
発表
↓
JDK
1.1
↓
↑
J2SE
1.2
Playground
J2SE
1.3
Kestrel
↓
↑
J2SE
1.4
Merlin
J2SE
5.0
Tiger
↓
↑
Java
SE 6
Mustang
Java
SE 7
Dolphin
↓
↑
Java
SE 8
Java
SE9
Java のリリースの歴史
名称が微妙に
変わっている・・・?
↑
JDK
1.0
Java
発表
↓
JDK
1.1
↓
↑
J2SE
1.2
Playground
J2SE
1.3
Kestrel
↓
↑
J2SE
1.4
Merlin
J2SE
5.0
Tiger
↓
↑
Java
SE 6
Mustang
Java
SE 7
Dolphin
↓
↑
Java
SE 8
Java
SE9
Java のリリースの歴史
↑
JDK
1.0
Java
発表
↓
JDK
1.1
↓
↑
J2SE
1.2
Playground
J2SE
1.3
Kestrel
↓
↑
J2SE
1.4
Merlin
J2SE
5.0
Tiger
↓
↑
Java
SE 6
Mustang
Java
SE 7
Dolphin
↓
↑
Java
SE 8
Java
SE9
Java のリリースの歴史
コードネームが
あったり無かったり・・・?
バージョン名の移り変わり
1.0 ~ 1.1 ・・・ JDK
(Java Development Kit)
● Javaの実装のこと
● 実装=仕様という事でこう呼んでいた
バージョン名の移り変わり
1.2 ~ 5.0 ・・・ J2SE
(Java 2 Platform, Standard Edition)
● JDKから数えて第2版という意味
● マーケティング上の理由から
こう呼んでいた
バージョン名の移り変わり
6 ~ 現在 ・・・ Java SE
(Java Platform, Standard Edition)
● 現在の呼び方。
● Java生誕15年の際に命名規則を見直し
● ついでに番号の「.0」も廃止
Javaのコードネーム
たくさんある
Javaのコードネーム
1.2.2以降の命名規則
● メジャーリリース
⇒ 動物
● マイナーリリース
⇒ 昆虫
(バグ修正だから)
Java8から廃止。
※海外のWikipediaには
『Spider』との表記あり
Java9の次は・・・?
Java9の次は・・・?
Java SE 10
Java SE 11
・・・
Java9の次は・・・?
Java SE 10
Java SE 11
・・・
・・・ではないです。
Java9の次は・・・?
今後はタイムベースのアップデート
● 新機能は半年ごと(3月/9月)
● セキュリティフィックスは3ヶ月ごと
● 長期サポート対象は3年ごと
※ OracleJDKのみ。有償。
閑 話 休 題 。
Java9の新機能と言えば
Java9の新機能と言えば
【 Module機能 】
● いわゆる Project Jigsaw というやつ
● 脱・依存性地獄。
● 「クラスパス多過ぎ!あああ!」
というのを何とかしてくれる
● 実は2008年位から延期していた
Java9の新機能と言えば
【 Module機能 】
具体的には、
○ module-info.java(名称決め打ち)に
クラスごとの依存関係を書く
○ アクセス範囲がちゃんと決められる
⇒ 変なところで変なクラスが呼ばれたり
  謎の衝突とかが起こらなくなって良い
Java9の新機能と言えば
【 Module機能 】
レガシープログラマ的には、
Java9の新機能と言えば
【 Module機能 】
レガシープログラマ的には、
○ Java8以前と互換性が無い!
○ しかもJava8は2018年9月にEOL
○ 移行の諸々コストが半端ない予感
⇒ 想像すると辛い。
嬉しい度:★☆☆☆☆
Java9 いろんな新機能 (1)
Java9 いろんな新機能 (1)
【 JShell 】
● JavaのREPL機能
Read-Eval-Print-Loop 読んで評価して表示して繰返す
● コマンドプロンプトでサクッと実行できる
Tabキーで
入力補完もできる
Java9 いろんな新機能 (1)
【 JShell 】
レガシープログラマ的には、
 
Java9 いろんな新機能 (1)
【 JShell 】
レガシープログラマ的には、
○ メソッドを試したいけど、
ローカルのEclipse(Lunaとか)重いし…
って言うのが解消されそう?
○ しかし実はWebのREPL環境は割と在る
嬉しい度:★★☆☆☆
Java9 いろんな新機能 (2)
Java9 いろんな新機能 (2)
【 Interfaceにprivateメソッド 】
● Java8からメソッドの実装が記述可能に
(defaultメソッド・staticメソッド)
● privateなので継承しても呼び出し不可
⇒ 多分defaultメソッド等から使う目的
Java9 いろんな新機能 (2)
【 Interfaceにprivateメソッド 】
レガシープログラマ的には、
Java9 いろんな新機能 (2)
【 Interfaceにprivateメソッド 】
レガシープログラマ的には、
○ 現場でInterface設計をあまりしない
○ まずInterfaceを使っていない場合も…
○ でも多重継承が安全に出来たら便利そう
※厳密には多重継承ではないらしい 要勉強
嬉しい度:★★☆☆☆
Java9 いろんな新機能 (3)
Java9 いろんな新機能 (3)
【 try-with-resources文の改善 】
● Java7から追加された
「リソースを自動開放する」機能が
より読みやすくなった。
Java9 いろんな新機能 (3)
【 try-with-resources文の改善 】
リソースをココで定義する必要があり
ちょっと見にくかった
Java9 いろんな新機能 (3)
【 try-with-resources文の改善 】
try句の前に
finalで定義すれば良くなり
見やすくなった
Java9 いろんな新機能 (3)
【 try-with-resources文の改善 】
レガシープログラマ的には、
Java9 いろんな新機能 (3)
【 try-with-resources文の改善 】
レガシープログラマ的には、
○ リソース自動開放というだけで
大変ありがたい!!!!
でもそれ自体はJava7の追加機能だし…
嬉しい度:★★★☆☆
 
Java9 いろんな新機能 (4)
Java9 いろんな新機能 (4)
【 @Deprecatedアノテーション強化 】
● 非推奨のクラス・メソッドに
記述するアノテーションの表現力UP
● 廃止予定なのか(forRemoval)
● いつから廃止するのか(since)
Java9 いろんな新機能 (4)
【 @Deprecatedアノテーション強化 】
レガシープログラマ的には、
Java9 いろんな新機能 (4)
【 @Deprecatedアノテーション強化 】
レガシープログラマ的には、
○ CommonやUtil(よくあるクラス名)を
リファクタしたが消すのは忍びない…
そんな時によく利用したアノテーション
※アンチパターンな気が。。。
○ 廃止したい意思表示が出来るのは良い
嬉しい度:★★☆☆☆
Java9 いろんな新機能 (5)
Java9 いろんな新機能 (5)
【 JavaDocの劇的改善 】
● HTML5で記述可能に
● 検索機能の追加
Java9 いろんな新機能 (5)
【 JavaDocの劇的改善 】
Java9 いろんな新機能 (5)
【 JavaDocの劇的改善 】
超
便
利
!!!!
Java9 いろんな新機能 (5)
【 JavaDocの劇的改善 】
レガシープログラマ的には、
Java9 いろんな新機能 (5)
【 JavaDocの劇的改善 】
レガシープログラマ的には、
言葉はいらない。
ずっと待ってた。
嬉しい度:★★★★★★★
 
まとめとか感想とか
レガシープログラマ的には、
まとめとか感想とか
module機能以外は目新しいものはない
⇒ Java8の強化版、という印象
⇒ Java8を知らないとキツい
module機能は互換性が無いのがネック
⇒ 既存システムが在る現場での導入は…
※ module未使用なら互換性アリ…が、学習コストを考えると…
レガシープログラマ的には、
まとめとか感想とか
イチ開発者的には、
まとめとか感想とか
Javaってすごく進化してる!!!!
⇒ Java8以降がとてもモダン
⇒ しかもJava9でより改良されている
何だかワクワクするし、
「個人的にJava勉強し直したいな」
と素直に思えました
イチ開発者的には、
ご清聴
 ありがとう
ございました!!

More Related Content

Viewers also liked

20171110 fun-tech #5 g1 gc
20171110 fun-tech #5 g1 gc20171110 fun-tech #5 g1 gc
20171110 fun-tech #5 g1 gcYu Kitajima
 
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~目黒 のぞみ
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にTaku Miyakawa
 
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)Daisuke Nishino
 
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話洋史 東平
 
Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)
Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)
Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)オラクルエンジニア通信
 
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要オラクルエンジニア通信
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017Carol Smith
 

Viewers also liked (11)

20171110 fun-tech #5 g1 gc
20171110 fun-tech #5 g1 gc20171110 fun-tech #5 g1 gc
20171110 fun-tech #5 g1 gc
 
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
【社内勉強会#9】(今更ながら)java8触ってみた~ラムダ式篇~
 
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心にJava SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
 
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
 
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
Microsoft ExcelでWebブラウザ(Selenium WebDriver)を動かした話
 
Zero Data Loss Recovery Appliance 設定手順例
Zero Data Loss Recovery Appliance 設定手順例Zero Data Loss Recovery Appliance 設定手順例
Zero Data Loss Recovery Appliance 設定手順例
 
Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)
Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)
Oracle Cloudで始める、DBエンジニアのためのHadoop超入門(db tech showcase 2016 Oracle セッション資料)
 
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
Oracle Data Minerハンズオンセミナー170927:①Oracle 機械学習概要
 
超高速な機械学習を Oracle Database で実現!
超高速な機械学習を Oracle Database で実現!超高速な機械学習を Oracle Database で実現!
超高速な機械学習を Oracle Database で実現!
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
 

【fun-tech #5】レガシープログラマ的に未知のjava9について少しだけ考えてみた。