SlideShare a Scribd company logo
1 of 48
Download to read offline
CatchupJava12andJava13
KUBOTAYuji(@sugarlife)
LINECorporation
JJUGCCC2019Spring(2019/May/18)
KUBOTAYuji(@sugarlife)
JVM好き,IcedTeacommitter/OpenJDKAuthor
WEB+DBで「DivetoJava」連載中
https://www.slideshare.net/YujiKubota/
好きなパッケージは sun.jvm.hotspot
2
本セッションで話すこと
Java12から利用できる機能と変更点
Java13以降から利用できる可能性がある機能と変更点
話さないこと
非互換性
git.io/jdk12git.io/jdk11git.io/jdk10
3
前置き
本資料は jdk.java.net からダウンロードできる JDK 12.0.1 およ
び JDK 13 (build 20) で極力動作確認していますが、全ての確認はで
きていませんのでコードを修正する前に動作確認してください
実装は hg.openjdk.java.net/jdk-updates/jdk12u および jdk/jdk
で確認しています
4
Java12
8JavaEnhancementProposals(JEP)
101Compatibility&SpecificationReviews(CSR)
10FixedEnhancementTickets
286FixedBugTickets
5
JEPs
189:Shenandoah:ALow‑Pause‑TimeGarbageCollector
(Experimental)
230:MicrobenchmarkSuite
325:SwitchExpressions(Preview)
334:JVMConstantsAPI
340:OneAArch64Port,NotTwo
341:DefaultCDSArchives
344:AbortableMixedCollectionsforG1
346:PromptlyReturnUnusedCommittedMemoryfromG1
6
189:Shenandoah:ALow‑Pause‑TimeGarbageCollector
(Experimental)
重要度:★☆☆
乱暴に言うとConcurrentなEvacuationを持つ非世代別なG1GC
G1はライブオブジェクトのCopy時(≒Evacuation)にJavaスレ
ッドを止めて(≒StopTheWorld,STW)オブジェクトのアドレス
更新する必要があるが、Shenandoahは関節参照を追加するこ
とで常にアドレスを最新の状態に保つようにしてこのSTWを
削減した
ヒープをリージョンに区切って等しく(世代別ではなく)管理し
てるので、総ヒープサイズに依存することなく一回のGC時間
は一定だと期待できる。
100GBと2GBで変わらないと良く書かれてるのはこれ
とはいえゴミが多ければGC頻度が増えて総時間も増える
ことは普通にある
7
Experimental機能。将来的に正式機能となる見込み。
RedHatが開発したのでRedHat提供のOpenJDKでは
Production‑readyとして入っている
現時点で使うとしたらヒープサイズや、プロセスが良く作るオ
ブジェクトの種類に応じて選択することになる
以下、個人の所感
G1は全リージョンスキャンするタイミングが少ないので
クラスアンローディングなどが苦手
ZGCは基本32GB以上前提なのとほぼ全て並列処理なので
比較的CPUネックになりやすい
Parallelは巨大ヒープでSTWが極悪になる
ShenandoahはG1とZGCのいいとこ取りのようにも見え
るがCompressedOops有無や弱参照の比較を見てみたい
ServiceabilityToolの対応状況も大事
8
346:PromptlyReturnUnusedCommittedMemoryfromG1
重要度:★★☆
未使用のメモリをOSに返すようになった
G1のconcurrentmarkcycle時に最大で最小ヒープサイズまで
不要なメモリを返すようになった
G1の改善型とも言えるShenandoahの取り組みがG1にも反映
された
-XX:G1PeriodicGCInterval でチェックする間隔をミリ秒
で設定できる
HotSpotVMは基本的に一度掴んだメモリはOSに返さない振舞いを
するので、短い期間しか重い処理を行わないようなプロセスは常駐
に不向きだった。このようなケースが解消される
9
344:AbortableMixedCollectionsforG1
重要度:★★☆
MixedGCを中断可能にすることで、ユーザが設定した停止時間の
目標値を守りやすくした
G1はヒープをリージョンと呼ばれる単位で管理し、目標値を
達成できるようにGC対象とするリージョンのリスト(コレクシ
ョンセット,CSet)を決定するが、アプリ動作が変わるなどして
CSetが大きくなりすぎて目標値を超過してしまうことがある
誤った量のCSetを繰り返し選択した状態を検出してMixedGC
を中断可能にすることで、目標値を守れる度合を増やせるよう
にした
検出したら段階的にCSetを選択して実行する
10
この改善の際に得られたヒントにより次の改善等がJava13で行わ
れた
JDK‑8218668:Cleanupevacuationofoptionalcollectionset
JDK‑8219100:Improvedo_collection_pause_at_safepoint
このようにGCは継続的に改善が行われていく
11
325:SwitchExpressions(Preview)
重要度:★☆☆
かなり便利なのだがプレビュー版なのでJava12を導入したら
即使うものでもない
--enable-preview オプションを指定する必要がある
フィードバックを得て(いくつか変更を経て)正式に導入さ
れる予定
Switch「文」が「式」として使用できるようになった
条件ごとに変数に代入を繰り返していたが一発で書けるように
なった
副作用としてbreak抜けなどを防げるので積極的に導入したい
12
Before
boolean isLTS;
switch (javaVersion) {
case 8:
case 11:
isLTS = true;
break;
case 9:
case 10:
case 12:
isLTS = false;
break;
default:
if (javaVersion > 11 && (javaVersion-11)%6==0) {
isLTS = true;
} else {
isLTS = false;
}
}
13
After
// 式なので代入可能
boolean isLTS = switch (javaVersion) {
case 8, 11 -> true; // 複数case, -> で戻り値
case 9, 10, 12 -> false;
default -> { // 囲めば処理も書ける
if (javaVersion > 11 && (javaVersion-11)%6==0) {
break true; // break で戻り値指定
} else {
break false;
}
}
};
14
341:DefaultCDSArchives
重要度:★★☆
何もせずともJavaプロセスの起動時間が短縮される
Class‑DataSharing,CDSとはクラスや文字列などをアーカイ
ブファイルにダンプして複数プロセスで共有する機能
JDKのクラスは当然ながら最も共有可能な情報なのでこのアー
カイブファイルが提供された、というのがこれ
クラスローディングが一部省略される等でプロセスの起動時間
やメモリフットプリントが削減される
FaaSとか短命プロセスを立ち上げまくるケースで特に有効
AppCDSも組み合わせるのが良い
15
334:JVMConstantsAPI
重要度:★★☆
Java10まではprimitiveとリテラルを持つStringだけConstant‑Pool
に格納できた
Java11から通称 condy と呼ばれる ConstantDynamic がサポート
され、その他もConstant‑Poolで扱えるようになり、かつ定数の初
期化処理が必要になるまで遅延可能になった
この遅延効果によりJavaプロセス起動が早くなる
16
今回のはこれのJDKAPIの追加
java.lang.constant パッケージが java.base モジュール
に追加され、定数として使われるであろうクラス群( Integer
や Enum 等)が拡張された
Lombokなりで対応したいが自作の定数クラスについても
Constable や ConstantDesc インターフェースを実装するの
が望ましいかも
かも=まだ(私の中で)ベストプラクティスが定まってない
この取組はProjectAmberの一環なのでBrianGoetzの仕様草案(の一
部)もとても参考になる
17
(APIの変更差分)
https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lan
g/Integer.html
18
230:MicrobenchmarkSuite
重要度:★☆☆
OpenJDK開発者向けであって利用者的には関係なし
JavaMicrobenchmarkHarness(JMH)というマイクロベンチマーク
のフレームワークがOpenJDKコミュニティで開発・提供されてい
る
JDKソースコードにこれを利用したベンチマークが追加された
JMHはマイクロベンチマーク時の選択肢の一つとして大変便利
(IntelliJプラグインもある)
19
340:OneAArch64Port,NotTwo
重要度:★☆☆
OpenJDKのARM64bitポーティングのコードが重複(arm64,
aarch64)してたのでaarch64にマージされた
完全にOpenJDK開発者向けであって利用者的には全く関係なし
20
APIs
すべてのAPI差分はJSR386(Java12のJavaSpecificationRequest)のペ
ージから入手できる
JSR‑000386JavaSE12FinalReleaseAnnex2forEvaluation
21
bitnotableAPIs
CompactNumberFormat
InputStream#skipNBytes
String#indent
Files#mismatch
notableAPIs
String#transform
Collectors#teeing
CompletableFuture#exceptionally{Compose}{Async}
22
java.text.CompactNumberFormat
JDK‑8177552:CompactNumberFormattingsupport
jshell> NumberFormat.getCompactNumberInstance()
.format(10000)
$2 ==> "1万"
23
端数どうしてると思います?
jshell> NumberFormat.getCompactNumberInstance()
.format(15001)
$3 ==> "2万"
jshell> NumberFormat.getCompactNumberInstance()
.format(14005)
$4 ==> "1万"
24
java.io.InputStream#skipNBytes(long)
指定したバイト数データをskipする
既存の skip(long) はskipしたバイト数を返す
今回の skipNBytes(long) は指定したバイト数skipできなかった
ら EOFException を返す
エラー時に -1 か Exception のどちらを返すべき?
String#indent(int)
指定した数分インデントを追加する。マイナスなら削除
Files#mismatch(Path,Path)
指定した二つのファイルの最初の差分の位置を返す。同じなら -1
25
String#transform(Function<?superString,?extendsR>f)
Stringに対する関数を適用させるメソッド
考える順にlambda式で書けるので見通しが良い
例:プログラム言語からマスコットのライセンスを取得する
言語名からマスコット名を取得するメソッド
Mascot::getName
マスコット名からライセンスを取得するメソッド
Mascot::getLicense
Mascot.getLisence(Mascot.getName("Java"))
"Java".transform(Mascot::getName)
.transform(Mascot::getLisence)
26
Collectors#teeing(Collector,Collector,BiFunction)
渡した二つのCollectorの結果をBiFunctionに流す(結合する)
一つのデータに複数の処理を同時に加工できる
jshell> Stream.of("J","a","v","a"," ","1","2")
.collect(Collectors.teeing(
Collectors.joining(),
Collectors.counting(),
(x,y)->(x+"の文字数は"+y)))
$5 ==> "Java 12の文字数は7"
例えばスレッドのリスト対してRUNNABLEなスレッドの名前を列
挙しつつ、BLOCKEDなスレッドの個数を","でつなぐと言ったこと
もできる
27
CompletableFuture#exceptionally{Compose}{Async}
Exceptionhandlerである exceptionally(Function) メソッドが
元々あり、これは前段で例外がスローされたときにキャッチ(して実
行)するメソッド
これを非同期に行う Async とthenComposeを行う Compose 、
Composeを非同期で行う ComposeAsync が追加された
Async はForkJoinPoolの管理ワーカで実行される(通常のエラ
ーハンドリング処理はメインスレッドでやる)
分かりやすいので CompletableFuture クラスで紹介しているが、
実態は CompletionStage インターフェースに追加された
28
CompletableFuture.runAsync(() -> {
// エラーが生じうる処理
throw new RuntimeException();
}).exceptionallyAsync(e -> { // ここのパターンが増えた
// エラーハンドリング処理
return null;
}).get(5, TimeUnit.SECONDS);
29
Otherenhancements
JDK‑8209923:Unicode11
JDK‑8202286:AllocationofoldgenerationofJavaheapon
alternatememorydevices
JDK‑8211845:Anewswitchtocontrolverbosityofhs‑errfiles
-XX:+ExtensiveErrorReports
JDK‑8205517:JFRtool
jfr print --json --category xxx --event yyy
zzz.jfr
フライトレコードをElasticにjsonで流すなどが可能に
30
Java13+
Projects
Amber
Valhalla
Panama
Loom
Metropolis
Skara
Portola
JEP:35Draft,5Submitted,27Candidate
JIRABoard
31
ProjectAmber
Java言語仕様の大変革
動的なクラスファイル定数
SymbolicReferencesforConstants
SwitchExpression
RawStringLiterral
Patternmatching
大きすぎてまとめて入るのではなく少しずつ入ってきてる
下2つはJava12に間に合わなかったが一部はAPI追加という形
で入ってきてる(String#indentなど)
32
ProjectValhalla
配列レイアウト改善
CPUキャッシュ効率改善に向けた value 型の追加
33
ProjectPanama
JVMの外側との連携
安全かつ高性能なJNIの置き換え
Javaコードとネイティブコードとの連携
ForeignFunctionInterface,FFI
Javaコードからの低レベルなHW制御
Vector演算、不揮発性メモリ
34
ProjectLoom
軽量スレッドFiber
JVMで百万規模のスレッド(Fiber)を動かす
マルチスレッドプログラミングの簡易化
35
ProjectMetropolis
Java‑on‑Java
Graalcompiler
AOTstaticcompilation
36
ProjectSkara
https://github.com/openjdk/jdk
37
ProjectPortola
PortingtoAlpine/musl
38
350:DynamicCDSArchives
Java13で導入予定
アプリケーション実行終了時にクラスを動的にアーカイブする仕組み
Java12はJDK標準ライブラリクラスのアーカイブが同梱され、この取組
でロードされたアプリケーションクラスやライブラリクラスのを自動的
にアーカイブすることで、より楽にAppCDSを使えるようになる
元々AppCDSを使うには一度クラスをロードさせる必要があるので試運
転が必要だった。なおロードされなかったクラスは動作に不要なのでア
ーカイブされない
39
351:ZGC:UncommitUnusedMemory
Java13で導入予定
Java12で入ったG1のと同様にZGCも使ってないメモリをOSに返すよう
になる。ちなみに今のところは返さない
Shenandoahは最初から返す仕組みが備わっている
40
353:ReimplementtheLegacySocketAPI
Java13で導入予定(提案レビュー中)
SocketAPI( java.net.Socket , java.net.ServerSocket )の一新
既存実装はSocketImplのレガシーなSPI(SupportProviderInterface)機構
のJavaとCの実装で成り立っており、スレッドスタックをI/Oバッファと
して利用していたり、非同期処理をnativeなデータ構造で達成していた
りと信頼性や移植性が損ねる状態だった
今後ProjectLoomによりユーザモードなスレッド(Fiber)が導入されるこ
ともあり、ネイティブな世界でブロックすることなく停止(park)できる
ように NioSocketImpl が導入される。とはいえ昔の実装も使えるよう
オプションで切り替えられる予定
41
352:Non‑VolatileMappedByteBuffers
NVM向けの MappedByteBuffer API追加
この流れでunmmapedするAPIも生えないかしら
42
301:EnhancedEnums
Enumの拡張。二年前から取組中。
Before
public enum JDKNumber {
YEAR(18),
FULL(18.3);
public final Number version;
JDKNumber(Number version) {
this.version = version;
}
}
float jdkVersion = (float)JDKNumber.Full.version;
43
After
public enum JDKNumber<T extends Number> {
YEAR<Integer>(18),
Full<Float>(18.3);
public final T version;
JDKNumber(T version) {
this.version = version;
}
}
float jdkVersion = JDKNumber.Full.version;
44
305:Patternmatchingforinstanceof
Before
if (obj instanceof Double) {
Double d = (Double) obj;
// d を使った処理
}
After
if (obj instanceof Double d) {
// d を使った処理
}
switch でも同じように書ける
switch (obj) {
case Integer i:
// intの時にやらせたい処理
case Double d:
// doubleの時にやらせたい処理
} 45
355:TextBlocks
Before
String html = "<html>n" +
" <body>n" +
" <p>Hello, world</p>n" +
" </body>n" +
"</html>n";
After
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
46
349:JFREventStreaming
これまでディスクに書き込まれたバイナリデータから解析やモニタリン
グを行う必要があったが、ストリーミングで流し込むことが可能になる
今まで何故なかったのかというぐらい便利。性能次第ではJMXや一部の
ロギングをこれに置き換えることも十分にあり得る
早く来て欲しい
47
CatchupJava12andJava13
KUBOTAYuji(@sugarlife)
LINECorporation
JJUGCCC2019Spring(2019/May/18)

More Related Content

What's hot

システム開発を前進させるためのGradle導入法
システム開発を前進させるためのGradle導入法システム開発を前進させるためのGradle導入法
システム開発を前進させるためのGradle導入法Takuma Watabiki
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build ToolShinya Mochida
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cNorito Agetsuma
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaYuta Kawadai
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示するregret raym
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallMasatoshi Tada
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpYuji Kubota
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)Masatoshi Tada
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発Takahisa Wada
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugYuji Kubota
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Norito Agetsuma
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basicTakuma Watabiki
 
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発Chihiro Ito
 
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定Kazuyuki Nakamura
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteAkio Katayama
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjugYuji Kubota
 
Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7Takayuki Konishi
 
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Yuji Kubota
 

What's hot (20)

システム開発を前進させるためのGradle導入法
システム開発を前進させるためのGradle導入法システム開発を前進させるためのGradle導入法
システム開発を前進させるためのGradle導入法
 
Gradle a new Generation Build Tool
Gradle a new Generation Build ToolGradle a new Generation Build Tool
Gradle a new Generation Build Tool
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
TDD勉強会キックオフ for Java
TDD勉強会キックオフ for JavaTDD勉強会キックオフ for Java
TDD勉強会キックオフ for Java
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
JavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jpJavaOne 2016 Java SE Feedback #jjug #j1jp
JavaOne 2016 Java SE Feedback #jjug #j1jp
 
はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)はまる!JPA(初学者向けライト版)
はまる!JPA(初学者向けライト版)
 
Jenkinsプラグイン開発
Jenkinsプラグイン開発Jenkinsプラグイン開発
Jenkinsプラグイン開発
 
JDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjugJDK9 新機能 (日本語&ショートバージョン) #jjug
JDK9 新機能 (日本語&ショートバージョン) #jjug
 
Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点) Java Batch 仕様 (Public Review時点)
Java Batch 仕様 (Public Review時点)
 
Jjug 20140430 gradle_basic
Jjug 20140430 gradle_basicJjug 20140430 gradle_basic
Jjug 20140430 gradle_basic
 
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
 
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定Jdk9で変更になる(かも知れない)jvmオプションの標準設定
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 WhiteSd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
 
REACT & WEB API
REACT & WEB APIREACT & WEB API
REACT & WEB API
 
Prepare for Java 9 #jjug
Prepare for Java 9 #jjugPrepare for Java 9 #jjug
Prepare for Java 9 #jjug
 
Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7Integration test with Arquillian and JBoss AS 7
Integration test with Arquillian and JBoss AS 7
 
Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?Java 10でぼくたちの生活はどう変わるの?
Java 10でぼくたちの生活はどう変わるの?
 

Similar to Catch up Java 12 and Java 13

これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...Kazuhiro Sera
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方Takahiro YAMADA
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotationEIICHI KIMURA
 
Gradleプラグインを作成してみた
Gradleプラグインを作成してみたGradleプラグインを作成してみた
Gradleプラグインを作成してみたshinya sakemoto
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradleNobuhiro Sue
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web IntegrationKazuchika Sekiya
 
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoTakahiro YAMADA
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireAkio Katayama
 
2012年javaメモリリーク
2012年javaメモリリーク2012年javaメモリリーク
2012年javaメモリリークtorutk
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側Yasumasa Suenaga
 
Java をクラッシュさせて遊んでみよう!
Java をクラッシュさせて遊んでみよう!Java をクラッシュさせて遊んでみよう!
Java をクラッシュさせて遊んでみよう!YujiSoftware
 
JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会Alisa Sasaki
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVMKoichi Sakata
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)Yoshiharu Hashimoto
 
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)NTT DATA Technology & Innovation
 

Similar to Catch up Java 12 and Java 13 (20)

Ptt391
Ptt391Ptt391
Ptt391
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...All I learned while working on a Scala OSS project for over six years #ScalaM...
All I learned while working on a Scala OSS project for over six years #ScalaM...
 
120517 revert tomcat7
120517 revert tomcat7120517 revert tomcat7
120517 revert tomcat7
 
JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方JDKの選択肢とサーバーサイドでの選び方
JDKの選択肢とサーバーサイドでの選び方
 
R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
Gradleプラグインを作成してみた
Gradleプラグインを作成してみたGradleプラグインを作成してみた
Gradleプラグインを作成してみた
 
Gws 20120521 gradle
Gws 20120521 gradleGws 20120521 gradle
Gws 20120521 gradle
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration
 
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajoOpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
OpenJDKソムリエと巡るJDKワイナリーツアー #sfggjp #javajo
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
2012年javaメモリリーク
2012年javaメモリリーク2012年javaメモリリーク
2012年javaメモリリーク
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
Serviceability Toolsの裏側
Serviceability Toolsの裏側Serviceability Toolsの裏側
Serviceability Toolsの裏側
 
Java をクラッシュさせて遊んでみよう!
Java をクラッシュさせて遊んでみよう!Java をクラッシュさせて遊んでみよう!
Java をクラッシュさせて遊んでみよう!
 
JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会JSUG勉強会 2018年その5 Spring I/O 報告会
JSUG勉強会 2018年その5 Spring I/O 報告会
 
Introduction to GraalVM
Introduction to GraalVMIntroduction to GraalVM
Introduction to GraalVM
 
Quarkus入門
Quarkus入門Quarkus入門
Quarkus入門
 
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
JRoRの力をJava EE技術を使ってさらに高める10の方法(発動編)
 
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
Java 17直前!オレ流OpenJDK「の」開発環境(Open Source Conference 2021 Online/Kyoto 発表資料)
 

More from Yuji Kubota

Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMYuji Kubota
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Yuji Kubota
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識Yuji Kubota
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugYuji Kubota
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjavaYuji Kubota
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Yuji Kubota
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasualYuji Kubota
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Yuji Kubota
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpYuji Kubota
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualYuji Kubota
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTYuji Kubota
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGYuji Kubota
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewYuji Kubota
 
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajoYuji Kubota
 
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...Yuji Kubota
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccYuji Kubota
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjugYuji Kubota
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javaYuji Kubota
 

More from Yuji Kubota (20)

Head toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DMHead toward Java 14 and Java 15 #LINE_DM
Head toward Java 14 and Java 15 #LINE_DM
 
Head toward Java 14 and Java 15
Head toward Java 14 and Java 15Head toward Java 14 and Java 15
Head toward Java 14 and Java 15
 
オンライン会議と音声認識
オンライン会議と音声認識オンライン会議と音声認識
オンライン会議と音声認識
 
Introduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjugIntroduction to Java 11: Support and JVM Features #jjug
Introduction to Java 11: Support and JVM Features #jjug
 
Project Jigsaw #kanjava
Project Jigsaw #kanjavaProject Jigsaw #kanjava
Project Jigsaw #kanjava
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
jcmd #javacasual
jcmd #javacasualjcmd #javacasual
jcmd #javacasual
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
 
JavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jpJavaOne 2015 JDK Update (Jigsaw) #j1jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
 
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasualOpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
 
HeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LTHeapStats @ Seasar Conference 2015 LT
HeapStats @ Seasar Conference 2015 LT
 
JDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUGJDK9 Features (Summary, 31/Jul/2015) #JJUG
JDK9 Features (Summary, 31/Jul/2015) #JJUG
 
HeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical PreviewHeapStats: Introduction and Technical Preview
HeapStats: Introduction and Technical Preview
 
JVM のいろはにほ #javajo
JVM のいろはにほ #javajoJVM のいろはにほ #javajo
JVM のいろはにほ #javajo
 
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
 
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_cccConcurrent Mark-Sweep Garbage Collection #jjug_ccc
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
 
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 

Recently uploaded

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdfAyachika Kitazaki
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見Shumpei Kishi
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法ssuser370dd7
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor arts yokohama
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~arts yokohama
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfMatsushita Laboratory
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦Sadao Tokuyama
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)ssuser539845
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-LoopへTetsuya Nihonmatsu
 

Recently uploaded (12)

20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
 
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
 
2024 03 CTEA
2024 03 CTEA2024 03 CTEA
2024 03 CTEA
 
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
 
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor 2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
 
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
 
2024 04 minnanoito
2024 04 minnanoito2024 04 minnanoito
2024 04 minnanoito
 
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdfTaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
 
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
 
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
 
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
 
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
 

Catch up Java 12 and Java 13