Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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.3k
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
ローカルLLM基礎知識 / local LLM basics 2025
kishida
27
14k
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
5
890
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
5.9k
海外登壇の心構え - コワクナイヨ - / how to prepare for a presentation abroad
kishida
2
110
Current States of Java Web Frameworks at JCConf 2025
kishida
0
1.5k
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
25
7k
LLMベースAIの基本 / basics of LLM based AI
kishida
13
3.5k
Java 24まとめ / Java 24 summary
kishida
3
810
AI時代のプログラミング教育 / programming education in ai era
kishida
25
27k
Other Decks in Programming
See All in Programming
sbt 2
xuwei_k
0
260
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
200
Full-Cycle Reactivity in Angular: SignalStore mit Signal Forms und Resources
manfredsteyer
PRO
0
120
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
26
22k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
120
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
140
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
AWS CDKの推しポイントN選
akihisaikeda
1
240
dnx で実行できるコマンド、作ってみました
tomohisa
0
140
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
170
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
2.6k
SwiftUIで本格音ゲー実装してみた
hypebeans
0
110
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
GitHub's CSS Performance
jonrohan
1032
470k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
How STYLIGHT went responsive
nonsquared
100
6k
Faster Mobile Websites
deanohume
310
31k
Music & Morning Musume
bryan
46
7k
Unsuck your backbone
ammeep
671
58k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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もがんばってます!