Java サポート

MuleSoft は Mule Runtime 4.6 から、Java の長期サポート (LTS) リリースケイデンスを採用しており、Java 17 LTS のサポートが追加されています。Java 17 にアップグレードすると、パフォーマンスの向上、言語レベルの機能強化、セキュリティ強化、拡張された API とライブラリといった多数の利点があります。

多くのサードパーティベンダーが Java 8 のサポートを終了するため、MuleSoft 製品スタックに影響があります。新しい LTS リリースケイデンスを採用することで、セキュリティ、コンプライアンス、パフォーマンスが向上します。

この変更は、現在サポート対象の Mule バージョンで実行されている Mule アプリケーションや、Mule Runtime 4.6 にアップグレードしたアプリケーションにはすぐには影響しませんが、早急にアップグレード計画を開始することをお勧めします。Java 17 のアップグレード計画には、インテグレーションアプリケーション、コネクタ (Anypoint Connector とカスタムコネクタ)、Mule ゲートウェイポリシー、API プロキシの評価を含みます。これらのコンポーネントはすべて Java に依存しています。

既存の Java 8 アプリケーションは、2025 年 2 月まで Java 8 で実行されます。

Mule Runtime の Java サポート

次の表に、Java 8、Java 11、Java 17 のサポートのタイムラインを示します。

Mule バージョン リリース日 Java バージョン 標準サポートの終了 延長サポートの終了

4.5 Edge

2023 年 10 月

8、11

2024 年 2 月

2024 年 6 月

4.6 LTS

2024 年 2 月

8、11、17

2025 年 2 月

2026 年 2 月

4.6 Edge

2024 年 2 月

8、11、17

2024 年 6 月

2024 年 10 月

4.7 Edge

2024 年 6 月

8、11、17

2024 年 10 月

2025 年 2 月

4.8 Edge

2024 年 10 月

8、11、17

2025 年 2 月

2025 年 6 月

4.9 LTS

2025 年 2 月

17

2026 年 2 月

2027 年 2 月

4.9 Edge

2025 年 2 月

17

2025 年 6 月

2025 年 10 月

Java 8 および 11 の標準サポートは 2025 年 2 月の Mule Runtime 4.9 リリースで終了するため、Java 8 または Java 11 で実行しているアプリケーションのアップグレードパスを適宜計画してください。

Mule リリースケイデンスについての詳細は、Edge and LTS Releases for Muleを参照してください。

Mule Runtime

Java 17 の改善されたパフォーマンスとセキュリティを利用するには、​Mule Runtime 4.6 以降にアップグレード​してください。

ベストプラクティスは次のとおりです。

  • スタンドアロン Mule インスタンスをアップグレードする。

  • Runtime Manager で管理されているオンプレミス Mule インスタンスをアップグレードする。

  • Mule アプリケーションのビルドに使用する Mule バージョンを更新する。

  • Mule 4.6 以降で実行する対象に​アプリケーションをデプロイ​する。

Mule アプリケーション

現在実行中の Mule アプリケーションのほとんどを、Java 17 を使用するように更新してテストし、再デプロイできます。ただし、カスタム Java コードを実行しているアプリケーションとコネクタでは、それらのコンポーネントを認定するための追加作業が必要です。インテグレーションアプリケーションまたは Mule ゲートウェイポリシーとプロキシを Java 17 にアップグレードする前に、アプリケーションおよびポリシー内で使用されるすべての拡張機能、モジュール、コネクタを Java 17 に更新する必要があります。

アプリケーションの実行でサポートされる最大バージョンは、Mule Runtime 4.6.x 以降では Java 17 です。アプリケーションのパッケージ化中に、サードパーティの連動関係も含めて、すべてのコードを Java 8 用にコンパイルする​必要​があります。
アップグレード時に API プロキシまたは Mule アプリケーションを確実に保護するには、API プロキシまたは Mule アプリケーションをアップグレードする​​に API ポリシーをアップグレードしてください。

Java 17 のパフォーマンスに関する考慮事項

Java 17 では、MuleSoft 製品に重要なパフォーマンスに関する変更が行われています。Java 17 には、コードの実行速度を向上させる新しい JIT コンパイラーが含まれています。

アプリケーションのパフォーマンスを向上させるには、以下を参照してください。

メモリ管理

Java 17 は、Java 8 などの以前のバージョンとは異なる方法でメモリを管理します。Java 17 では、要求のレイテンシーが短縮され、より想定どおりに作業が実行されます。これを実現するために、異なるメモリ管理アプローチが採用されています。各アプリケーションに大きく依存しますが、場合によっては、Java 17 はヒープメモリに優先的にコミットします。

アプリケーションの最適な動作を確保し、Java 17 の改善点を効果的に活用するには、次の​パフォーマンステスト​と​監視​を実施する必要があります。

  • 大規模なバッチアプリケーション

  • CPU とメモリ提供の上限に達しているアプリケーション

アプリケーションがオンプレミスにデプロイされている場合:

  • ワークロードが Runtime Fabric で実行される場合は、少なくとも 1400 MB のメモリを 0.50 vCPU レプリカサイズに割り当てる必要があります。メモリ要件はアプリケーションごとに異なるため、この最小値はほとんどのアプリケーションに最適なメモリの割り当て設定です。

  • ワークロードがハイブリッド環境やスタンドアロン環境などのオンプレミスで実行される場合は、オペレーティングシステムのガベージコレクションアルゴリズムを調整する必要があります。

デフォルトの TLS 暗号化の選択

Java 11 以降を使用するサーバーで TLS を使用する場合、暗号化のプリファレンスはサーバーによって決定されます。クライアントでサポートされる暗号化リストは、優先度を決定するためではなく、絞り込むために使用されます。 「Use server cipher suites preference by default (JDK-8168261) (デフォルトでサーバー暗号化スイートのプリファレンスを使用 (JDK-8168261))」​を参照してください。

サーバーを Java 8 から Java 11 以降にアップグレードすると、(クライアントでサポートされる暗号化リストに応じて) 暗号化の再ネゴシエーションが発生し、セキュリティとパフォーマンスのトレードオフに影響を与える可能性があります。

暗号化のデフォルト値を変更する場合は、​「プロトコルと暗号化スイートの指定」​を参照してください。

Anypoint Connector およびモジュール

Anypoint Connector およびモジュールは、Java 17 での実行が MuleSoft によって認定されています。各コネクタおよびモジュールの Java 17 サポートについての詳細は、該当する Mule 4 Connector またはモジュールの​リリースノート​を参照してください。

コネクタおよびモジュールの Java 互換性情報を調べる場所

現在最も一般的に使用されている Anypoint Connector とモジュールは Java 17 と互換性があり、他のコネクタとモジュールが定期的にリリースされています。互換性情報については、コネクタのリリースノートを参照してください。

Java の互換性情報は、​[Asset versions (アセットバージョン)]​ テーブルのコネクタとモジュールの ​Exchange​ の詳細ページにも表示されます。コネクタはリリース時に Java 17 互換としてタグ付けされるため、これが最新の互換性情報です。

アセットバージョンの詳細オプションが表示されている展開済みのメニュー

Java 17 と互換性のあるコネクタのリストは、 Java 17 と互換性のある Anypoint Connector​ を参照してください。

Anypoint Connector のアップグレード

MuleSoft によって提供された、標準 (カスタムコードなし) で使用されている Anypoint Connector をアップグレードする手順は、次のとおりです。

  1. Runtime Manager で、コネクタを含む Mule アプリケーションを Mule Runtime 4.6 以降で実行するように更新します。

  2. Anypoint Studio で、プロジェクトプロパティレベルで​対象 JDK を変更​します。

  3. JDK 17 を選択すると、プロジェクト内のコネクタを更新するように自動的に促されます。

  4. パッケージ化中に、選択した JDK バージョンと互換性のないコネクタがプロジェクトにある場合は、案内とアラートが表示されます。

  5. Mule 4.6 以降で実行する対象に​アプリケーションをデプロイ​する。プロジェクトの Java バージョンとデプロイメント環境に不一致がある場合、Runtime Manager はアラートを表示します。

コネクタにカスタムコードが含まれている場合は、​カスタムコネクタ​を参照してください。

カスタムコネクタ

カスタムコネクタとは、MuleSoft のパートナーやユーザーがビルドしたコネクタなど、MuleSoft が開発および管理していないコネクタです。アプリケーションでカスタムコネクタを使用している場合は、Java 17 および Mule Runtime 4.6 以降で実行するようにコネクタを更新する必要があります。

MuleSoft パートナーの場合:

  1. Mule アプリケーションで、以下から生成されたコネクタを更新します。

  2. モジュールテストフレームワーク (ベータ)​ を使用してコネクタをテストします。

  3. Mule 4.6 以降で実行する対象に​アプリケーションをデプロイ​する。

MuleSoft ユーザーの場合:

  1. Mule アプリケーションで、以下から生成されたコネクタを更新します。

  2. MUnit​ を使用してコネクタをテストします。

  3. Mule 4.6 以降で実行する対象に​アプリケーションをデプロイ​する。

Anypoint Studio

Anypoint Studio (Studio) 7.17 以降、Mule アプリケーションが Mule Runtime 4.6 以降で実行されている場合、Studio プロジェクトレベルで対象 JVM を変更して JVM をアップグレードまたはダウングレードできます。

Studio 17 では、互換性に関する案内が提供されます。

  • アプリケーションをパッケージ化するときに、Studio 7.17 はリアルタイムの案内を提供し、互換性のないコネクタのバージョンやプロジェクトの不一致がある場合はアラートを表示して、デプロイメントの失敗を防ぎます。

  • 新しいコネクタまたはモジュールをプロジェクトに追加するときに、コネクタまたはモジュールの各バージョンでサポートされる JVM バージョンが表示されます。

  • 既存の Studio プロジェクトを Java 17 にアップグレードするときに、Studio は Exchange を自動的に検索し、アプリケーション内のどの拡張機能 (モジュールとコネクタ) をアップグレードすべきかを提案します。

  • Studio から CloudHub にアプリケーションをデプロイするときに、Runtime Manager はプロジェクトの Java バージョンとデプロイメント環境の不一致を検出します。たとえば、プロジェクトが Java 8 用にビルドされていて、対象環境が Java 17 の場合、Runtime Manager と Studio はデプロイメントの失敗を防ぐための案内を提供します。

ポリシー

MuleSoft に含まれる Mule ゲートウェイポリシーは、Mule Runtime 4.6 リリース以降の Java 17 と互換性があります。これらのポリシーは、2025 年 2 月まで Java 8 の標準サポートが提供されます。したがって、できるだけ早急にポリシーの更新を開始することをお勧めします。

アップグレード時に API プロキシまたは Mule アプリケーションを確実に保護するには、API プロキシまたは Mule アプリケーションをアップグレードする​​にポリシーをアップグレードしてください。

ポリシーをアップグレードする方法についての詳細は、​「自動ポリシーのアップグレード」​と​「API レベルのポリシーのアップグレード」​を参照してください。

API プロキシ

MuleSoft に含まれる API プロキシは、Mule Runtime 4.6 リリース以降の Java 17 と互換性があります。これらの API プロキシは、2025 年 2 月まで Java 8 の標準サポートが提供されます。したがって、できるだけ早急に API プロキシの更新を開始することをお勧めします。

アップグレード時に API プロキシまたは Mule アプリケーションを確実に保護するには、API プロキシまたは Mule アプリケーションをアップグレードする​​に API ポリシーをアップグレードしてください。

アップグレードの手順は、​[Proxy type (プロキシ種別)]​ によって若干異なります。

  • 基本エンドポイント:

    • 基本エンドポイントを使用する場合は、適合したアプリケーションを Mule Runtime インスタンスにデプロイし、自動検出を使用して API Manager に接続します。詳細は、​「Mule 4 アプリケーションでの Mule ゲートウェイの API 自動検出の設定」​を参照してください。

    • 基本エンドポイント API インスタンスを使用してインスタンスを更新する場合は、API インスタンスに接続している Mule アプリケーションを更新します。

  • プロキシアプリケーション

    プロキシアプリケーションをアップグレードする方法についての詳細は、​「API プロキシのアップグレード」​を参照してください。

Mule Maven プラグイン

Mule Maven プラグイン 4.1.1 以降を使用してアプリケーションをデプロイする場合、Java 17 を使用するようにデプロイメントを設定できます。

CloudHub にデプロイするときに、ビルドバージョンにメジャーバージョンとマイナーバージョンがある場合、Mule Maven プラグインはリリーストレインの最新ビルドバージョンをデプロイします。Mule Maven プラグインには、指定した Java バージョンに明示的にデプロイするための新しい Java バージョンプロパティがあります。

Runtime Fabric と CloudHub 2.0 にデプロイする場合、Mule Maven プラグインはビルドのタグ全体を受け入れるため、デプロイメントで正しいセマンティックバージョン (SemVer) を使用できます。

詳細は、次のドキュメントを参照してください。

DataWeave

DataWeave は、Java のリフレクション API を使用して Java オブジェクトの読み取りと書き込みを行います。Java 17 では、Java データ形式と Mule オブジェクトに影響する制限がカプセル化とリフレクティブアクセスに追加されています。

アプリケーションが引き続き適切に動作するようにするには、次のガイドラインに従ってください。

  • アプリケーションで使用されるオブジェクトが Plain Old Java Object (POJO) であることを確認する。

    POJO は DataWeave 2.6.0 以降で必要であり、POJO に次が含まれていることを確認する必要があります。

    • デフォルトのコンストラクター

    • すべてのプロパティの getter

    • すべてのプロパティの setter

  • 定義済み変数が適切な API を介してアクセスされていることを確認する。

    attributes​、​message​、​error​ などの変数には、特定のアクセス API があります。Java 17 を使用する場合は、内部項目にアクセスできなくなったため、適切な項目を使用する必要があります。次に例を示します。

    • error.muleMessage​ は、適切な Mule エラー項目 ​error.errorMessage​ に置き換える必要があります。

    • error.errors​ は、適切な Mule エラー項目 ​error.childErrors​ に置き換える必要があります。

詳細は、次のドキュメントを参照してください。