SlideShare ist ein Scribd-Unternehmen logo
1 von 88
Java 10以降の
Javaリリース
関西Javaエンジニアの会 /
ポノス株式会社
阪田 浩一 @jyukutyo
#kanjava
Disclaimer
以下の事項は個人の理解に基づいています。
正確な情報を提供することに努めています
が、誤りがあることがあります。何かを確
約するものではないため、この情報を元に
判断なさらないでください。
会長だけどじゅくちょー
• 阪田 浩一 / じゅくちょー
• 関ジャバ会長(JUGリーダ)
• JVMが大好き
• ポノス株式会社(スマホゲーム会社)
昨年9/21
リリース
10はいつ?
あと1ヶ月後!
3/20
リリース予定
Javaの
リリースサイクルが
変わったことは
ご存知ですか?
半年ごとに
新バージョンが
リリースされる
今まで
どうだったかと
言うと…
今までのJavaリリースサイクル
• 2年ごとにメジャーアップデート
– 達成されたこと、あったっけ?
• 8 - 8ヶ月遅れ
• 9 – 1年半遅れ
• 計画した機能が完成すればリリース
– 複雑な機能の完成時期に左右される
• 9 - JPMS
今後は…
今後のJavaリリースサイクル
• 半年ごとにリリース
– 10 – 3/20
– 11 – 今年9月
• 3ヶ月ごとにメンテナンス/セキュリティリリース
– 4月と7月 / 10月と1月
• サポートは半年(次のリリース)まで
新機能を
できるだけ早く
使えるように
無償版のOracle JDKは
なくなる
OpenJDKのビルドが
代わりとなる
ライセンスはGPL
(たしか
クラスパス例外付き
GPLv2)
Oracle JDKとOpenJDK
• 機能的な差はない(TCKにより保証)
– Oracle JDKには
• オラクルのバイナリコードライセンスがある
• 一部のコードが異なる
• クローズドソースのサードパーティのコンポーネ
ントが含まれている
– グラフィック・ラスタライザ、サード・パーティ・フォ
ント、追加ドキュメントなど
• 商用機能がある
Oracle JDKには
商用機能が
あるのだが…
商用機能は
OpenJDKへ統合される
商用機能
• AppCDS
• Java Flight Recorder
• Java Mission Control
• ZGC
AppCDSは
現在のJava 10に
統合済み
残りも
統合作業中
(Java 11以降)
よくある疑問
半年ごとに
バージョンアップしない
といけないの?
OpenJDKにも
LTSバージョンが
あります!
LTSは3年ごと
最初のLTSは11
サポート期間は
次のLTSバージョンまで
の3年
公式情報は
出ていないが
Devoxx,FOSDEM,
JfokusでMarkさんが
話している
Oracleの
Javaプラットフォーム
チーフアーキテクト
Mark Reinholdさん
動画はこちら
• FOSDEM
– https://youtu.be/1l0WrKrSAVI
• Jfokus
– https://youtu.be/-YEuNf8a7hk
5日違いのカンファレンスですが
内容は半分しか重なっていません…
Oracle JDKは
有償サポートとなる
LTSの有償サポート
Premier Support リリースから5年
Extended Support 上記に加え +3年
Sustaining Support 無期限
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
有償サポート
バージョン リリース
Premier
Support
Extended
Support
Sustaining
Support
9
(non-LTS) 2017年9月 2018年3月 設定なし 無期限
10 (18.3)
(non-LTS) 2018年3月 2018年9月 設定なし 無期限
11
(18.9-LTS) 2018年9月 2023年9月 2026年9月 無期限
http://www.oracle.com/technetwork/jp/java/eol-135779-ja.html
Java 8の
公式アップデートは
2019年1月まで
時期を考えると
8 -> 11
というのがよさそう
(11は18年9月リリース
8は19年1月まで)
新しい
リリースモデルへの
よくある誤解
新しいリリースモデルへの誤解
❌LTSでないリリースは
”実験的”リリースである
新しいリリースモデルへの誤解
❌各リリースは
過去の各リリースの
ように
破壊的である
新しいリリースモデルへの誤解
❌古い機能は
予告から3年後に
削除される
新しいリリースモデルへの誤解
❌更新が頻繁でない
システムなら
LTSでないリリースは
無視してよい
新しいリリースモデルへの誤解
❌LTSでないリリースは
アップデートが
2回しかない
新しいリリースモデルへの誤解
❌LTSリリースは
3年以上サポートされる
ことはない
では来月リリースの
Java 10には
どんなものが?
Java 11以降は?
今日はAmberに
焦点を絞ります
Amber
• ”お作法”を少なく
– ローカル変数の型推論(var)
– データクラス
– 式としてのswitch
– sealed型
– パターンマッチ
サンプルコードを
使ってご紹介
ローカル変数の
型推論
Javaにおける
型推論の歴史
List<String> l =
Collections.<String>emptyList();
List<String> l = Collenctions.emptyList();
--
List<String> l = new ArrayList<String>();
List<String> l = new ArrayList<>();
--
Predicate<String> p =
(String s) -> s.length() == 0;
Predicate<String> p = s -> s.length() == 0;
URL url =
new URL(”http://openjdk.java.net”);
var url =
new URL(”http://openjdk.java.net”);
型推論
• not 動的型付き
• コンパイラが型を補完してくれる
イメージ
var hello = ”hello”;
hello = 1;
データクラス
まず、
いわゆる”入れ物”クラス
class Point {
final double x;
final double y;
Point(double x, double y) {
this.x = x;
this.y = y;
}
double x() { return x; }
double y() { return y; }
public boolean equals(Object o) {…}
public int hashCode() {…}
public String toString() {…}
}
データクラス導入で
これだけになる
record Point(double x, double y);
final double x;
final double y;
Point(double x, double y) {
this.x = x;
this.y = y;
}
double x() { return x; }
double y() { return y; }
public boolean equals(Object o) {…}
public int hashCode() {…}
public String toString() {…}
}
ScalaやKotlinと
近い感じ
必要なメソッドは
定義/オーバーライド
できる
record Point(double x, double y) {
@Override
public int hashCode() {
return x * 92821 * x;
}
public double norm() {
return Math.sqrt(x*x + y*y);
}
}
次に
switch式、
sealed型、
パターンマッチを
合わせた例
switch文に
型を使えるように
ラムダのような記法に
sealed型にすることで、
他に実装クラスが
ないことを
保証できる
default節を
削除できた
さらに、
switchで
データクラスは
分解できる
当然ここでも
varが使える
Java 9から
_(アンダースコア1文字)
は予約語
Amberが入ると
使わない変数を
”_”で表現できる
Java 11以降
こんな感じに
なっていく
予定
(まだこれらすべてを
試せるブランチは
探したけれど
なかった)

Weitere ähnliche Inhalte

Mehr von Koichi Sakata

Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
Koichi Sakata
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 

Mehr von Koichi Sakata (20)

Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
 
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
 
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native ImageIntroduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyBytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte Buddy
 
Great Ideas in GraalVM
Great Ideas in GraalVMGreat Ideas in GraalVM
Great Ideas in GraalVM
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
 
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性があるKanJava 201804 Career 思い込みから逃れた先には、可能性がある
KanJava 201804 Career 思い込みから逃れた先には、可能性がある
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
KANJAVA PARTY 2017 前説
KANJAVA PARTY 2017 前説KANJAVA PARTY 2017 前説
KANJAVA PARTY 2017 前説
 
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めたJJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
 
“Purikura” culture in Japan and our web application architecture
“Purikura” culturein Japan andour web application architecture“Purikura” culturein Japan andour web application architecture
“Purikura” culture in Japan and our web application architecture
 
デブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わったデブサミ2017 Javaコミュニティ作ったら人生変わった
デブサミ2017 Javaコミュニティ作ったら人生変わった
 
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっているJJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
JJUG CCC 2016 fall バイトコードが君のトモダチになりたがっている
 
日本からJavaOneに行こう!
日本からJavaOneに行こう!日本からJavaOneに行こう!
日本からJavaOneに行こう!
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
 
How Scala code is expressed in the JVM
How Scala code is expressed in the JVMHow Scala code is expressed in the JVM
How Scala code is expressed in the JVM
 
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
クリスマスを支える俺たちとJava(JJUG CCC 2015 Spring AB4)
 

Kürzlich hochgeladen

Kürzlich hochgeladen (10)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Java release cadence has been changed and about Project Amber