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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
29
16k
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
5
1k
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
6.4k
海外登壇の心構え - コワクナイヨ - / how to prepare for a presentation abroad
kishida
2
130
Current States of Java Web Frameworks at JCConf 2025
kishida
0
1.7k
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
26
7.2k
LLMベースAIの基本 / basics of LLM based AI
kishida
13
3.6k
Java 24まとめ / Java 24 summary
kishida
3
830
AI時代のプログラミング教育 / programming education in ai era
kishida
25
27k
Other Decks in Programming
See All in Programming
Apache Iceberg V3 and migration to V3
tomtanaka
0
170
Raku Raku Notion 20260128
hareyakayuruyaka
0
360
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
480
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
330
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
300
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
CSC307 Lecture 08
javiergs
PRO
0
670
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
AI巻き込み型コードレビューのススメ
nealle
2
1.4k
Featured
See All Featured
Visualization
eitanlees
150
17k
Docker and Python
trallard
47
3.7k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
How STYLIGHT went responsive
nonsquared
100
6k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
320
Ruling the World: When Life Gets Gamed
codingconduct
0
150
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
GraphQLとの向き合い方2022年版
quramy
50
14k
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もがんばってます!