Slide 1

Slide 1 text

最新Javaへの誘い 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 aoi (@4o1sobblue)

Slide 2

Slide 2 text

自己紹介 aoi (@4o1sobblue) N = 2(25卒) ソフトウェアエンジニア 趣味:野球観戦・ゲーム・お笑い 前々回に分割キーボードの話で登壇し ました!二度目の登壇です✌️

Slide 3

Slide 3 text

やってる人、挙手! Java

Slide 4

Slide 4 text

周りにJavaやってる人いますか? 正直、あんまりいない JJUG CCC(Javaのカンファレンス)に行っても、参加者・登壇者ともに若い人 が少ないイメージ でも、めちゃくちゃ使われてる言語なはず、、

Slide 5

Slide 5 text

ってどんなイメージ? Java Claudeくん曰く・・・ 古い 冗長(書く量が多い) エンプラ言語 なんかおじさんが使ってそう

Slide 6

Slide 6 text

今のJavaを知ってもらいたい!

Slide 7

Slide 7 text

前置き(言い訳・保険) 私はフロントエンド寄りのなんちゃってフルスタックエンジニアです フロントエンド(TS/React):7割 バックエンド(Java):2割 その他:1割 業務ではJava 17を使っています 17も十分モダンなんですが、、最新LTS版のJava 25まで、このLTのために初めて 調べました

Slide 8

Slide 8 text

Before / After で見てみる

Slide 9

Slide 9 text

メソッドの簡略化(Java 25) ① main Compact Source Files and Instance Main Methods(JEP 512) Java 21でプレビュー開始(JEP 445)→ 22, 23, 24と改良 → Java 25で正式化 1. main が public static でなくてよくなった も省略可。既存コードへの影響はなし 2. クラス宣言も省略できる →コンパクトソースファイル。トップレベルのコードをコンパイラが暗黙的に包 んでくれる 3. `java.lang.IO` クラスが新設 → `java.base` も自動import。 `System.out.println` も不要に → `String[] args`

Slide 10

Slide 10 text

Hello world Before (Java17) で比較 public class Hello { public static void main(String[] args) { System.out.println("Hello world!"); After (Java25) void main() { IO.println("Hello world!"); } } } の呪文が不要 ② クラス宣言も省略できる ③ `System.out` も不要( `java.lang.IO` ) ① `public static void main`

Slide 11

Slide 11 text

( ) ② Sequenced Collections Java 21 Sequenced Collections(JEP 431)/Java 21で正式化(プレビュー期間なし) Before (17) After (21) String first = list.get(0); String last = list.get(list.size() - 1); String first = list.getFirst(); String last = list.getLast(); list.add(0, "new"); list.remove(list.size() - 1); list.addFirst("new"); list.removeLast(); 先頭・末尾の操作が、どのコレクションでも同じ書き方に ② おまけで `reversed()` も全部に(コピーではなくビュー) ①

Slide 12

Slide 12 text

のパターンマッチング ③ switch Pattern Matching for switch(JEP 441) Java 17でプレビュー開始(JEP 406)→ 18, 19, 20と改良 → Java 21で正式化 Before (17) String result; if (obj instanceof Integer i) { After String result = switch (obj) { case Integer i -> "int: " + i; result = "int: " + i; } else if (obj instanceof String s) { result = "String: " + s; } else { (21) case String s default -> "String: " + s; -> "unknown"; }; result = "unknown"; } ① 分岐の条件が「型」になった ② switch が「文」から「式」になった

Slide 13

Slide 13 text

まとめ Java 17 → 21 → 25 と、書き味は着実に変わってきている 「古い・冗長」のイメージ、そろそろアップデートしませんか?

Slide 14

Slide 14 text

にいこう JJUG CCC Javaの大型カンファレンス JJUG CCCは例年春と秋に開催 2026 Fallは11月28日・ベルサール新宿グランドで開催 私より何百倍もJavaに詳しい人の話を間近で聞けるチャンス 気になった方、ぜひ参加しましょう!!

Slide 15

Slide 15 text

Thank you!