狠狠撸

狠狠撸Share a Scribd company logo
JDK 13 へようこそ
? JVM Sustaining Engineer
? OpenJDK Update Project
Maintainer
? JavaOne Rock Star
? Co-author of Oracle WebLogic
Server 11g 構築?運用ガイド
? @DavidBuckJP
? https://blogs.oracle.com/buc
k/
Who am I? バック デイビッド(左)
Agenda
? 350: Dynamic CDS Archives
? 351: ZGC: Uncommit Unused Memory
? 353: Reimplement the Legacy Socket API
? 354: Switch Expressions (Preview)
? 355: Text Blocks (Preview)
Agenda
? 350: Dynamic CDS Archives
? 351: ZGC: Uncommit Unused Memory
? 353: Reimplement the Legacy Socket API
? 354: Switch Expressions (Preview)
? 355: Text Blocks (Preview)
Agenda
? 350: Dynamic CDS Archives
? 351: ZGC: Uncommit Unused Memory
? 353: Reimplement the Legacy Socket API
? 12: Preview Language and VM Features
? 354: Switch Expressions (Preview)
? 355: Text Blocks (Preview)
JEP 350
Dynamic CDS Archives
Class Data Sharing
java
(JVM)
クラスデータ
(メモリ上)
java
(JVM)
クラスデータ
(メモリ上) java
(JVM)
クラスデータ
(メモリ上)
java
(JVM)
クラスデータ
(メモリ上)
Class Data Sharing
java
(JVM)
java
(JVM)
java
(JVM)
java
(JVM)
クラスデータ
classes.jsa
Class Data Sharing の歴史
? 2004 Class Data Sharing - JDK 5
? 2015 Application Class Data Sharing - JDK 8u40 and JDK 9
(Closed Source)
? 2018 JEP 310: Application Class Data Sharing - JDK 10 (Open
Source)
Class Data Sharing の魅力
? 起動時間を早くする
? 複数の JVM のメモリ使用量を減らす
Class Data Sharing の歴史
? 2004 Class Data Sharing - JDK 5
? 2015 Application Class-Data Sharing - JDK 8u40 and JDK 9
(Closed Source)
? 2018 JEP 310: Application Class-Data Sharing - JDK 10
(Open Source)
Class Data Sharing の歴史
? 2004 Class Data Sharing - JDK 5
? 2015 Application Class-Data Sharing - JDK 8u40 and JDK 9
(Closed Source)
? 2018 JEP 310: Application Class-Data Sharing - JDK 10
(Open Source)
Class Data Sharing (JDK 5 以来)
? Java SE のクラスライブラリ(rt.jar) のみ
? jre/lib/[arch]/client/classes.jsa
Class Data Sharing (JDK 5 以来)
? Xdump
? -Xshare:dump
? -Xshare:off
? -Xshare:on
? -Xshare:auto (デフォルト)
Application Class Data Sharing(JDK 8u40)
? アプリケーションのクラスもアーカイブ出来る
? -XX:SharedClassListFile でアーカイブを指定する
Application Class Data Sharing(JDK 8u40)
1. ロードされるクラスを確認する
2. 1で確認したクラスを指定して、アーカイブを作成する
3. 実行時にアーカイブを指定する
ロードされるクラスを確認する
$ java -Xshare:off -XX:+UseAppCDS
-XX:DumpLoadedClassList=hello.lst -cp hello.jar HelloWorld
確認したクラスを指定して、
アーカイブを作成する
$ java -Xshare:dump -XX:+UseAppCDS
-XX:SharedClassListFile=hello.lst
-XX:SharedArchiveFile=hello.jsa -cp hello.jar
実行時にアーカイブを指定する
$ java -Xshare:on -XX:+UseAppCDS
-XX:SharedArchiveFile=hello.jsa -cp hello.jar HelloWorld
Application Class Data Sharing(JDK 8u40)
1. ロードされるクラスを確認する
2. 1で確認したクラスを指定して、アーカイブを作成する
3. 実行時にアーカイブを指定する
Application Class Data Sharing(JDK 8u40)
1. ロードされるクラスを確認する
2. 1で確認したクラスを指定して、アーカイブを作成する
3. 実行時にアーカイブを指定する
Dynamic CDS Archives(JDK 13)
1. アーカイブを作成する
2. 実行時にアーカイブを指定する
アーカイブを作成する
$ java -XX:ArchiveClassesAtExit=hello.jsa -cp hello.jar Hello
アーカイブを作成する
$ java -XX:ArchiveClassesAtExit=hello.jsa -cp hello.jar Hello
実行時にアーカイブを指定する
$ java -XX:SharedArchiveFile=hello.jsa -cp hello.jar Hello
2重の構成
Static
Dynamic
2アプリ物語
$ java -cp:lib.jar:foo.jar FooApp
$ java -cp:lib.jar:bar.jar BarApp"
2アプリ物語
$ java -cp:lib.jar:foo.jar FooApp
$ java -cp:lib.jar:bar.jar BarApp"
2アプリ物語
$ java -cp:lib.jar:foo.jar FooApp
$ java -cp:lib.jar:bar.jar BarApp"
Class Data Sharing
java
(JVM)
java
(JVM)
java
(JVM)
java
(JVM)
static
rt.jar
lib.jar
foo.jar
bar.jar
JEP 351
ZGC: Uncommit Unused
Memory
ZGC: Uncommit Unused Memory
利用されていない Java ヒープ領域を OS に戻す(解放する)
ZGC: Uncommit Unused Memory
利用されていない Java ヒープ領域を OS に戻す(解放する)
G1GC と Shenandoah はもう実装済み
メモリ解放する魅力
? メモリ使用量によってコストが変わる (例:container / cloud)
? 長期間のアイドル (例:Serverless)
? 起動処理(Startup) vs. 運用中(Steady State)
ZPages
ZPageCache
ZPage を Least Recently Used (LRU)の順番で管理する
ZUncommitDelay
-XX:ZUncommitDelay=<秒> (デフォルト5分)
ZUncommitDelay
-XX:ZUncommitDelay=<秒> (デフォルト5分)
-XX:ShenandoahUncommitDelay=<ミリ秒>
Linux の動作環境
? ZGC は tmpfs か hugetlbfs が利用される
? fallocate() の FALLOC_FL_PUNCH_HOLE サポートが必要
? Tmpfs - Linux 3.5 以降
? Hugetlbfs – Linuc 4.3 以降
Xms != Xmx ??
? Xms と Xmx が異ならないかぎり、この機能は動作しない
? クラウド時代では、
Xms == Xmx がベストプラクティスではない場合がある
クラウド時代
? 350: Dynamic CDS Archives
? 351: ZGC: Uncommit Unused Memory
JEP 353
Reimplement the Legacy
Socket API
まず、脱线。。。
JEP 312 (JDK 10)
Thread-Local Handshakes
従来の safepoint (STW)
JEP 312 (JDK 10)
Thread-Local Handshakes
従来の safepoint (STW) ? TLH の実装
Thread-Local Handshakes
? 内部実装の変更だけ
? 将来バージョンの機能(主に ZGC)の為のもの
? 新しいのリリースモデル(6か月ごと)
一つの大規模の変更 -> 複数の小規模の変更
JEP 353
Reimplement the Legacy Socket API
? ソケットの実装を書き直しました。
? 主に将来バージョンの機能(Project Loom) のため
? 従来の実装よりメンテナンスしやすい
ソケットの新しい実装
? NIO ベース(実績のあるネイティブ実装)
? 入出力バッファはスタックで格納されない
普通の off-heap バッファーを利用する
? Monitor -> java.util.concurrent のロック
ソケットの新しい実装
? NIO ベース(実績のあるネイティブ実装)
? 入出力バッファはスタックで格納されない
普通の off-heap バーファーを利用する
? Monitor -> java.util.concurrent のロック
Loom プロジェクト
? Loom は j.u.c のロックを使うスレッドの処理を最適する
? ソケットの新しい実装は従来より Loom の効果を得られる見込み
要注意
? 20年以上に渡った従来の実装をリプレースした
? 非互換性などの副作用がある
既知問題については JEP をご参考下さい
? 一時的な回避策として、jdk.net.usePlainSocketImpl という
システムプロパティで従来の実装を利用することが出来る
JEP 12
Preview Language and VM
Features
Preview 機能
? 主に仕様の変更や追加
? Java Platform の正式の一部(必須)
? 実装は完全(機能の面、品質の面)
? 将来になくなる、あるいは、変わる可能性がある
ビルド (JDK 13 の場合)
javac Foo.java // preview 機能は利用出来ない
javac --release 13 --enable-preview Foo.java
// preview 機能は利用出来る
javac --release 12 --enable-preview Foo.java
// ダメ!バージョンが異なる
実行
java Foo // preview 機能を利用するクラスをロード出来ない
java --enable-preview Foo
// 同じ JDK のバージョンの javac でビルドしたクラス
(preview 機能有効)をロード出来る
Demo
JEP 354
Switch Expressions (Preview)
Switch Expressions の歴史
? JEP 325: Switch Expressions (Preview) JDK 12
? JEP 354: Switch Expressions (Preview) JDK 13
? JEP 361: Switch Expressions (Standard) JDK 14 ★
Switch Expressions の歴史
? JEP 325: Switch Expressions (Preview) JDK 12
? JEP 354: Switch Expressions (Preview) JDK 13
? JEP 361: Switch Expressions (Standard) JDK 14 ★
★だといいな。。。
従来の Switch 文の弱点
? 一つのスコープブロックしかない
? フォールスルー
? 式として利用出来ない
スコープの問題
switch (day) {
case MONDAY:
case TUESDAY:
int temp = ... // temp のスコープは ‘}’ まで続く
break;
case WEDNESDAY:
case THURSDAY:
int temp2 = ... // temp を再利用出来ず
break;
default:
int temp3 = ... // temp を再利用出来ず
}
フォールスルー
? C / C++ のまま利用されました
? システムプログラミングで役に立つユースケースはある
? よりハイレベルだと、ユースケースはあまりない
? break 文を忘れるバグが非常に多い
? break 文のせいでコードが読みにくくなる
int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new
IllegalStateException("Wa
t: " + day);
}
int numLetters;
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new
IllegalStateException("Wa
t: " + day);
}
int numLetters = 式
int numLetters =
boolVal ? 13 : 42;
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
switch 文から switch 式へ
? より読みやすい
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
Arrow Labels (矢印のラベル)
? フォールスルーなし
? switch 式だけではなく、switch 文でも利用可能
switch 文と Arrow Labels
static void howMany(int k) {
switch (k) {
case 1 -> System.out.println("one");
case 2 -> System.out.println("two");
default -> System.out.println("many");
}
}
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
複数のラベル
フォールスルーがなければ、不可欠
yield キーワード
int result = switch (s) {
case "Foo":
yield 1;
case "Bar":
yield 2;
default:
System.out.println("Neither Foo nor Bar,
hmmm...");
yield 0;
};
break 42; -> yield 42;
? JDK 12 は break 文を利用し、値を返す
? Preview のフィードバックによると、混乱しやすかった
? JDK 13 では値を返す break が yield でリプレースされた
break の従来の振舞は変更ぜす
値を返す必要性
各アームが値を yield するか、例外をスローする
値を返す必要性
int i = switch (day) {
case MONDAY -> {
System.out.println("Monday");
// ダメ!Yield がない
}
default -> 1;
};
値を返す必要性
int i = switch (day) {
case MONDAY, TUESDAY, WEDNESDAY:
yield 0;
default:
System.out.println("Second half of the
week");
// ダメ! yield がない!
};
JEP 355
Text Blocks (Preview)
Toothpick Syndrome
(爪楊枝症候群)
Path path = Paths.get("C:??Program Files??foo");
Pattern pattern = Pattern.compile("???"");
By Superbass - Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=44882037
String html = "<html>?n" +
" <body>?n" +
" <p>Hello, world</p>?n" +
" </body>?n" +
"</html>?n";
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
String query =
"SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`?n" +
"WHERE `CITY` = 'INDIANAPOLIS'?n" +
"ORDER BY `EMP_ID`, `LAST_NAME`;?n";
String query =
"""
SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`
WHERE `CITY` = 'INDIANAPOLIS'
ORDER BY `EMP_ID`, `LAST_NAME`;
""";
ScriptEngine engine =
new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("function hello() {?n" +
" print('?"Hello, world?"');?n" +
"}?n" +
"?n" +
"hello();?n");
ScriptEngine engine =
new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("""
function hello() {
print('"Hello, world"');
}
hello();
""");
? JEP 326: Raw String Literals (Preview)
? JEP 355: Text Blocks (Preview) JDK 13
? JEP 368: Text Blocks (Second Preview) JDK 14 ★
? JEP 326: Raw String Literals (Preview)
? JEP 355: Text Blocks (Preview) JDK 13
? JEP 368: Text Blocks (Second Preview) JDK 14 ★
★だといいな。。。
まとめ
JDK 13
? 350: Dynamic CDS Archives
? 351: ZGC: Uncommit Unused Memory
? 353: Reimplement the Legacy Socket API
? 354: Switch Expressions (Preview)
? 355: Text Blocks (Preview)
JDK 13
? 350: Dynamic CDS Archives
? 351: ZGC: Uncommit Unused Memory
? 353: Reimplement the Legacy Socket API
? 354: Switch Expressions (Preview)
? 355: Text Blocks (Preview)
Thank You!!!

More Related Content

What's hot (18)

PDF
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
?
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
PPTX
進化したのはサーバだけじゃない!?DBA の毎日をもっと豊かにするユーティリティのすすめ?
Michitoshi Yoshida
?
PPTX
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
?
PDF
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
?
PDF
MySQL ガチBeginnerがやってみたことと反省したこと
Satoshi Suzuki
?
PDF
Scala EE 7 Essentials
tnoda
?
PDF
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
JustSystems Corporation
?
PDF
Babelfish Compatibility
Noriyoshi Shinoda
?
ODP
スレッドダンプの読み方
Funato Takashi
?
PDF
厂蚕尝大量発行処理をいかにして高速化するか
Shogo Wakayama
?
PPTX
Java トラブル解析支援ツール HeapStats のご紹介
Shinya Takebayashi
?
PDF
Add PLEASE clause to Oracle Database
Noriyoshi Shinoda
?
PDF
顿叠スキーマもバージョン管理したい!
kwatch
?
PDF
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
?
PDF
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
?
PPTX
Java EE8 Report
Norito Agetsuma
?
PDF
笔辞蝉迟驳谤别厂蚕尝运用管理入门
Yoshiyuki Asaba
?
HeapStats @ Seasar Conference 2015 LT
Yuji Kubota
?
JDK9 新機能 (日本語&ショートバージョン) #jjug
Yuji Kubota
?
進化したのはサーバだけじゃない!?DBA の毎日をもっと豊かにするユーティリティのすすめ?
Michitoshi Yoshida
?
HeapStatsのデモ (Java The Night)
Yasumasa Suenaga
?
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
?
MySQL ガチBeginnerがやってみたことと反省したこと
Satoshi Suzuki
?
Scala EE 7 Essentials
tnoda
?
闯补惫补チョットデキルへの道?闯补惫补コア厂顿碍に见る真似したいコード10选?
JustSystems Corporation
?
Babelfish Compatibility
Noriyoshi Shinoda
?
スレッドダンプの読み方
Funato Takashi
?
厂蚕尝大量発行処理をいかにして高速化するか
Shogo Wakayama
?
Java トラブル解析支援ツール HeapStats のご紹介
Shinya Takebayashi
?
Add PLEASE clause to Oracle Database
Noriyoshi Shinoda
?
顿叠スキーマもバージョン管理したい!
kwatch
?
Java8 コーディングベストプラクティス and NetBeansのメモリログから...
なおき きしだ
?
配布用Beginnerならきっと役立つmaster slave環境
yut148atgmaildotcom
?
Java EE8 Report
Norito Agetsuma
?
笔辞蝉迟驳谤别厂蚕尝运用管理入门
Yoshiyuki Asaba
?

Similar to JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019] (20)

PPTX
Project coin
Appresso Engineering Team
?
KEY
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
?
PPTX
JavaLearning_1.pptx
RyuuGaku
?
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
?
PDF
[豆ナイト]Java small object programming
Yuichi Hasegawa
?
PDF
Javaセキュアコーディングセミナー東京第1回 講義
JPCERT Coordination Center
?
PDF
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PE-BANK
?
PDF
讲座闯补惫补入门
Tokai University
?
PDF
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
?
PDF
Var handles jjug_ccc_spring_2018
David Buck
?
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
?
PDF
What is java_se_7
TakumiIINO
?
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
?
PDF
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
PDF
Scala conf2013
Takafumi Ikeda
?
PDF
JDK 10 へようこそ
David Buck
?
PDF
Cocos2d xをさらにさわってみよう!
Tomoaki Shimizu
?
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
?
PDF
颁翱叠翱尝技术者のための闯补惫补勉强会
naka hide
?
PPT
Eclipse を使った java 開発 111126 杉浦
urasandesu
?
関ジャバ JavaOne Tokyo 2012報告会
Koichi Sakata
?
JavaLearning_1.pptx
RyuuGaku
?
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
?
[豆ナイト]Java small object programming
Yuichi Hasegawa
?
Javaセキュアコーディングセミナー東京第1回 講義
JPCERT Coordination Center
?
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
PE-BANK
?
讲座闯补惫补入门
Tokai University
?
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
なおき きしだ
?
Var handles jjug_ccc_spring_2018
David Buck
?
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
?
What is java_se_7
TakumiIINO
?
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
?
Head toward Java 13 and Java 14 #jjug
Yuji Kubota
?
Scala conf2013
Takafumi Ikeda
?
JDK 10 へようこそ
David Buck
?
Cocos2d xをさらにさわってみよう!
Tomoaki Shimizu
?
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
?
颁翱叠翱尝技术者のための闯补惫补勉强会
naka hide
?
Eclipse を使った java 開発 111126 杉浦
urasandesu
?
Ad

More from David Buck (20)

PDF
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
David Buck
?
PDF
Java Bytecode Crash Course [Code One 2019]
David Buck
?
PDF
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
David Buck
?
PDF
invokedynamic for Mere Mortals [Code One 2019]
David Buck
?
PDF
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
David Buck
?
PDF
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
David Buck
?
PDF
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
David Buck
?
PDF
Z Garbage Collector
David Buck
?
PDF
Valhalla Update JJUG CCC Spring 2019
David Buck
?
PDF
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
David Buck
?
PDF
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
David Buck
?
PDF
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
David Buck
?
PDF
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
David Buck
?
PDF
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
David Buck
?
PDF
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck
?
PDF
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
David Buck
?
PDF
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck
?
PDF
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
David Buck
?
PDF
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
David Buck
?
PDF
Let’s Write Our Own Chip-8 Interpreter! [JavaOne 2017 CON3584]
David Buck
?
JDK Mission Control: Where We Are, Where We Are Going [Groundbreakers APAC 20...
David Buck
?
Java Bytecode Crash Course [Code One 2019]
David Buck
?
CSI (Crash Scene Investigation) HotSpot: Common JVM Crash Causes and Solution...
David Buck
?
invokedynamic for Mere Mortals [Code One 2019]
David Buck
?
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...
David Buck
?
JDK Mission Control: Where We Are, Where We Are Going [Code One 2019]
David Buck
?
Java Concurrency, A(nother) Peek Under the Hood [Code One 2019]
David Buck
?
Z Garbage Collector
David Buck
?
Valhalla Update JJUG CCC Spring 2019
David Buck
?
Java SE 8におけるHotSpotの進化 [Java Day Tokyo 2014 C-2]
David Buck
?
HotSpot のロック: A Peek Under the Hood [JJUG ナイトセミナ JVM 特集 2015年8月]
David Buck
?
Java Concurrency, A(nother) Peek Under the Hood [JavaOne 2016 CON1497]
David Buck
?
Bytecode Verification, the Hero That Java Needs [JavaOne 2016 CON1500]
David Buck
?
Java Debuggers: A Peek Under the Hood [JavaOne 2016 CON1503]
David Buck
?
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck
?
Java Concurrency, A(nother) Peek Under the Hood [Java Day Tokyo 2016 3-C]
David Buck
?
Ahead-of-Time Compilation with JDK 9 [Java Day Tokyo 2017 D1-A1]
David Buck
?
InvokeDynamic for Mere Mortals [JavaOne 2015 CON7682]
David Buck
?
HotSpot Synchronization, A Peek Under the Hood [JavaOne 2015 CON7570]
David Buck
?
Let’s Write Our Own Chip-8 Interpreter! [JavaOne 2017 CON3584]
David Buck
?
Ad

JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]