Submit Search
Introduction to Java 11: Support and JVM Features #jjug
12 likes
18,468 views
Yuji Kubota
Slide for JJUG Night Seminar 2018/Oct
Technology
Read more
1 of 40
Download now
Downloaded 52 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
More Related Content
PDF
Unified JVM Logging
Yuji Kubota
PDF
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
PDF
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
PDF
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
オラクルエンジニア通信
PPTX
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Unified JVM Logging
Yuji Kubota
最適なOpenJDKディストリビューションの選び方 #codetokyo19B3 #ccc_l5
Takahiro YAMADA
JVMのGCアルゴリズムとチューニング
佑哉 廣岡
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
Yahoo!デベロッパーネットワーク
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
NTT DATA Technology & Innovation
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
オラクルエンジニア通信
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
What's hot
(20)
PPTX
Metaspace
Yasumasa Suenaga
PPTX
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
PDF
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
PPTX
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
ShuheiUda
PPTX
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
PDF
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
PDF
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
PDF
Open Policy Agent (OPA) 入門
Motonori Shindo
PPTX
Helidon 概要
オラクルエンジニア通信
PPTX
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
PPTX
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
PDF
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
PDF
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
PPTX
OCI Logging 概要
オラクルエンジニア通信
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
PDF
Java仮想マシンの実装技術
Kiyokuni Kawachiya
PDF
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
PPTX
Azure API Management 俺的マニュアル
貴志 上坂
Metaspace
Yasumasa Suenaga
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
NTT DATA Technology & Innovation
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
Takahiro YAMADA
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
サポート エンジニアが語る、トラブルを未然に防ぐための Azure インフラ設計
ShuheiUda
JAVA_HOME/binにあるコマンド、いくつ使っていますか?[JVM関連ツール編](JJUGナイトセミナー「Java解析ツール特集」 発表資料)
NTT DATA Technology & Innovation
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
ストリーム処理を支えるキューイングシステムの選び方
Yoshiyasu SAEKI
Open Policy Agent (OPA) 入門
Motonori Shindo
Helidon 概要
オラクルエンジニア通信
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
NTT DATA Technology & Innovation
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Web Services Japan
Dbts2013 特濃jpoug log_file_sync
Koji Shinkubo
PostgreSQL - C言語によるユーザ定義関数の作り方
Satoshi Nagayasu
OCI Logging 概要
オラクルエンジニア通信
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
Java仮想マシンの実装技術
Kiyokuni Kawachiya
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
Azure API Management 俺的マニュアル
貴志 上坂
Ad
Similar to Introduction to Java 11: Support and JVM Features #jjug
(12)
PDF
JDK: 新しいリリースモデル解説(ver.2.1)
オラクルエンジニア通信
PDF
JDK: 新しいリリースモデル解説(ver.2.0)
オラクルエンジニア通信
PDF
20190202 jdk new_release_model_sendai
オラクルエンジニア通信
PDF
JDK:新しいリリースモデル解説 @ 熊本・福岡
オラクルエンジニア通信
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
PDF
JDK 新しいリリースモデル解説 (ver. 2.2)
オラクルエンジニア通信
PDF
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
オラクルエンジニア通信
PDF
JDK:新しいリリースモデル解説 @ 岡山・広島
オラクルエンジニア通信
PDF
JDK: 新しいリリースモデル解説
オラクルエンジニア通信
PDF
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
オラクルエンジニア通信
PDF
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
オラクルエンジニア通信
PDF
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
Takashi Ito
JDK: 新しいリリースモデル解説(ver.2.1)
オラクルエンジニア通信
JDK: 新しいリリースモデル解説(ver.2.0)
オラクルエンジニア通信
20190202 jdk new_release_model_sendai
オラクルエンジニア通信
JDK:新しいリリースモデル解説 @ 熊本・福岡
オラクルエンジニア通信
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
JDK 新しいリリースモデル解説 (ver. 2.2)
オラクルエンジニア通信
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
オラクルエンジニア通信
JDK:新しいリリースモデル解説 @ 岡山・広島
オラクルエンジニア通信
JDK: 新しいリリースモデル解説
オラクルエンジニア通信
Developer Festa Sapporo講演資料:Java最新動向とこれからの活用
オラクルエンジニア通信
JDK: 新しいリリースモデル解説 (ver. 2.2) @ 札幌 - 20190209
オラクルエンジニア通信
JDK:新しいリリースモデル解説 @ 富山 BuriKaigi 2019
Takashi Ito
Ad
More from Yuji Kubota
(20)
PDF
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
PDF
Head toward Java 15 and Java 16
Yuji Kubota
PDF
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota
PDF
Head toward Java 14 and Java 15
Yuji Kubota
PDF
オンライン会議と音声認識
Yuji Kubota
PDF
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
PDF
Catch up Java 12 and Java 13
Yuji Kubota
PDF
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
PDF
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
PPTX
Project Jigsaw #kanjava
Yuji Kubota
PPTX
Java 9 and Future #jjug
Yuji Kubota
PPTX
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Yuji Kubota
PDF
Prepare for Java 9 #jjug
Yuji Kubota
PDF
jcmd #javacasual
Yuji Kubota
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
Yuji Kubota
PDF
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
PDF
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
PDF
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
Head toward Java 15 and Java 16
Yuji Kubota
Head toward Java 14 and Java 15 #LINE_DM
Yuji Kubota
Head toward Java 14 and Java 15
Yuji Kubota
オンライン会議と音声認識
Yuji Kubota
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
Catch up Java 12 and Java 13
Yuji Kubota
Migration Guide from Java 8 to Java 11 #jjug
Yuji Kubota
Java 10でぼくたちの生活はどう変わるの?
Yuji Kubota
Project Jigsaw #kanjava
Yuji Kubota
Java 9 and Future #jjug
Yuji Kubota
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Yuji Kubota
Prepare for Java 9 #jjug
Yuji Kubota
jcmd #javacasual
Yuji Kubota
JavaOne 2016 Java SE Feedback #jjug #j1jp
Yuji Kubota
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
Introduction to Java 11: Support and JVM Features #jjug
1.
Java11:サポートとVM機能編 KUBOTAYuji(@sugarlife) JJUGNightSeminar2018/Oct
2.
Java11の「サポート」
3.
Disclaimer 解りやすくするためざっくり説明している箇所があります 発表者は5年以上OpenJDKのサポートを担当していた経験上、しば しば商用/本番環境でもOpenJDKを利用している前提で話をします Javaのサポート提供企業のいずれとも関係がなく、各企業のサポー ト内容詳細については各企業に問い合わせください
4.
本資料でのサポートの定義 開発サポート バグの修正 セキュリティ対応(脆弱性修正) 機能拡張、新機能開発を含まない維持管理開発 配信サポート バイナリの配信・提供 バグ・脆弱性修正を行ったアップデートの配信 一定期間だけ無償なケースもある 問合せサポート SLAが定められている問合せ対応(障害対応、性能問題等) コンサル 企業・団体独自の経験提供
5.
誰がやってるのか? 開発サポート OpenJDKコミュニティ Java11は現在は3年間の予定 独自Java開発企業・団体(ここではTCKを通ったもの) 配信サポート(一例、Java11に限定) Oracle,AzulSystems(Zulu,Zing),RedHat,IBM AdoptOpenJDK,各Linuxディストリビューション (Debian,Ubuntu,Fedora,Arch,etc) OpenJDKコミュニティは配信していない 問合せサポート バイナリ配信サポートの一部企業、およびその他の企業
6.
無償で使いたい人向けの結論 AdoptOpenJDKから入手しよう Java11の無償「配信サポート」期間が一番長い(4年間)
7.
想定問答集 つらつら説明されるよりは自身の問題として捉えると身に入りやすいの でこの形式で説明します
8.
OpenJDKってなに? オープンソース実装のJavaです。http://openjdk.java.net/ 多くの人が使っていたであろうOracleJDKのPublicUpdate(≒無償版)が Java11から提供されないので注目が集まりました コミュニティのリード役はOracleでパッチ投稿数も段違いです。 以前はOracleしかコミットできない部分もありましたが、現在は改善が 進められ、よりオープンなコミュニティへと前進しています
9.
OpenJDKはLTSを提供しないの? 本資料における「開発サポート」であればサポート期間は長い。Java9 や10は半年でしたがJava11は現時点で3年間の予定です。 今後より長くなる可能性もあります。前例としてJava6はOracleがメン テナンスリードを退役してからはRedHatがリードを務めてました。 「配信サポート」や「問合せサポート」は以前からやっておらず、今後 も予定はありません
10.
Oracleから無償なJava入手できないの? できます。 OracleOpenJDKと良く呼ばれるようになったOracle社がビルドした OpenJDKがhttp://jdk.java.netから無償で入手できます。 恐らく他と比較して最速で入手できますが、配信サポートは半年間(※)で す。(※:『オラクルの公式OpenJDKバイナリは6カ月でアップデートを終 了』の項参照) OpenJDKではない方のOracleJDKについては新しいライセンスで公開 されています。ライセンスを読んで利用する必要があります
11.
OpenJDKは商用で利用できる品質なの? DEFINITELYYES. 前例についてはこちらの資料も参考にしてください
12.
OpenJDKに乗り換えるのは簡単なの? 簡単です。 OracleJDKからOpenJDKのマイグレーションはあまり問題は起きにく いですが、証明書周りが若干ネックになるケースもあります。 大半はOpenJDKの実装というよりはライセンス関係の問題です。 なお、Java8からJava11のマイグレーションはOracleJDKでも OpenJDKでも等しく面倒です
13.
AdoptOpenJDKリリース遅れてるけど大丈夫? 大丈夫です。 元々サードパーティのOpenJDKはリリース後にテストなどをするのでマ イナーアップデートでも1‑2週間ぐらいは遅れます。 AdoptOpenJDKもリリース後からビルドやテストを実施してるので遅れ ることは必然です。Java11のリリース状況はここで確認できます。約一 週間ぐらいでリリースされました ちなみにOracleだけがほぼ同時に配信していました。0dayattackリスク を勘案する場合、OracleOpenJDKが選択肢に入ります
14.
JREって無くなったんでしょ? ※JRE:Java開発ツールキットなどを除いたJavaランタイム環境のみに限 定されたパッケージ、インストーラ、バイナリ Windows/MacOSは実質その通り。Linuxディストリビューションの OpenJDKは元々別パッケージで提供されているのでおそらく引き続き提 供される(全部は確認しておらず未リリースもあります) 例: openjdk-11-jre と
openjdk-11-jdk (Ubuntu等) 例: java-1.11.0-openjdk と java-1.11.0-openjdk-devel (Fedora,RHEL等) より軽量な java-1.11.0-openjdk-headless もある Javaの実行バイナリサイズを削減する手段はjlinkなどが別に用意されて いるので、コンテナ等ではそちらを利用すると良いでしょう
15.
JavaFXってなくなったんでしょ? いいえ。 正しくはOracleJDK同梱ではなくなりました。OpenJDKは昔から同梱 していません。OpenJDKにも同梱される流れを期待していたら同梱をや めてしまった... OpenJDKコミュニティ内にJavaFXのオープン実装であるOpenJFXのプ ロジェクトがあります。バイナリはこちら(openjfx.io)からダウンロード できます。
16.
Javaって有償になったんでしょ? いいえ。 OracleJDKの「バイナリ配信サポート」が有償になりました。Oracleは この代替として「OracleOpenJDK」を提供しています。
17.
いつまでにJava11に乗り換えるべきか? Java8の「配信サポート」期限が切れる前に乗り換えましょう OracleJDK: 有償:2025/3 無償(PublicUpdate):2019/1(個人向けは2020/12) RHELのOpenJDK:2023/6 AzulSystems: ZuluEnterprise:2026/3 Zing:2025/3 IBMJava:2022/4 参考:次LSTのJava17は2021/9リリース予定
18.
すぐにJava12に乗り換える必要あるんでしょ? ないです。※発表者の個人的観点です 仕事であればOpenJDKの開発サポートが短いバージョンは無視してOK 個人であれば好き好き。私はJava12を使ってます
19.
何を使うべきか? ※発表者の個人的観点です 基本は予算と要件に合わせて選択する 無償でバイナリ配信サポートなら「AdoptOpenJDK」かLinuxディ ストリビューション提供パッケージ 4年以上のバイナリ配信サポートなら有償サポートを買う クラウド利用者は利用パッケージのサポート内容に依存する
20.
サポート要らなくない? ※発表者の個人的観点です 多くの場合、最低限必要なのは配信サポートです。 無償であればAdoptOpenJDKが4年間のサポート予定なので、次のLTS であり3年後にリリース予定のJava17にマイグレーションする猶予が1年 あります。 有償であれば8年間のサポート提供する企業もあり、より猶予がありま す。 問合せサポートは組織と予算とSLAに依存します。不要であれば不要で しょうし、組織内でエース級を育てるのもアリです。エース級は外にも 余り居ません。 開発サポートはOSSですので誰でも開発に参加できます。組織立って参 加できればそれが最善です。OpenJDKを元に独自JDKを開発する企業も あります
21.
Java11の「VM機能」
22.
JEP330:LaunchSingle‑FileSource‑Code Programs javac でコンパイルして java
で実行するのが基本だった スクリプト言語のようにソースコードを直接実行する形式を条件付 きで対応 source‑filemodeと呼ばれる
23.
単体ファイルの実行 Javaソースファイルを直接 java コマンドで実行する java
Hoge.java 制約条件 1つのJavaファイルで完結してる ソース内で最初に出現するトップレベルクラスが main(String[]) を持つ
24.
良い例 public class HelloWorld
{ public static void main(String[] args) { System.out.println("Hello World."); } } $ docker run --rm -it -v $(pwd)/src:/src openjdk:11-jdk ¥ java /src/Test.java Hello World.
25.
悪い例 public class Hoge
{} public class Fail { public static void main(String[] args) { System.out.println("Fail"); } } $ docker run --rm -it -v $(pwd)/src:/src openjdk:11-jdk ¥ java /src/Fail.java error: can't find main(String[]) method in class: Hoge
26.
スクリプト化 Javaソースをスクリプトのように扱う ./Hoge.java 制約条件 ファイル冒頭に実行するJavaを指定する #!<JAVA_HOMEフルパス>/bin/java --source 11 --source
でバージョン指定も必須 それ以外は単体ファイルと一緒
27.
良い例 #!/usr/lib/jvm/java-11-openjdk-amd64/bin/java --source 11 public
class Hoge { public static void main(String[] args) { System.out.println("Hello World by shellbang"); } } $ docker run --rm -it -v $(pwd)/src:/src openjdk:11-jdk ¥ /src/test.sh Hello World by shellbang
28.
どうやってるの? 1.Source‑Launcherクラスが起動 2.source‑filemodeで指定したクラスをコンパイル 3.インメモリに展開 4.クラスローダでロード カスタムクラスローダでロード後アプリケーションクラスロー ダに委譲 つまりアプリケーションクラスパスに含めたクラス群から、指 定したクラスは参照できない 5. main(String[]) を発火
29.
JEP328:FlightRecorder 最高峰のプロファイラ OracleJDK商用機能の一つがオープンソース化
30.
できること ボトルネック調査 GC、同期処理、I/O処理、メソッド毎のCPU時間など 収集可能な情報の例 OS:メモリ、CPU、プロセス情報、nativeライブラリ情報 JVM:起動オプション、GC設定、メソッドプロファイリング、 ヒープメモリ状況 JDKライブラリ:ソケットIO、ファイルIO、エラー情報、モジ ュール情報 柔軟なイベント収集・監視方法 アプリケーション開始から終了までの全情報をダンプ -XX:StartFlightRecording=dumponexit=true カスタムイベントを作成して独自情報を収集 jdk.jfr.Event 等を利用する(OracleJDKでの実装例)
31.
注意点 FlightRecorderはツールではなくてJVMの情報収集機能 可視化にはJDKMissionControlのバージョン7以降が別に必 要。これは同梱されてない JMCもFlightRecorderと同時にオープンソース化した OracleJDKのオプション構成から変更されているので流用不可
32.
JEP318:Epsilon:ANo‑OpGarbageCollector (Experimental) 何もしないメモリアロケータ -XX:+UseEpsilonGC
33.
No‑OpGC GCは不要メモリを回収するのが仕事ですが、EpsilonGCは通称「no‑op GC」と呼ばれる、メモリ回収を行わないGCです。 Javaアプリケーションに割り当てたヒープサイズを超えて使用しようと した場合ただちにメモリエラー(OutOfMemoryError)になります。
34.
注意点1 通常はJVMにメモリ管理を任せているため、意図しないメモリフットプ リントの増大や負荷が多少なりとも発生します。EpsilonGCはこの影響 を極力無視できるようにすることを目的としており、プロダクションで はなく主に開発や研究/実験の目的で利用されることを想定していま す。JITとか。 System.gc() も当然動きません。
35.
注意点2 このGCは限定的に「使える」。ただし、 ヒープとスタックの違い ガベージを生成しないオブジェクトとは何か TLABサイズがパフォーマンスに影響する EpsilonGCはアロケート方法が独自 自分のアプリケーションのライフサイクルとヒープサイズ などを把握した上で使うことが望ましい。なおExperimentalです。
36.
JEP333:ZGC:AScalableLow‑LatencyGarbage Collector(Experimental) PauselessGC -XX:+UseZGC
37.
PauselessGC 今までのGCはヒープサイズやライブセット数に比例して完全停止 時間(Stop‑The‑World,STW)が長くなる問題があった STWをRootScanのみに限定することでこれを解決した GC各処理の徹底的な並列化、他 ColoredPointers等よるロードバリア処理改善 Coloredpointer:マーク状態等を表現 データ構造やページング処理等の工夫も とはいえconcurrentclassunloadingがまだ未実装 世代別GCではない等、従来GCとアルゴリズムが大きく異なる
38.
注意点1 64bit限定 ColoredPointersが64bit前提です 仮想メモリを利用している CompressedOopsもサポートしてません レイアウトは ZBitField を追いかけてみよう 開発動機的にも32bitサポートは望み薄 Linux限定 シンプルにLinux前提の実装がちょくちょくある 需要があれば他も対応するらしい
39.
注意点2 現時点ではExperimentalであり、本番/商用で使うべきではないです。使 う場合、 仕様変更の追跡が必要 普通に変更がガンガン入ってる クラスアンローディング周りは確実に(大規模)変更が入る LargePagesやNUMAなどのメモリ効率性に関わる設定や監視も必 要 小さいヒープなら関係ないが、その場合既存GCで良い などを把握した上で使うことが望ましい。
40.
Question? KUBOTAYuji(@sugarlife)
Download