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.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
30
16k
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
5
1.1k
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
6.6k
海外登壇の心構え - コワクナイヨ - / how to prepare for a presentation abroad
kishida
2
150
Current States of Java Web Frameworks at JCConf 2025
kishida
0
1.7k
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
26
7.3k
LLMベースAIの基本 / basics of LLM based AI
kishida
13
3.6k
Java 24まとめ / Java 24 summary
kishida
3
840
AI時代のプログラミング教育 / programming education in ai era
kishida
25
28k
Other Decks in Programming
See All in Programming
Xdebug と IDE による デバッグ実行の仕組みを見る / Exploring-How-Debugging-Works-with-Xdebug-and-an-IDE
shin1x1
0
230
Strategy for Finding a Problem for OSS: With Real Examples
kibitan
0
120
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
410
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
230
コードレビューをしない選択 #でぃーぷらすトウキョウ
kajitack
3
1.2k
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
180
ファインチューニングせずメインコンペを解く方法
pokutuna
0
210
Nuxt Server Components
wattanx
0
160
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
200
へんな働き方
yusukebe
6
2.9k
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
680
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
280
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
780
Crafting Experiences
bethany
1
96
The Pragmatic Product Professional
lauravandoore
37
7.2k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
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もがんばってます!