Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
テックポエム 祝! JDK14 リリース
Search
koduki
March 21, 2020
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テックポエム 祝! JDK14 リリース
koduki
March 21, 2020
More Decks by koduki
See All by koduki
テックポエム そろそろ5Gについて語っておくか
koduki
1
230
テックポエマーのWeekly IT News! - 2020/09/27
koduki
0
140
テックポエマーのWeekly IT News! - 2020/09/20
koduki
0
61
テックポエマーのWeekly News! - 2020/09/13 - シリコンバレーの地殻変動
koduki
0
150
Google Cloud Next'20 総括!
koduki
0
120
テックポエマーのGoogle Cloud Next ‘20 Week 9 振り返り
koduki
0
150
テックポエマーのWeekly News! - 2020/09/06 - With コロナ
koduki
0
93
テックポエマーのGoogle Cloud Next ‘20 Week 8 振り返り
koduki
0
130
Google Cloud Next '20 Weekly 7の振り返り
koduki
0
160
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Embracing the Ebb and Flow
colly
88
5.2k
The Curious Case for Waylosing
cassininazir
1
520
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
540
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
New Earth Scene 8
popppiees
4
2.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Music & Morning Musume
bryan
48
7.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Transcript
祝! JDK14 リリース テックポエム
TL;DR JDK14が無事にリリース。LTSの17に向けての下準備多数 RecordやPattern Matching、Text Blocks がプレビューながら追加 JFR
Stream API, Switch式など新APIや構文も追加 ZGCのWin/Macサポート、CMSの廃止などGC周りの改修もあり 詳しくはきしださんのJava 14新機能まとめ参照 https://qiita.com/nowokay/items/ec85d97a7cecaaac8123 一応言っておくけど、今もJavaは無料で使えます
予定通りの半年に1度のバージョンアップ Ref: https://www.oracle.com/technetwork/jp/articles/java/ja-topics/jdk-release-model-4487660-ja.html
JEP359: Record型(previw)が登場! Scalaのcase class, KotlinのData Classesみたいなの Immutableなデータ型
Java Beansの冗長な書き方からついに解放 たぶんJavaが批判される筆頭的な部分だった Lombok, IDEで生成, public field使う, 心を無にするなど 様々な対策 ただし、previewなのですぐプロダクションで使える わけではない。コンパイラと実行に--enable-preview を付ける必要がある
Java Bean public class Person { private String name; private
int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person[" + "name=" + name + ", age=" + age + ']'; } @Override public int hashCode() { int hash = 7; hash = 47 * hash + Objects.hashCode(this.name); hash = 47 * hash + this.age; return hash; } @Override public boolean equals(Object obj) {….} }
Record型(preview) public record Person(String name, int age) {}
Record型の特徴 超短い! コンストラクタの拡張等は出来る TupleのようにLambdaの戻り値として使い捨ての生成は出 来ない IImmutableな型しか作れず、アクセッサもgetXXではなく
xx()なので単純なJava Beanの置き換えではない Int定数に対するenum型のように用途を明確にした型だと いう理解が良いかも JavaBeanと互換性はないので、JPAとかJAX-RSとかの対応 はこれからと思われる
368: Text Blocks (Second Preview) “”“で括ることで複数行書ける。 インデントは一番浅いところが基準でそれ以降はスペース
変数埋め込みはformattedメソッドで行う var str = """ こんにちは、%sさん。 今日も Happy Hacking! """.formatted("紅月"); str ==> “こんにちは、紅月さん。¥n 今日も¥nHappy Hacking!¥n"
JEP305: Pattern Matching(Preview) 端的に言えば型判定と同時に代入が出来る構文。関数型言語では 便利に活用 If文だと正直嬉しさが少ないのでswitchに対応したJEP 375に期待
入れ子のレコードとか解析できるようになると捗る if (obj instanceof String s) { // can use s here } else { // can't use s here } if (!(obj instanceof String s)) { .. s.contains(..) .. } else { .. s.contains(..) .. }
JEP361: Switch Expressions (Standard) 12, 13でプレビューとして入っていたSwitch式が正式に。 breakが不要だったり、同値を固めたり出来てシンプルな構文に
戻り値はyieldだが省略は可能 なぜかNetBeans11.3で動かす場合はNetBeans自体をJDK14で動か さないとシンタックスエラーになるので注意 #そうしないと14の コンパイラ機能が使えない模様
JEP361: Switch Expressions (Standard) int fib(int n) { int r;
switch (n) { case 1: case 2: r = 1; break; default: r = fib(n - 1) + fib(n - 2); break; } return r; } int fib(int n) { return switch (n) { case 1, 2 -> 1; default -> fib(n - 1) + fib(n - 2); }; }
JEP349: JFR Event Streaming JDK Flight Recorderがファイルだけではなく、ストリームイベント として実行できるように。
基本的には問題発生してPGが落ちたときのBlackBox分析に有用 だったJFRがモニタリングにも活用できるように カスタムイベントも問題なく利用可能。 ログに吐いたり、Kafka等に直で投げたり、MP Profileと連携が主な 利用イメージ。
JEP349: JFR Event Streaming public static void main(String[] args) throws
IOException { CompletableFuture.runAsync(() -> { while (true) { try { var event = new SampleCustomEvent2(); event.begin(); event.myproperty = "Hello, " + System.currentTimeMillis(); event.commit(); Thread.sleep(1000); } catch (InterruptedException ex) { Logger.getLogger(ExampleStreamJFR.class.getName()).log(Level.SEVERE, null, ex); } } }); try (var rs = new RecordingStream()) { rs.enable("jdk.CPULoad").withPeriod(Duration.ofSeconds(1)); rs.onEvent("jdk.CPULoad", System.out::println); rs.onEvent(SampleCustomEvent2.class.getName(), (event) -> { System.err.println("my event:" + event.getString("myproperty")); }); rs.start(); } }
JEP349: JFR Event Streaming @Category({"Application Profile"}) @Label("Sample") public static class
SampleCustomEvent2 extends Event { @Label("Sample Property") String myproperty; } my event:Hello, 1584846088763 jdk.CPULoad { startTime = 19:01:29.680 jvmUser = 0.00% jvmSystem = 0.37% machineTotal = 3.87% } …. 実行結果:
その他JVMの主なアップデート 358: Helpful NullPointerExceptions 370: Foreign-Memory Access API
(Incubator) 364: ZGC on macOS / 365: ZGC on Windows 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector 366: Deprecate the ParallelScavenge + SerialOld GC Combination 345: NUMA-Aware Memory Allocation for G1 Shenandoah GC向けの改修を細々と
どうやって入れるの? こだわりが無ければLinuxやクラウドなら環境標準でOK WindowsやMacに入れる場合はLiberica JDKとかで良いと思う https://bell-sw.com/pages/java-14/ Oracle JDKとOpen
JDKは今は同じコードベース (問合せ対応がしたい等の)サポート入れなければ無料です 詳しく知りたい人はソムリエの資料を読みましょう https://www.slideshare.net/TakahiroYamada3/jdk- winery-tour-20191026-sfggjp-javajo
まとめ 今回はホップ, ステップ, ジャンプのステップ感が強い。 基本的にはプレビューがメインだし運用環境に急いでインストールす るメリットは比較的小さい ただし、監視にJFRを活用したい人は積極的に入れよう!
ライブラリ等を作ってる人はプレビュー版から特にRecord型の感触を つかむと良いかも いずれにしてもJavaがどんどん使いやすくなってるのが分かって良い