3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[最新LTS] Java 21 では何が変わったのか?新機能3つを紹介

Last updated at Posted at 2024-10-17

■ はじめに


2023年にJava 21が最新のLTSバージョンとしてリリースされました。
これまで最新バージョンに触れていなかったため、知識のアップデートも兼ねてJava 17からの進化点や
変更、新機能を具体的なコード例を交えながら解説していこうと思います。

本記事では最新バージョンの一部をご紹介しますが、更新内容の全ては OpenJDK より確認できます。

■ 目次


  1. Java 21の概要
  2. 新機能紹介
  3. まとめ

1. Java 21の概要


Java 21は2023/9/19にリリースされたJavaプラットフォームの最新1のLTSバージョンです。
LTSバージョンは長期間のサポート版として提供されるため、企業や大規模プロジェクトで安定した開発基盤として重要視されます。

Java 21の特徴

  • パフォーマンスの最適化

    • 低レベルの最適化が多数行われ、Javaの実行速度が向上
  • セキュリティの向上

    • 新しいセキュリティ機能の追加 エンタープライズ向けシステムにおいてより高いセキュリティレベルの提供
  • モダンなコーディングパターンのサポート

    • 新機能によってプログラマがより直感的にモダンなプログラミング手法を取り入れやすくなっている。

バージョンアップに伴う特徴として挙げられるのは上記となりますが、
細かな新機能も増えているのでこちらでは例として2つご紹介します。

新機能1:仮想スレッドの導入


まずご紹介する新機能は仮想スレッドです。
従来のスレッドと比べたとき仮想スレッドは軽量であり、大量のスレッドを扱う際に効率的です。
これにより並行処理が容易に実現できます。

import java.util.concurrent.Executors;

public class VirtualThreadsExample {
    public static void main(String[] args) throws InterruptedException {
        var executor = Executors.newVirtualThreadPerTaskExecutor();

        for (int i = 0; i < 10; i++) {
            executor.submit(() -> {
                System.out.println("仮想スレッド:" + Thread.currentThread());
            });
        }

        executor.shutdown();
    }
}

上記の例では仮想スレッドを使用して10個の並列タスクを実行しています。
Executors.newVirtualThreadPerTaskExecutor()では仮想スレッドを生成するExecutorサービスを作成しています。
(各タスクごとに仮想スレッドを作成するExecutorServiceが返る)

Thread.currentThread() は現在実行中のスレッド情報を返すメソッドなので、
for文内のSystem.out.出力には繰り返しの中で仮想スレッドが表示されます。

また、executor.shutdown();はExecutorServiceを終了させるメソッドです。
(このメソッドを呼び出すことでリソースの解放やタスクの完了を保証します。)

新機能2:レコードパターン


次に紹介する機能は新たに導入された「レコードパターン」です。
レコードクラスを用いたパターンマッチングが可能になり、簡潔なコードでデータ抽出ができるようになります。

public record Point(int x, int y) {}

public class RecordPatternExample {
    public static void main(String[] args) {
        Object obj = new Point(10, 20);

        if (obj instanceof Point(int x, int y)) {
            System.out.println("X座標: " + x + ", Y座標: " + y);
        }
    }
}

この例では、レコードPointを使ったパターンマッチングを行っています。
オブジェクトがPointインスタンスである場合にそのフィールドxとyを簡単に抽出し、処理が行えます。

5. まとめ


  • Java 21は2023年9月に公開された最新のLTSバージョンで、以下のような新規機能がある
    • 仮想スレッドの導入で、大量のスレッド処理が効率化
    • レコードパターンによって、レコードクラスを用いたより簡潔なパターンマッチングが可能に

他にも多数の改善点や新機能が追加されていますが、ここでは代表的なものを2つ紹介しました。

実際のプロジェクトで使用することになるのはまだ先かもしれませんが、
Java 21の新機能を活用することでよりシンプルかつ効率的なコードを書けるようになるのが楽しみですね。

  1. 2024年10月現在

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?