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
Java 2021
Search
Naoki Kishida
April 24, 2021
Programming
1.4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Java 2021
2021/4/24に開催されたFUKUOKA Engineer Day 2021での登壇資料です
Naoki Kishida
April 24, 2021
More Decks by Naoki Kishida
See All by Naoki Kishida
Java 27新機能 / Java 27 new features
kishida
2
170
ローカルLLMでどこまでコードが書けるか -LLM基礎知識 / How much code can be written on a local LLM - fundamental knowledge
kishida
10
10k
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.4k
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
400
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
5.6k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
260
ローカルLLMでどこまでコードが書けるか / How much code can be written on a local LLM
kishida
2
650
ローカルLLM基礎知識 / local LLM basics 2025
kishida
30
17k
AIエージェントでのJava開発がはかどるMCPをAIを使って開発してみた / java mcp for jjug
kishida
5
1.3k
Other Decks in Programming
See All in Programming
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
230
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
230
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
200
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.5k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
410
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.4k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.9k
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
170
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
790
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
170
Workers Cache を知る
syumai
0
290
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
270
BBQ
matthewcrist
89
10k
Designing for Performance
lara
611
70k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
370
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
How to build a perfect <img>
jonoalderson
1
6k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
510
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もがんばってます!