Upload
-
View
5.095
Download
1
Embed Size (px)
Citation preview
レガシープログラマ的に未知のJava9について少しだけ考えてみた。
fun-tech meetup #5
2017-11-10(金)
この発表は、
この発表は、
ラムダ式(※1)どころかswitch文で文字列を扱えない環境(※2)で保守開発をしていたレガシープログラマが、zJava9新機能の嬉しい度を測ったりしていろいろと考えてみた。
(※1) Java8からの機能。気合を入れないと読めない。
(※2) Java7からString型が利用可能に。嬉しかった。
・・・という内容です。
自己紹介
※ 背景は2017年5月23日の横浜スタジアムの様子
自己紹介
@meguro_nfacebook.com/megurono
目黒 のぞみ(Meguro Nozomi)
● 都内SIer勤務(7年半くらい)
● 北海道出身(鍛高譚の生産地)
● 趣味は野球観戦(来年こそ\横浜優勝/)
● 業務でJavaや.NET系を扱う程度の能力
※ 背景は2017年5月23日の横浜スタジアムの様子
Java のリリースの歴史
↑JDK1.0
Java発表↓
JDK1.1↓
↑J2SE1.2
Playground
J2SE1.3
Kestrel
↓
↑J2SE1.4
Merlin
J2SE5.0Tiger
↓
↑JavaSE 6
Mustang
JavaSE 7Dolphin
↓
↑JavaSE 8
JavaSE9
Java のリリースの歴史
↑JDK1.0
Java発表↓
JDK1.1↓
↑J2SE1.2
Playground
J2SE1.3
Kestrel
↓
↑J2SE1.4
Merlin
J2SE5.0Tiger
↓
↑JavaSE 6
Mustang
JavaSE 7Dolphin
↓
↑JavaSE 8
JavaSE9
Java のリリースの歴史
↑JDK1.0
Java発表↓
JDK1.1↓
↑J2SE1.2
Playground
J2SE1.3
Kestrel
↓
↑J2SE1.4
Merlin
J2SE5.0Tiger
↓
↑JavaSE 6
Mustang
JavaSE 7Dolphin
↓
↑JavaSE 8
JavaSE9
Java のリリースの歴史
名称が微妙に変わっている・・・?
↑JDK1.0
Java発表↓
JDK1.1↓
↑J2SE1.2
Playground
J2SE1.3
Kestrel
↓
↑J2SE1.4
Merlin
J2SE5.0Tiger
↓
↑JavaSE 6
Mustang
JavaSE 7Dolphin
↓
↑JavaSE 8
JavaSE9
Java のリリースの歴史
↑JDK1.0
Java発表↓
JDK1.1↓
↑J2SE1.2
Playground
J2SE1.3
Kestrel
↓
↑J2SE1.4
Merlin
J2SE5.0Tiger
↓
↑JavaSE 6
Mustang
JavaSE 7Dolphin
↓
↑JavaSE 8
JavaSE9
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勉強し直したいな」と素直に思えました
イチ開発者的には、
ご清聴
ありがとう
ございました!!