Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Java 2021
Search
Naoki Kishida
April 24, 2021
Programming
1
1.2k
Java 2021
2021/4/24に開催されたFUKUOKA Engineer Day 2021での登壇資料です
Naoki Kishida
April 24, 2021
Tweet
Share
More Decks by Naoki Kishida
See All by Naoki Kishida
Java 23の概要とJava Web Frameworkの現状 / Java 23 and Java web framework
kishida
2
410
Java Webフレームワークの現状 / java web framework
kishida
10
10k
Is Object Oriented nesessary? COSCUP 2024
kishida
0
140
プログラムに組み込みたい人向けLLMの概要 / LLM for programmers
kishida
3
490
Javaの現状2024夏 / Java current status 2024 summer
kishida
5
1.9k
Java 22 Overview
kishida
1
330
Is Object-Oriented nessesary?
kishida
0
110
オブジェクト指向は必要なのか / Is object-oriented needed?
kishida
36
25k
AI時代を乗り切る実装力をつけよう / Get avility of implementation beyond AI era
kishida
4
7.7k
Other Decks in Programming
See All in Programming
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
290
PHPとAPI Platformで作る本格的なWeb APIアプリケーション(入門編) / phpcon 2024 Intro to API Platform
ttskch
0
340
Effective Signals in Angular 19+: Rules and Helpers
manfredsteyer
PRO
0
180
Kaigi on Railsに初参加したら、その日にLT登壇が決定した件について
tama50505
0
120
数十万行のプロジェクトを Scala 2から3に完全移行した
xuwei_k
0
400
暇に任せてProxmoxコンソール 作ってみました
karugamo
2
760
テストコード書いてみませんか?
onopon
2
240
Fibonacci Function Gallery - Part 1
philipschwarz
PRO
0
250
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
110
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
300
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
6
480
なまけものオバケたち -PHP 8.4 に入った新機能の紹介-
tanakahisateru
1
130
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Unsuck your backbone
ammeep
669
57k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
What's in a price? How to price your products and services
michaelherold
244
12k
Designing for Performance
lara
604
68k
Music & Morning Musume
bryan
46
6.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.4k
A better future with KSS
kneath
238
17k
Transcript
Java 2021 Javaコミュ@福岡 きしだ なおき 2021/4/24 FUKUOKA Engineers Day 2021
自己紹介 • きしだ なおき • LINE Fukuoka • Twitter: @kis
Javaコミュ@福岡について • 年に何回か勉強会やってます(ました) • ほとぼりさめたらやりたい • 2006年に始まったっぽい
今日の話 • Java 17 LTSが出るよ • Java 8からどう変わってるの • Java
EE? 知らない子ですね • デスクトップやモバイルは? • Java 23 LTSはどうなるの?
Java 17 LTSが出るよ • 2021/9にリリース予定 • 次の長期メンテナンスバージョン
Java 17 LTSの目玉機能(Java 11比) • Records • Text Blocks •
GitHubへの移行
Records • Java 16で正式機能 • 構造体 • 名前付きタプル • イミュータブル
record Student(int code, String name, double score) {} var s = new Student(1, "田中", 8.5); var message = "%sさんのスコアは%.1fです" .formatted(s.name(), s.score()); System.out.println(message);
Text Blocks • Java 15で正式機能 • 複数行文字列 var s =
new Student(1, "田中", 8.5); var message = """ <tr> <td>%s</td> <td>%.1f</td> </tr> """.formatted(s.name(), s.score() ); System.out.println(message);
GitHubへの移行 • いままではMercurialでメーリングリストベースの開発 • Gitに移行、同時にGitHubでのPRベースの開発 https://github.com/openjdk/jdk/
Java 8から11でどう変わってるの? • リリースサイクルの変更 • 試用機能の導入 • GitHubへの移行 • ディストリビューションの活性化
• モジュールシステム • javacしなくても実行可
リリースサイクルの変更 • 6カ月ごとのリリース • 3月と9月にその時点でできてる機能をリリース • 春分の日と秋分の日 • 機能が完成してからリリースだと結局どんどん遅延 •
小さい改善を行うモチベーションが低くなる • たとえば ぬるぽのメッセージ改善 • 6バージョンごとに長期メンテナンスバージョン(LTS)を設定 • Java 11(2018.9)が最初のLTS • 次はJava 17(2021.9) • その次はJava 23(2024)
試用機能の導入 • 多くの人に使ってもらってフィードバックを得るために試用機 能を導入 • 言語 • preview • API
• incubator • JVM • experimental • 多くのフィードバックが得られるようになった
ディストリビューションの活性化 • OracleのJDKは商用有償に • OpenJDKをベースにしたディストリビューションの活性化 • AdoptOpenJDK • Oracle •
Oracle OpenJDK • Oracle JDK • Amazon • Corretto • Azul • Zulu • BellSoft • Liberica JDK
javacしなくても実行可 • 単一ソースのJavaソースはjavaコマンドで直接実行可 public class Hello { public static void
main(String... args) { System.out.println("Hello!"); } } sample.java
Java EE? 知らない子ですね • Java SEからJava EE APIの削除 • Micro
Profile • Java EEもオープンソース化
Java SEからJava EE APIの削除 • JAXB(XML機能)などが削除 • 外部ライブラリとして組み込む • Java
9で既存のライブラリやフレームワークが動かない 場合がある
MicroProfile • Java EEの開発が滞る • MicroProfile登場 • マイクロサービス用API • 対応フレームワーク
• Helidon MP • Quarkus • Payara Micro • WildFly • TomEE https://microprofile.io/
Java EEのオープンソース化 • Jakarta EEへ • パッケージ名の変更 • javax ->
Jakarta • Java EE 8 -> Jakarta EE 9 • 機能の変更なくパッケージ名のみ変更
デスクトップやモバイルは? • JavaFXのオープンソース化 • OpenJDKには含まれない • GraalVM • Native ImageでJavaコードをネイティブバイナリに
• Gluon Mobile • JavaFXベースでモバイルアプリケーションの開発 • GraalVM Native ImageでiOS用ネイティブアプリ生成 • https://gluonhq.com/products/mobile/
Java 23はどうなるの? • パターンマッチング • Loom • Valhalla
パターンマッチング • 他の言語にあるようなパターンマッチングの導入 • すでに簡単なものは導入済み • instanceof var message =
switch(s) { case Student(_, "田中", var score) -> """ <tr> <td colspan=2>田中様のスコアは%.1f!!! </td> </tr> """.formatted(score); case Student(_, var name, var score) -> """ <tr> <td>%s</td> <td>%.1f</td> </tr> """.formatted(name, score); System.out.println(message);
Loom • グリーンスレッド(JVM管理スレッド)の導入 • 通信処理を効率よく • いまはRxJavaやKotlin Coroutineを使っている
Valhalla • List<int>ができるようになる • value typeの導入 • ユーザー定義の基本型 • メモリ効率がよくなる
• Stream/IntStreamやOptional/OptionalIntのようなクラス不要
まとめ • Javaもがんばってます!