Java 19とは?フィーチャーリリースの最新版を理解しよう!
thumb_java19_01
Java 19とは?フィーチャーリリースの最新版を理解しよう!
言語
アンドエンジニア編集部
2022.11.02
この記事でわかること
米国Oracleは2022年9月20日に、Javaの半年ごとの「フィーチャーリリース」で「Java 19」を発表した
「Java 19」は2023年9月にリリース予定のLTS版「Java 21」に向けて7つの新たな機能や改良が行われている
2年に1度登場するJavaのLTS版を本格的に利用する前に、「フィーチャーリリース」を活用して試しておくとよい

OracleがJavaの最新バージョン19をリリース

image

米Oracle社が2022年9月20日、Javaの最新バージョン版「Java 19」を発表しました。同時にJavaの開発キット「JDK 19」も提供が開始されました。

これまではJava 18・JDK 18が最新でしたが、半年ごとの「フィーチャーリリース」によってJava 19・JDK 19が最新バージョンとなります。

今回のJava 19では、プラットフォーム機能の強化・パフォーマンスと安定性・セキュリティ面など、多くの改良が加えられている点が注目されます。Javaはフィーチャーリリースの中の1つがLTS(Long Term Support)版に指定され、3年間の長期サポートが保証される仕組みです。

現在のLTS版は2021年9月リリースのJava 17※ですが、LTSの間隔が3年から2年に短縮されたことで、次に登場するLTS版は2023年9月リリース予定の「Java 21」となります。

Java 19のサポート期間は「Java 20」公開予定の2023年3月までで、それまでの間に2回程度のメンテナンスアップデートが予定されています。また、LTSのJava8が2022年3月に公開アップデートを終了※していますが、今後も順次サポートが終了していきますので、常に確認が必要です。

この記事では、Java 19リリースに関するニュース、Java 19の新機能概要、新機能の詳細について紹介をしていきます。Javaを学んでいる方、Javaに興味がある方、実際にJavaを利用している方はぜひ参考にしてみてください。

【参考】:Oracle Releases Java 17 【参考】:オラクル、Java 19をリリース 【参考】:※Oracle Java SE Supportロードマップ | Oracle 日本

Javaとは?人気プログラミング言語Javaの将来性やメリットについて解説

Java 19の新機能概要

img_java19_02

Javaでは、新たな技術仕様や改訂仕様はJSR(Java Specification Request) として提案され、採用されたものがJEP (JDK Enhancement-Proposal) として管理されます。

今回JDK 19に採用されたJEPは以下の7件があり、2023年9月にLTSとしてリリース予定のJava 21に向けて、さまざまなテストが進められていきます。

7つの機能には「レコードパターン」、オープンソースの「Linux/RISC-V命令セットアーキテクチャ(ISA)サポート」「外部関数とメモリAPIのプレビュー」「仮想スレッド」「ベクトル演算API」「外部関数とメモリAPIのプレビュー」「構造化並行処理」があります。

Linux/RISC-V機能以外の機能は、プレビューまたはインキュベータフェーズにあります。実際にJava 19をインストールして試してみたい方は、以下のJavaダウンロード※サイトを利用してください。

【参考】:※Java ダウンロード | Oracle 日本 【参考】:The Arrival of Java 19| Java 19の技術ブログ

Java 19の7つの新機能詳細

img_java19_03

今回発表されたJava 19の7つの新機能詳細について、以下解説をしていきます。これらの多くはプレビューやインキュベーション中の機能ですが、Java 21に向けてテストが繰り返され、ブラッシュアップされていく予定です。

※プレビュー機能とあるものは、実装は完了していいますが、一時的となる可能性がある新機能のことで、将来的なJDKリリースでは別の形式となるか、完全になくなっている可能性があるものを意味しています。

また、Java 18からデフォルトの文字コードが、従来のUTF-16からUTF-8になっていますが、Java 19でもそれは踏襲されています。

【参考】:JDK 19 Release Notes

レコードパターンのプレビュー「JEP 405:Record Patterns (Preview)」

レコードの値を分解するレコードパターンで、Javaプログラミング言語を強化します。レコード型とタイプ型のネストにより、強力で宣言的、かつ複合的なデータナビゲーションと処理を可能にします。本機能はプレビュー機能です。

【参考】:JEP 405: Record Patterns(Preview)

Linux/RISC-V命令セットアーキテクチャ(ISA)サポート「JEP 422:Linux/RISC-V Port」

オープンソースの命令セット・アーキテクチャ (ISA) である、Linux/RISC-V に対応します。これにより、RISC-VアーキテクチャにおいてJavaの活用が進むことが期待されます。

【参考】:JEP 422: Linux/RISC-V Port

外部関数とメモリAPIのプレビュー「JEP 424:Foreign Function & Memory API(Preview)」

JavaプログラムがJavaランタイム外のコードやデータと相互運用できる APIです。

外部関数 (JVM の外部のコード)を効率的に呼び出して、外部メモリ(JVM によって管理されないメモリ) に安全にアクセスすることにより、APIはJava プログラムがネイティブ ライブラリを呼び出す際に、脆弱性や危険性を排除してネイティブ データを処理できるようにします。これはプレビュー 機能のAPIです。

【参考】:JEP 424: Foreign Function & Memory API(Preview)

仮想スレッドのプレビュー「JEP 425:Virtual Threads (Preview)」

従来のJavaスレッドは、OSのネイティブスレッドとの関係が1対1であり、Javaによる多数スレッドの作成が処理のオーバーヘッドを招くケースがありました。

Virtual Threadsはこの問題解決のための新機能で、スレッドをJava VM(仮想マシン)内で管理することで、消費リソースの削減とパフォーマンス向上を図ります。これはプレビュー機能です。

【参考】:JEP 425: Virtual Threads(Preview)

ベクトル演算API(インキュベーション中)「JEP 426:Vector API (Fourth Incubator)」

サポートされているCPU アーキテクチャ上で実行時に最適なベクトル命令にコンパイルして、ベクトル演算(1つの命令で複数のデータ処理を行う演算方式)を表現する API を導入することで、同等のスカラー演算(1つの命令で1つのデータ処理を行う方式)よりも優れたパフォーマンスを実現します。

【参考】:JEP 426: Vector API (Fourth Incubator)

パターンマッチングのプレビュー「JEP 427:Pattern Matching for switch (Third Preview)」

switch式およびステートメントのパターンマッチングによって、Javaプログラミング言語を強化します。

switchにパターンマッチングを拡張することで、式を複数のパターンに対してテストすることができ、それぞれが特定のアクションを持つため、複雑なデータ指向のクエリを簡潔かつ安全に表現することができます。本機能はプレビュー機能です。

【参考】: JEP 427:Pattern Matching for switch (Third Preview)

構造化並行処理API(インキュベーション中)「JEP 428:Structured Concurrency (Incubator)」

構造化並行処理のためのAPIを導入することによって、マルチスレッドプログラミングを簡素化します。構造化並行処理は、異なるスレッドで実行される複数のタスクを1つの作業単位として扱うことで、エラー処理やキャンセル処理の効率化、信頼性の向上、観測性の強化などを実現します。

本APIはインキュベーション中の APIです。

【参考】:JEP 428:Structured Concurrency (Incubator)

Java 19の新機能を試しましょう

img_java19_04

ここまで、Javaプログラミング言語の最新バージョン・Java 19リリースのニュース・新機能の概要・詳細について解説しました。

オブジェクト指向言語のJavaは、OSにかかわらず実行できる汎用性の高さ・安定性・豊富なライブラリ・ガベージコレクション(メモリーリークを防ぐ機能)などが備わり、世界で最も利用されている言語と言われています。しかも、半年ごとに新たな機能が搭載され、2年に1度の割合でLTSが提供されます。

こうしたことから、Javaの人気は高く、将来性があると考えられます。プロジェクトなどで利用する際には、安定性の高いLTS版の利用が向いていますが、今回紹介したJava 19のようなフィーチャーリリース版で新機能を試しておくことをおすすめします。

Javaの資格は?おすすめ資格のレベルや難易度・学習方法を解説!
Spring Bootとは?Java開発の主要フレームワークを解説!
気になる人のTwitterをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

cover
プログラマーに向いていないと感じる。今後エンジニアとしてどのようなキャリアを歩んでいけばいい?【Vol.2 / エンジニアのお悩み相談】
キャリアアドバイザー(マイナビAGENT)
2022.12.27

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
システムエンジニア求人特集

編集部おすすめコンテンツ

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT