Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yuji Kubota
10,049 views
Catch up Java 12 and Java 13
Presentation for Java Japan User Group CCC 2019 Spring
Technology
◦
Read more
8
Save
Share
Embed
Embed presentation
Download
Downloaded 24 times
1
/ 48
2
/ 48
3
/ 48
4
/ 48
5
/ 48
6
/ 48
7
/ 48
8
/ 48
9
/ 48
10
/ 48
11
/ 48
12
/ 48
13
/ 48
14
/ 48
15
/ 48
16
/ 48
17
/ 48
18
/ 48
19
/ 48
20
/ 48
21
/ 48
22
/ 48
23
/ 48
24
/ 48
25
/ 48
26
/ 48
27
/ 48
28
/ 48
29
/ 48
30
/ 48
31
/ 48
32
/ 48
33
/ 48
34
/ 48
35
/ 48
36
/ 48
37
/ 48
38
/ 48
39
/ 48
40
/ 48
41
/ 48
42
/ 48
43
/ 48
44
/ 48
45
/ 48
46
/ 48
47
/ 48
48
/ 48
Recommended
PDF
Head toward Java 13 and Java 14 #jjug
by
Yuji Kubota
PDF
明日から使えるgradle
by
kimukou_26 Kimukou
PDF
Migration Guide from Java 8 to Java 11 #jjug
by
Yuji Kubota
PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
by
Hiroaki NAKADA
PDF
OpenJDK コミュニティに参加してみよう #jjug
by
Yuji Kubota
PPTX
Java EE パフォーマンスTips #glassfish_jp
by
Norito Agetsuma
PDF
Head toward Java 16 (Night Seminar Edition)
by
Yuji Kubota
PDF
Head toward Java 15 and Java 16
by
Yuji Kubota
PDF
Prepare for Java 9 #jjug
by
Yuji Kubota
PPT
Jenkinsプラグイン開発
by
Takahisa Wada
PDF
Java仮想マシンの実装技術
by
Kiyokuni Kawachiya
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
by
Yuji Kubota
PDF
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
by
Norito Agetsuma
PDF
Java Batch 仕様 (Public Review時点)
by
Norito Agetsuma
PDF
Quarkus による超音速な Spring アプリケーション開発
by
Chihiro Ito
PDF
システム開発を前進させるためのGradle導入法
by
Takuma Watabiki
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
by
Yuji Kubota
PPTX
Java EE8 Report
by
Norito Agetsuma
PPTX
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
by
Kazuyuki Nakamura
PDF
Jjug 20140430 gradle_basic
by
Takuma Watabiki
PDF
React入門-JSONを取得して表示する
by
regret raym
PDF
TDD勉強会キックオフ for Java
by
Yuta Kawadai
PDF
Java 10でぼくたちの生活はどう変わるの?
by
Yuji Kubota
PDF
REACT & WEB API
by
Shigeru Kondoh
PDF
Gradle a new Generation Build Tool
by
Shinya Mochida
PDF
Integration test with Arquillian and JBoss AS 7
by
Takayuki Konishi
PDF
Sd Loader Seasar Con2009 White
by
Akio Katayama
PDF
Unified JVM Logging
by
Yuji Kubota
PDF
jcmd #javacasual
by
Yuji Kubota
PDF
HeapStats: Introduction and Technical Preview
by
Yuji Kubota
More Related Content
PDF
Head toward Java 13 and Java 14 #jjug
by
Yuji Kubota
PDF
明日から使えるgradle
by
kimukou_26 Kimukou
PDF
Migration Guide from Java 8 to Java 11 #jjug
by
Yuji Kubota
PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
by
Hiroaki NAKADA
PDF
OpenJDK コミュニティに参加してみよう #jjug
by
Yuji Kubota
PPTX
Java EE パフォーマンスTips #glassfish_jp
by
Norito Agetsuma
PDF
Head toward Java 16 (Night Seminar Edition)
by
Yuji Kubota
PDF
Head toward Java 15 and Java 16
by
Yuji Kubota
Head toward Java 13 and Java 14 #jjug
by
Yuji Kubota
明日から使えるgradle
by
kimukou_26 Kimukou
Migration Guide from Java 8 to Java 11 #jjug
by
Yuji Kubota
WildFly Swarmではじめる「パーツとしてのJavaEE」
by
Hiroaki NAKADA
OpenJDK コミュニティに参加してみよう #jjug
by
Yuji Kubota
Java EE パフォーマンスTips #glassfish_jp
by
Norito Agetsuma
Head toward Java 16 (Night Seminar Edition)
by
Yuji Kubota
Head toward Java 15 and Java 16
by
Yuji Kubota
What's hot
PDF
Prepare for Java 9 #jjug
by
Yuji Kubota
PPT
Jenkinsプラグイン開発
by
Takahisa Wada
PDF
Java仮想マシンの実装技術
by
Kiyokuni Kawachiya
PDF
JavaOne 2016 Java SE Feedback #jjug #j1jp
by
Yuji Kubota
PDF
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
by
Norito Agetsuma
PDF
Java Batch 仕様 (Public Review時点)
by
Norito Agetsuma
PDF
Quarkus による超音速な Spring アプリケーション開発
by
Chihiro Ito
PDF
システム開発を前進させるためのGradle導入法
by
Takuma Watabiki
PDF
JDK9 新機能 (日本語&ショートバージョン) #jjug
by
Yuji Kubota
PPTX
Java EE8 Report
by
Norito Agetsuma
PPTX
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
by
Kazuyuki Nakamura
PDF
Jjug 20140430 gradle_basic
by
Takuma Watabiki
PDF
React入門-JSONを取得して表示する
by
regret raym
PDF
TDD勉強会キックオフ for Java
by
Yuta Kawadai
PDF
Java 10でぼくたちの生活はどう変わるの?
by
Yuji Kubota
PDF
REACT & WEB API
by
Shigeru Kondoh
PDF
Gradle a new Generation Build Tool
by
Shinya Mochida
PDF
Integration test with Arquillian and JBoss AS 7
by
Takayuki Konishi
PDF
Sd Loader Seasar Con2009 White
by
Akio Katayama
Prepare for Java 9 #jjug
by
Yuji Kubota
Jenkinsプラグイン開発
by
Takahisa Wada
Java仮想マシンの実装技術
by
Kiyokuni Kawachiya
JavaOne 2016 Java SE Feedback #jjug #j1jp
by
Yuji Kubota
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
by
Norito Agetsuma
Java Batch 仕様 (Public Review時点)
by
Norito Agetsuma
Quarkus による超音速な Spring アプリケーション開発
by
Chihiro Ito
システム開発を前進させるためのGradle導入法
by
Takuma Watabiki
JDK9 新機能 (日本語&ショートバージョン) #jjug
by
Yuji Kubota
Java EE8 Report
by
Norito Agetsuma
Jdk9で変更になる(かも知れない)jvmオプションの標準設定
by
Kazuyuki Nakamura
Jjug 20140430 gradle_basic
by
Takuma Watabiki
React入門-JSONを取得して表示する
by
regret raym
TDD勉強会キックオフ for Java
by
Yuta Kawadai
Java 10でぼくたちの生活はどう変わるの?
by
Yuji Kubota
REACT & WEB API
by
Shigeru Kondoh
Gradle a new Generation Build Tool
by
Shinya Mochida
Integration test with Arquillian and JBoss AS 7
by
Takayuki Konishi
Sd Loader Seasar Con2009 White
by
Akio Katayama
More from Yuji Kubota
PDF
Unified JVM Logging
by
Yuji Kubota
PDF
jcmd #javacasual
by
Yuji Kubota
PDF
HeapStats: Introduction and Technical Preview
by
Yuji Kubota
PDF
OpenJDK トラブルシューティング #javacasual
by
Yuji Kubota
PDF
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
by
Yuji Kubota
PDF
JVM のいろはにほ #javajo
by
Yuji Kubota
PPTX
java.lang.OutOfMemoryError #渋谷java
by
Yuji Kubota
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
by
Yuji Kubota
PDF
Introduction to Java 11: Support and JVM Features #jjug
by
Yuji Kubota
PDF
Head toward Java 14 and Java 15
by
Yuji Kubota
PDF
Head toward Java 14 and Java 15 #LINE_DM
by
Yuji Kubota
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
by
Yuji Kubota
PDF
JDK9 Features (Summary, 31/Jul/2015) #JJUG
by
Yuji Kubota
PDF
HeapStats @ Seasar Conference 2015 LT
by
Yuji Kubota
PDF
楽して JVM を学びたい #jjug
by
Yuji Kubota
PDF
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
by
Yuji Kubota
PPTX
Java 9 and Future #jjug
by
Yuji Kubota
PPTX
Project Jigsaw #kanjava
by
Yuji Kubota
PPTX
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
by
Yuji Kubota
PDF
オンライン会議と音声認識
by
Yuji Kubota
Unified JVM Logging
by
Yuji Kubota
jcmd #javacasual
by
Yuji Kubota
HeapStats: Introduction and Technical Preview
by
Yuji Kubota
OpenJDK トラブルシューティング #javacasual
by
Yuji Kubota
Concurrent Mark-Sweep Garbage Collection #jjug_ccc
by
Yuji Kubota
JVM のいろはにほ #javajo
by
Yuji Kubota
java.lang.OutOfMemoryError #渋谷java
by
Yuji Kubota
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
by
Yuji Kubota
Introduction to Java 11: Support and JVM Features #jjug
by
Yuji Kubota
Head toward Java 14 and Java 15
by
Yuji Kubota
Head toward Java 14 and Java 15 #LINE_DM
by
Yuji Kubota
JavaOne 2015 JDK Update (Jigsaw) #j1jp
by
Yuji Kubota
JDK9 Features (Summary, 31/Jul/2015) #JJUG
by
Yuji Kubota
HeapStats @ Seasar Conference 2015 LT
by
Yuji Kubota
楽して JVM を学びたい #jjug
by
Yuji Kubota
HeapStats: Troubleshooting with Serviceability and the New Runtime Monitoring...
by
Yuji Kubota
Java 9 and Future #jjug
by
Yuji Kubota
Project Jigsaw #kanjava
by
Yuji Kubota
Secrets of Rock Star Developers (and How to Become One!) [CON7615] (Yuji KUBO...
by
Yuji Kubota
オンライン会議と音声認識
by
Yuji Kubota
Catch up Java 12 and Java 13
1.
CatchupJava12andJava13KUBOTAYuji(@sugarlife)LINECorporationJJUGCCC2019Spring(2019/May/18)
2.
KUBOTAYuji(@sugarlife)JVM好き,IcedTeacommitter/OpenJDKAuthorWEB+DBで「DivetoJava」連載中https://www.slideshare.net/YujiKubota/好きなパッケージは sun.jvm.hotspot2
3.
本セッションで話すことJava12から利用できる機能と変更点Java13以降から利用できる可能性がある機能と変更点話さないこと非互換性git.io/jdk12git.io/jdk11git.io/jdk103
4.
前置き本資料は jdk.java.net からダウンロードできる
JDK 12.0.1 および JDK 13 (build 20) で極力動作確認していますが、全ての確認はできていませんのでコードを修正する前に動作確認してください実装は hg.openjdk.java.net/jdk-updates/jdk12u および jdk/jdkで確認しています4
5.
Java128JavaEnhancementProposals(JEP)101Compatibility&SpecificationReviews(CSR)10FixedEnhancementTickets286FixedBugTickets5
6.
JEPs189:Shenandoah:ALow‑Pause‑TimeGarbageCollector(Experimental)230:MicrobenchmarkSuite325:SwitchExpressions(Preview)334:JVMConstantsAPI340:OneAArch64Port,NotTwo341:DefaultCDSArchives344:AbortableMixedCollectionsforG1346:PromptlyReturnUnusedCommittedMemoryfromG16
7.
189:Shenandoah:ALow‑Pause‑TimeGarbageCollector(Experimental)重要度:★☆☆乱暴に言うとConcurrentなEvacuationを持つ非世代別なG1GCG1はライブオブジェクトのCopy時(≒Evacuation)にJavaスレッドを止めて(≒StopTheWorld,STW)オブジェクトのアドレス更新する必要があるが、Shenandoahは関節参照を追加することで常にアドレスを最新の状態に保つようにしてこのSTWを削減したヒープをリージョンに区切って等しく(世代別ではなく)管理してるので、総ヒープサイズに依存することなく一回のGC時間は一定だと期待できる。100GBと2GBで変わらないと良く書かれてるのはこれとはいえゴミが多ければGC頻度が増えて総時間も増えることは普通にある7
8.
Experimental機能。将来的に正式機能となる見込み。RedHatが開発したのでRedHat提供のOpenJDKではProduction‑readyとして入っている現時点で使うとしたらヒープサイズや、プロセスが良く作るオブジェクトの種類に応じて選択することになる以下、個人の所感G1は全リージョンスキャンするタイミングが少ないのでクラスアンローディングなどが苦手ZGCは基本32GB以上前提なのとほぼ全て並列処理なので比較的CPUネックになりやすいParallelは巨大ヒープでSTWが極悪になるShenandoahはG1とZGCのいいとこ取りのようにも見えるがCompressedOops有無や弱参照の比較を見てみたいServiceabilityToolの対応状況も大事8
9.
346:PromptlyReturnUnusedCommittedMemoryfromG1重要度:★★☆未使用のメモリをOSに返すようになったG1のconcurrentmarkcycle時に最大で最小ヒープサイズまで不要なメモリを返すようになったG1の改善型とも言えるShenandoahの取り組みがG1にも反映された-XX:G1PeriodicGCInterval でチェックする間隔をミリ秒で設定できるHotSpotVMは基本的に一度掴んだメモリはOSに返さない振舞いをするので、短い期間しか重い処理を行わないようなプロセスは常駐に不向きだった。このようなケースが解消される9
10.
344:AbortableMixedCollectionsforG1重要度:★★☆MixedGCを中断可能にすることで、ユーザが設定した停止時間の目標値を守りやすくしたG1はヒープをリージョンと呼ばれる単位で管理し、目標値を達成できるようにGC対象とするリージョンのリスト(コレクションセット,CSet)を決定するが、アプリ動作が変わるなどしてCSetが大きくなりすぎて目標値を超過してしまうことがある誤った量のCSetを繰り返し選択した状態を検出してMixedGCを中断可能にすることで、目標値を守れる度合を増やせるようにした検出したら段階的にCSetを選択して実行する10
11.
この改善の際に得られたヒントにより次の改善等がJava13で行われたJDK‑8218668:CleanupevacuationofoptionalcollectionsetJDK‑8219100:Improvedo_collection_pause_at_safepointこのようにGCは継続的に改善が行われていく11
12.
325:SwitchExpressions(Preview)重要度:★☆☆かなり便利なのだがプレビュー版なのでJava12を導入したら即使うものでもない--enable-preview オプションを指定する必要があるフィードバックを得て(いくつか変更を経て)正式に導入される予定Switch「文」が「式」として使用できるようになった条件ごとに変数に代入を繰り返していたが一発で書けるようになった副作用としてbreak抜けなどを防げるので積極的に導入したい12
13.
Beforeboolean 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
14.
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
15.
341:DefaultCDSArchives重要度:★★☆何もせずともJavaプロセスの起動時間が短縮されるClass‑DataSharing,CDSとはクラスや文字列などをアーカイブファイルにダンプして複数プロセスで共有する機能JDKのクラスは当然ながら最も共有可能な情報なのでこのアーカイブファイルが提供された、というのがこれクラスローディングが一部省略される等でプロセスの起動時間やメモリフットプリントが削減されるFaaSとか短命プロセスを立ち上げまくるケースで特に有効AppCDSも組み合わせるのが良い15
16.
334:JVMConstantsAPI重要度:★★☆Java10まではprimitiveとリテラルを持つStringだけConstant‑Poolに格納できたJava11から通称 condy と呼ばれる
ConstantDynamic がサポートされ、その他もConstant‑Poolで扱えるようになり、かつ定数の初期化処理が必要になるまで遅延可能になったこの遅延効果によりJavaプロセス起動が早くなる16
17.
今回のはこれのJDKAPIの追加java.lang.constant パッケージが java.base
モジュールに追加され、定数として使われるであろうクラス群( Integerや Enum 等)が拡張されたLombokなりで対応したいが自作の定数クラスについてもConstable や ConstantDesc インターフェースを実装するのが望ましいかもかも=まだ(私の中で)ベストプラクティスが定まってないこの取組はProjectAmberの一環なのでBrianGoetzの仕様草案(の一部)もとても参考になる17
18.
(APIの変更差分)https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/lang/Integer.html18
19.
230:MicrobenchmarkSuite重要度:★☆☆OpenJDK開発者向けであって利用者的には関係なしJavaMicrobenchmarkHarness(JMH)というマイクロベンチマークのフレームワークがOpenJDKコミュニティで開発・提供されているJDKソースコードにこれを利用したベンチマークが追加されたJMHはマイクロベンチマーク時の選択肢の一つとして大変便利(IntelliJプラグインもある)19
20.
340:OneAArch64Port,NotTwo重要度:★☆☆OpenJDKのARM64bitポーティングのコードが重複(arm64,aarch64)してたのでaarch64にマージされた完全にOpenJDK開発者向けであって利用者的には全く関係なし20
21.
APIsすべてのAPI差分はJSR386(Java12のJavaSpecificationRequest)のページから入手できるJSR‑000386JavaSE12FinalReleaseAnnex2forEvaluation21
22.
bitnotableAPIsCompactNumberFormatInputStream#skipNBytesString#indentFiles#mismatchnotableAPIsString#transformCollectors#teeingCompletableFuture#exceptionally{Compose}{Async}22
23.
java.text.CompactNumberFormatJDK‑8177552:CompactNumberFormattingsupportjshell> NumberFormat.getCompactNumberInstance().format(10000)$2 ==>
"1万"23
24.
端数どうしてると思います?jshell> NumberFormat.getCompactNumberInstance().format(15001)$3 ==>
"2万"jshell> NumberFormat.getCompactNumberInstance().format(14005)$4 ==> "1万"24
25.
java.io.InputStream#skipNBytes(long)指定したバイト数データをskipする既存の skip(long) はskipしたバイト数を返す今回の
skipNBytes(long) は指定したバイト数skipできなかったら EOFException を返すエラー時に -1 か Exception のどちらを返すべき?String#indent(int)指定した数分インデントを追加する。マイナスなら削除Files#mismatch(Path,Path)指定した二つのファイルの最初の差分の位置を返す。同じなら -125
26.
String#transform(Function<?superString,?extendsR>f)Stringに対する関数を適用させるメソッド考える順にlambda式で書けるので見通しが良い例:プログラム言語からマスコットのライセンスを取得する言語名からマスコット名を取得するメソッドMascot::getNameマスコット名からライセンスを取得するメソッドMascot::getLicenseMascot.getLisence(Mascot.getName("Java"))"Java".transform(Mascot::getName).transform(Mascot::getLisence)26
27.
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
28.
CompletableFuture#exceptionally{Compose}{Async}Exceptionhandlerである exceptionally(Function) メソッドが元々あり、これは前段で例外がスローされたときにキャッチ(して実行)するメソッドこれを非同期に行う
Async とthenComposeを行う Compose 、Composeを非同期で行う ComposeAsync が追加されたAsync はForkJoinPoolの管理ワーカで実行される(通常のエラーハンドリング処理はメインスレッドでやる)分かりやすいので CompletableFuture クラスで紹介しているが、実態は CompletionStage インターフェースに追加された28
29.
CompletableFuture.runAsync(() -> {//
エラーが生じうる処理throw new RuntimeException();}).exceptionallyAsync(e -> { // ここのパターンが増えた// エラーハンドリング処理return null;}).get(5, TimeUnit.SECONDS);29
30.
OtherenhancementsJDK‑8209923:Unicode11JDK‑8202286:AllocationofoldgenerationofJavaheaponalternatememorydevicesJDK‑8211845:Anewswitchtocontrolverbosityofhs‑errfiles-XX:+ExtensiveErrorReportsJDK‑8205517:JFRtooljfr print --json
--category xxx --event yyyzzz.jfrフライトレコードをElasticにjsonで流すなどが可能に30
31.
Java13+ProjectsAmberValhallaPanamaLoomMetropolisSkaraPortolaJEP:35Draft,5Submitted,27CandidateJIRABoard31
32.
ProjectAmberJava言語仕様の大変革動的なクラスファイル定数SymbolicReferencesforConstantsSwitchExpressionRawStringLiterralPatternmatching大きすぎてまとめて入るのではなく少しずつ入ってきてる下2つはJava12に間に合わなかったが一部はAPI追加という形で入ってきてる(String#indentなど)32
33.
ProjectValhalla配列レイアウト改善CPUキャッシュ効率改善に向けた value 型の追加33
34.
ProjectPanamaJVMの外側との連携安全かつ高性能なJNIの置き換えJavaコードとネイティブコードとの連携ForeignFunctionInterface,FFIJavaコードからの低レベルなHW制御Vector演算、不揮発性メモリ34
35.
ProjectLoom軽量スレッドFiberJVMで百万規模のスレッド(Fiber)を動かすマルチスレッドプログラミングの簡易化35
36.
ProjectMetropolisJava‑on‑JavaGraalcompilerAOTstaticcompilation36
37.
ProjectSkarahttps://github.com/openjdk/jdk37
38.
ProjectPortolaPortingtoAlpine/musl38
39.
350:DynamicCDSArchivesJava13で導入予定アプリケーション実行終了時にクラスを動的にアーカイブする仕組みJava12はJDK標準ライブラリクラスのアーカイブが同梱され、この取組でロードされたアプリケーションクラスやライブラリクラスのを自動的にアーカイブすることで、より楽にAppCDSを使えるようになる元々AppCDSを使うには一度クラスをロードさせる必要があるので試運転が必要だった。なおロードされなかったクラスは動作に不要なのでアーカイブされない39
40.
351:ZGC:UncommitUnusedMemoryJava13で導入予定Java12で入ったG1のと同様にZGCも使ってないメモリをOSに返すようになる。ちなみに今のところは返さないShenandoahは最初から返す仕組みが備わっている40
41.
353:ReimplementtheLegacySocketAPIJava13で導入予定(提案レビュー中)SocketAPI( java.net.Socket ,
java.net.ServerSocket )の一新既存実装はSocketImplのレガシーなSPI(SupportProviderInterface)機構のJavaとCの実装で成り立っており、スレッドスタックをI/Oバッファとして利用していたり、非同期処理をnativeなデータ構造で達成していたりと信頼性や移植性が損ねる状態だった今後ProjectLoomによりユーザモードなスレッド(Fiber)が導入されることもあり、ネイティブな世界でブロックすることなく停止(park)できるように NioSocketImpl が導入される。とはいえ昔の実装も使えるようオプションで切り替えられる予定41
42.
352:Non‑VolatileMappedByteBuffersNVM向けの MappedByteBuffer API追加この流れでunmmapedするAPIも生えないかしら42
43.
301:EnhancedEnumsEnumの拡張。二年前から取組中。Beforepublic enum JDKNumber
{YEAR(18),FULL(18.3);public final Number version;JDKNumber(Number version) {this.version = version;}}float jdkVersion = (float)JDKNumber.Full.version;43
44.
Afterpublic 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
45.
305:PatternmatchingforinstanceofBeforeif (obj instanceof
Double) {Double d = (Double) obj;// d を使った処理}Afterif (obj instanceof Double d) {// d を使った処理}switch でも同じように書けるswitch (obj) {case Integer i:// intの時にやらせたい処理case Double d:// doubleの時にやらせたい処理} 45
46.
355:TextBlocksBeforeString html =
"<html>n" +" <body>n" +" <p>Hello, world</p>n" +" </body>n" +"</html>n";AfterString html = """<html><body><p>Hello, world</p></body></html>""";46
47.
349:JFREventStreamingこれまでディスクに書き込まれたバイナリデータから解析やモニタリングを行う必要があったが、ストリーミングで流し込むことが可能になる今まで何故なかったのかというぐらい便利。性能次第ではJMXや一部のロギングをこれに置き換えることも十分にあり得る早く来て欲しい47
48.
CatchupJava12andJava13KUBOTAYuji(@sugarlife)LINECorporationJJUGCCC2019Spring(2019/May/18)
Download
[8]
ページ先頭
©2009-2025
Movatter.jp