[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"package:cask:oracle-jdk:ja":3,"releases:stats:cask:oracle-jdk:ja":464,"related:cask:oracle-jdk:ja":465,"markdown:3:1403:prb6gy":511},{"artifacts":4,"autoUpdates":23,"categories":24,"caveats":31,"conflictsWith":32,"dependsOn":35,"deprecated":23,"description":43,"descriptionEn":44,"developer":45,"disabled":23,"displayName":46,"downloadSha256":47,"downloadSize":48,"downloadUrl":49,"editorChoice":23,"formulaeUrl":50,"homepage":51,"installCommand":52,"installs":53,"installs30d":54,"isFont":23,"isLibrary":23,"kegOnly":23,"kind":57,"latestRelease":58,"machineTranslated":27,"name":80,"names":81,"platforms":83,"primaryCategory":442,"rank30d":443,"releaseCount":444,"releaseStats":445,"screenshots":451,"sourceLocale":73,"sourceUrl":452,"summary":453,"summaryTranslation":454,"supports":456,"tags":458,"tap":463,"token":82,"version":79,"versionChangedAt":62},{"apps":5,"binaries":6,"entries":7,"pkgs":22},[],[],[8,15],{"declaration":9,"phase":13,"sources":14,"type":13},{"uninstall":10},[11],{"pkgutil":12},"com.oracle.jdk-27","uninstall",[],{"declaration":16,"phase":19,"sources":20,"type":21},{"pkg":17},[18],"JDK 27.pkg","install",[18],"pkg",[18],false,[25],{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},"lucide:braces",true,"プログラミング言語とランタイム","languages","zh-CN","Installing oracle-jdk means you have AGREED to the license at:\n  https:\u002F\u002Fwww.oracle.com\u002Fdownloads\u002Flicenses\u002Fno-fee-license.html\n",{"casks":33,"formulae":34},[],[],{"arch":36,"casks":39,"formulae":40,"requirements":41},[37,38],"arm64","x86_64",[],[],{"macos":42},{},"Oracle JDK は、Oracle による Java Standard Edition Development Kit の実装です。Java アプリケーションの構築、実行、デバッグ、監視に必要な Java ランタイムと開発ツールを提供します。開発者向けのランタイムであり、単体の Mac デスクトップエディターではありません。\n\n## macOS へのインストール\nOracle は、Intel x64 と Apple シリコン AArch64 の両方のインストール手順を公開しています。Homebrew の oracle-jdk cask は、JDK パッケージを含むバージョン付きの Oracle DMG をインストールします。記録されているデフォルトの配布ファイルは、Apple シリコン向けの JDK 27 インストーラーです。JDK は \u002FLibrary\u002FJava\u002FJavaVirtualMachines にインストールされます。`java -version` でデフォルトのランタイムを確認し、`\u002Fusr\u002Flibexec\u002Fjava_home` でコマンドライン開発に使用するインストール済みの JDK を選択します。\n\n## バージョンの選択と更新\nバージョン指定のない cask は、現在の機能リリースに追従します。長期サポート版の JDK に固定されているわけではありません。Oracle のダウンロードページでは、JDK 27 が最新の機能リリース、JDK 25 が最新の LTS 系列とされています。同じ機能リリース系列で同時にインストールできる更新版は1つだけです。新しい更新版をインストールすると、古い更新版が置き換えられます。Oracle は、JDK のインストールを置き換える前に Java プロセスを停止することを推奨しています。\n\n## ライセンス\nHomebrew は Oracle No-Fee Terms and Conditions へのリンクを掲載しています。Oracle によると、JDK 27 のバイナリは、この規約の下で、本番環境での使用と再配布を無償で行えます。この条件は、JDK 28 がこのリリースに取って代わる2027年3月まで適用されます。ライセンスとサポートの条件はリリース系列によって異なります。古い Oracle JDK バージョンにも同じ本番環境での使用条件が適用されるとは限りません。\n\n## ビジュアル素材\nこのパッケージがインストールするのは JDK であり、独立したエディターウィンドウを持つアプリケーションではありません。公式の macOS インストールガイドには、インストーラーの操作手順とターミナルコマンドが記載されています。実際の JDK アプリケーションのスクリーンショットや、固有のラスター形式のアプリアイコンは確認されていません。\n\n出典:\n- https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\n- https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\n- https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\n","JDK from Oracle","Oracle","Oracle JDK","26b9066743fa14737ceea7edca42f7fde40651c64b8e1085865795bc588ca7e0",212297917,"https:\u002F\u002Fdownload.oracle.com\u002Fjava\u002F27\u002Farchive\u002Fjdk-27_macos-aarch64_bin.dmg","https:\u002F\u002Fformulae.brew.sh\u002Fcask\u002Foracle-jdk","https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F","brew install --cask oracle-jdk",{"d30":54,"d365":55,"d90":56},146,6233,703,"cask",{"bodyMarkdown":59,"brewCommittedAt":60,"hasNotes":27,"id":61,"isLatest":27,"isPrerelease":23,"machineTranslated":23,"publishedAt":62,"sections":63,"source":72,"sourceLocale":73,"summary":74,"title":75,"translation":76,"version":79},"Java Development Kit 27 リリースノート\nJDK 27 リリースノート\n公開日: 15年2026月\nこのリリースノートには、次のセクションが含まれています。\nJava™ SE Development Kit 27\n主な新機能\n新機能\n削除された機能とオプション\n解決された注目すべき問題\nその他の注意事項\nOracle JDKとOpenJDKの相違点\nJava™ SE Development Kit 27\nこのノートでは、JDK 27における重要な変更、拡張、削除されたAPIおよび機能、非推奨となったAPIおよび機能、その他の情報について説明します。場合によっては、問題や変更の詳細情報へのリンクも記載しています。このページでは、Java SE 27 ( JSR 402) プラットフォーム仕様に記載された説明を重複して掲載していません。この仕様には、すべての仕様変更に関する参考情報が記載されており、ここでは説明されていない削除または非推奨のAPIや機能が特定されている場合もあります。Java SE 27 ( JSR 402) 仕様には、次へのリンクがあります。\n付属書 1:\n完全な\nJava SE 27 API仕様。\n付属書 2:\nJava SE 26とJava SE 27の正確な差異を示す\n注釈付きAPI仕様\n。これらの変更に関する参考情報は、このリリースで承認された変更仕様要求の一覧にあります。\n付属書 3:\nJava SE 27版の\nJava言語仕様\nおよび\nJava仮想マシン仕様。\nJava SE 27版には、Java SE 26版以降に行われたすべての修正と明確化、および新機能の追加が含まれています。\nJava SE 27 ( JSR 402) 仕様の内容と、このページに記載された項目の両方を確認してください。\nこのリリースノートの説明では、JDK 27への移行時に遭遇する可能性のある互換性の問題も特定しています。OpenJDK wikiの\n互換性の種類\nページでは、Javaプログラムに関する次の3種類の潜在的な互換性問題が示されており、これらはこのリリースノートで使用される場合があります。\nソース:\nソース互換性とは、既存のソースコードをエラーなくコンパイルできる能力が維持されることです。\nバイナリ:\nバイナリ互換性は、Java言語仕様において、既存のクラスファイルをエラーなくリンクできる能力が維持されることと定義されています。\n動作:\n動作互換性には、実行時に実行されるコードの意味が含まれます。\nJDK 27でクローズされたCSRの一覧については\nJDK 27で承認されたCSR\nを、互換性に関する一般情報についてはOpenJDK wikiの\n互換性および仕様レビュー (CSR)\nページを参照してください。\nこのリリースの完全なバージョン文字列はbuild 27+35です (「+」は「build」を意味します)。バージョン番号は27です。\nIANAデータ 2026b\nJDK 27には、IANAタイムゾーンデータバージョン2026bが含まれています。詳細については、\nJavaランタイムのタイムゾーンデータバージョン\nを参照してください。\n先頭へ\n主な新機能\n1. 言語\n➜\nパターン、instanceof、switchにおけるプリミティブ型 (第5回プレビュー)\nすべてのパターンコンテキストでプリミティブ型を使用できるようにしてパターンマッチングを強化し、\ninstanceof\nと\nswitch\nをすべてのプリミティブ型で機能するように拡張します。これは\nプレビュー言語機能\nです。\nJEP 532を参照\n2. ライブラリ\n➜\n遅延定数 (第3回プレビュー)\n変更不可能なデータを保持するオブジェクトである\n遅延定数\nのAPIを導入します。遅延定数はJVMによって真の定数として扱われ、フィールドを\nfinal\nとして宣言することで可能になるのと同じパフォーマンス最適化を利用できます。ただし、\nfinal\nフィールドと比べて、遅延定数は初期化のタイミングに関してより高い柔軟性を提供します。これは\nプレビューAPI\nです。\nJEP 531を参照\n➜\n構造化並行性 (第7回プレビュー)\n\n構造化並行性\nのAPIを導入して、並行プログラミングを簡素化します。構造化並行性では、異なるスレッドで実行される関連タスクのグループを単一の作業単位として扱います。これにより、エラー処理とキャンセルが効率化され、信頼性と可観測性が向上します。これは\nプレビューAPI\nです。\nJEP 533を参照\n➜\nVector API (第12回インキュベータ)\nサポート対象のCPUで実行時に最適なベクトル命令へ確実にコンパイルされるベクトル計算を表現するAPIを導入し、同等のスカラー計算を上回るパフォーマンスを実現します。これは\nインキュベータ\nAPIです。\nJEP 537を参照\n2.1 セキュリティ・ライブラリ\n➜\nTLS 1.3向けポスト量子ハイブリッド鍵交換\nセキュアなネットワーク通信を必要とするJavaアプリケーションのセキュリティを強化するため、TLS 1.3向けの\nハイブリッド鍵交換\nアルゴリズムを実装します。これらのアルゴリズムは、耐量子アルゴリズムと従来型アルゴリズムを組み合わせることで、将来の量子コンピュータによる攻撃に対抗します。\njavax.net.ssl\nAPIを使用するアプリケーションは、既存コードを変更せずに、これらの改良されたアルゴリズムをデフォルトで利用できます。\nJEP 527を参照\n➜\n暗号オブジェクトのPEMエンコーディング (第3回プレビュー)\n暗号鍵、証明書、証明書失効リストを表すオブジェクトを、広く使用されている\nPrivacy-Enhanced Mail\n(PEM)転送形式にエンコードし、その形式からオブジェクトにデコードするAPIを導入します。これは\nプレビューAPI\nです。\nJEP 538を参照\n3. パフォーマンス\n➜\nG1をすべての環境でデフォルトのガベージ・コレクタにする\nサーバー環境だけでなく、すべての環境でGarbage-First (G1) ガベージ・コレクタをデフォルトのコレクタにします。\nJEP 523を参照\n➜\nコンパクト・オブジェクト・ヘッダーをデフォルトにする\nHotSpot JVMのデフォルトのオブジェクト・ヘッダー・レイアウトをコンパクト・オブジェクト・ヘッダーにします。コンパクト・オブジェクト・ヘッダーは、64ビット・アーキテクチャでヘッダーを96ビットから64ビットに縮小します。これにより、ヒープ・サイズの削減、デプロイ密度の向上、データ局所性の向上が実現します。\nJEP 534を参照\n4. モニタリング\n➜\nJFRプロセス内データ・リダクション\n\nJDK Flight Recorder\n(JFR)を拡張し、記録内のコマンドライン引数、環境変数の初期値、およびシステム・プロパティの初期値をマスキングします。機密情報が漏えいしないよう、データがプロセス外に出る前にマスキングします。\nJEP 536を参照\n先頭へ\n新機能\nこのセクションでは、Java SE 27およびJDK 27の拡張機能の一部について説明します。場合によっては、説明に問題や変更の詳細情報へのリンクが記載されています。\nここで説明するAPIはOracle JDKで提供されます。Java SE 27プラットフォームの完全な実装に加え、Javaアプリケーションの開発、デバッグ、モニタリングをサポートする追加のJava APIが含まれています。Java SE 27およびJDK 27の重要な拡張機能と新機能に関するもう一つの情報源は、Java SE 26とJava SE 27の間に行われた仕様変更を記録している\nJava SE 27 ( JSR 402)\nプラットフォーム仕様です。この文書には、仕様変更でもある新機能と拡張機能の説明が含まれています。また、JDK 27への移行時に遭遇する可能性のある互換性の問題も特定しています。\ncore-libs\u002Fjava.lang.foreign\n➜\n外部関数のダウンコール前に実行状態の初期化を可能にする\n(\nJDK-8378559\n)\nForeign Function and Memory APIが、ダウンコール前にスレッドローカル実行状態を初期化できるようになりました。これは、ダウンコール後にスレッドローカル実行状態を読み取るためにすでに使用できる、既存の呼び出し状態キャプチャ機構を補完します。実行状態の構造と内容はプラットフォームに依存し、\nLinker.Option.captureStateLayout()\nで説明されています。\n呼び出し状態キャプチャを\nLinker.Option.captureCallState(String... capturedState)\nで有効にすると、メモリー・セグメントがスレッドローカル・データのバッファーとして機能します。ダウンコールの前に、バッファーの内容を使用してスレッドローカル・データを初期化します。ダウンコールの直後に、スレッドローカル・データがバッファーにコピーされます。\n詳細情報と使用例については、JavaDoc APIドキュメントの\nLinker.Option.captureCallState(String... capturedState)\nを参照してください。\ncore-svc\u002Ftools\n➜\njcmdツール用Bash自動補完スクリプトを追加\n(\nJDK-8357439\n)\n\njcmd\n診断ツール用のBash自動補完スクリプトが追加されました。\nLinuxで自動補完を有効にするには、Bashプロンプトで\nsource \u003CJDK_HOME>\u002Fconf\u002Fbash-completion\u002Fjcmd\nを実行します。システム全体で利用できるようにするには、スクリプトを\n\u002Fusr\u002Fshare\u002Fbash-completion\u002Fcompletions\u002F\nディレクトリに配置します。\nhotspot\u002Fjfr\n➜\n-XX:FlightRecorderOptionsにヘルプを追加\n(\nJDK-8367584\n)\nJVMオプション\n-XX:FlightRecorderOptions\nが拡張され、利用可能なサブオプションを一覧表示する\nhelp\nオプションが追加されました。使用方法:\njava -XX:FlightRecorderOptions:help\nhotspot\u002Fjfr\n➜\n-XX:FlightRecorderOptions:redact-keyおよびredact-argumentオプションを追加\n(\nJDK-8367584\n)\nJDK 27以降、JFRは機密性の高いコマンドライン引数と、環境変数およびシステム・プロパティの初期値をデフォルトでマスキングします。アプリケーション固有のフィルターを次のオプションで追加することで、JFRがマスキングする情報を明示的に選択できます。\n-XX:FlightRecorderOptions:redact-key=+\u003Cfilter>\nおよび\n-XX:FlightRecorderOptions:redact-argument=+\u003Cfilter>\n。\nデフォルトのマスキング・フィルターを無効にするには、\n-XX:FlightRecorderOptions:redact-key=none,redact-argument=none\nを使用します。\n詳細については、\nJEP 536: JFRプロセス内データ・リダクション\nを参照してください。\nhotspot\u002Fruntime\n➜\n-XX:AOTMode=requiredを-XX:AOTMode=onの別名として追加\n(\nJDK-8374348\n)\nこのオプションの目的と効果を明確にするため、JVMオプション\n-XX:AOTMode=required\nが\n-XX:AOTMode=on\nの別名として追加されました。\n-XX:AOTMode=on\nは将来的に非推奨となり、削除されるため、代わりに\n-XX:AOTMode=required\nを使用してください。\nhotspot\u002Fsvc\n➜\n新しいjcmdコマンドVM.security_propertiesで実行時のアクティブなセキュリティ・プロパティを表示\n(\nJDK-8364182\n)\n新しい診断コマンド\nVM.security_properties\nが\njcmd\nツールに追加されました。このコマンドは、既存のシステム・プロパティ用\nVM.system_properties\nコマンドと同様に、実行中のJVMプロセスの現在のJavaセキュリティ・プロパティ一式を出力します。この拡張により、本番環境と開発環境でセキュリティ関連の構成問題を診断およびトラブルシューティングするための、簡単でスクリプト化可能な方法が提供されます。\nhotspot\u002Fsvc\n➜\nVM.infoとhs_err_pidログで現在のオープン・ファイル記述子数を報告\n(\nJDK-8359706\n)\n\njcmd\nVM.info\n診断コマンドの出力とHotSpotの致命的エラー・ログ (\nhs_err_pid\n) に、実行中のJavaプロセスで現在開いているファイル記述子の数が含まれるようになりました。サポート対象のプラットフォームでは、新しい出力は\nSYSTEM\nセクションにアクティブなファイル記述子数を表示します (例:\nオープン・ファイル記述子: 52\n)。この拡張により、UNIXプラットフォームにおけるリソース枯渇や\nファイルが多すぎます\nの問題の診断とトラブルシューティングが容易になります。\nプロセスの最大ファイル記述子数は、すでに同じ出力内で\nNOFILE\n値として報告されています (例:\nNOFILE 10240\u002Finfinity\n)。\nsecurity-libs\u002Fjava.security\n➜\n標準入力ストリームからの読み取りを制限するセキュリティ・プロパティjdk.security.password.allowSystemInを追加\n(\nJDK-8368692\n)\nコンソールが利用できない場合に、Javaプラットフォームが標準入力ストリームからパスワードを読み取れるかどうかを制御する、新しいセキュリティ・プロパティ\njdk.security.password.allowSystemIn\nが追加されました。通常、標準入力がリダイレクトされたファイルからリダイレクトされているか、プロセス間パイプに接続されていると、この状況が発生します。このプロパティが\nfalse\nに設定されている場合、コンソールなしで標準入力ストリームからパスワードを読み取ろうとすると例外がスローされます。デフォルト値は\ntrue\nです。このデフォルト値は将来のリリースで変更される可能性があります。\nこのプロパティは、\nkeytool\nや\njarsigner\nなどのパスワード入力を求めるツールと、\nTextCallbackHandler\nによって処理される\nPasswordCallback\nオブジェクトに適用されます。\nsecurity-libs\u002Fjava.security\n➜\n作成日をInstantとして取得するKeyStoreおよびKeyStoreSpiのメソッドを追加\n(\nJDK-8374808\n)\nエイリアス・エントリの作成日を\njava.time.Instant\n値として返す、新しいメソッドが\nKeyStore\nおよび\nKeyStoreSpi\nクラスに追加されました。\nKeyStore.getCreationInstant\nおよび\nKeyStoreSpi.engineGetCreationInstant\nです。\nsecurity-libs\u002Fjava.security\n➜\n最新のML-KEMおよびML-DSA秘密鍵エンコーディングのサポートを追加\n(\nJDK-8347938\n)\nJDKは、ML-KEMおよびML-DSA秘密鍵をPKCS #8形式でエンコードするようになりました。これは、次で定義されたDERエンコードASN.1 CHOICE形式を使用します\nRFC 9935のセクション6「秘密鍵形式」およびRFC 9881のセクション6「秘密鍵形式」。新しい2つのセキュリティ・プロパティ、jdk.mlkem.pkcs8.encodingおよびjdk.mldsa.pkcs8.encodingは、KeyPairGeneratorによる新しい鍵の生成時、またはKeyFactoryによる鍵の変換時に使用するエンコーディングを制御します。有効な値はseed、expandedKey、bothです（大文字と小文字は区別されません）。同じ名前のシステム・プロパティも指定されている場合は、セキュリティ・プロパティの値より優先されます。KeyFactoryで以前にエンコードされた秘密鍵をデコードする場合は、3つの形式すべてがサポートされます。\nこれらのアルゴリズムがJDK 24で導入された際、エンコーディング形式はexpandedKeyの値と同等でした。このリリースではデフォルト値がseedに変更されます。そのため、このJDKリリースで生成されたML-KEMおよびML-DSA秘密鍵は、デフォルトでは旧リリースで受け入れられなくなりますが、旧リリースで生成された鍵はこのリリースでも引き続き読み取れます。このJDKリリースで生成されたML-KEMおよびML-DSA秘密鍵を旧JDKリリースで受け入れられるようにするには、jdk.mlkem.pkcs8.encodingまたはjdk.mldsa.pkcs8.encodingプロパティ（用途に応じていずれか）をexpandedKeyに設定し、KeyFactory.translateKeyを使用して旧形式に変換してください。\nsecurity-libs\u002Fjavax.net.ssl\n➜\nZLIB TLS証明書圧縮のサポートを追加\n（JDK-8372526）\nJDKは、RFC 8879で規定されたzlib圧縮アルゴリズムによるTLS 1.3証明書圧縮をサポートするようになりました。この機能により、TLSハンドシェイク中に交換される証明書チェーンのサイズを削減できます。brotliおよびzstd圧縮アルゴリズムはサポートされません。\nTLS証明書圧縮はデフォルトで有効です。無効にするには、jdk.tls.client.disableExtensionsおよびjdk.tls.server.disableExtensionsシステム・プロパティにcompress_certificate拡張を追加します。たとえば、次のJavaコマンドライン・オプションを指定すると、クライアントとサーバーの両方でTLS証明書圧縮が無効になります。\n-Djdk.tls.client.disableExtensions=compress_certificate -Djdk.tls.server.disableExtensions=compress_certificate\nTOP\n削除された機能とオプション\nこのセクションでは、Java SE 27およびJDK 27で削除されたAPI、機能、オプションについて説明します。ここで説明するAPIはOracle JDKで提供されるものです。Oracle JDKにはJava SE 27プラットフォームの完全な実装に加え、Javaアプリケーションの開発、デバッグ、監視をサポートする追加のJava APIが含まれています。Java SE 27およびJDK 27の重要な拡張機能や新機能に関するもう1つの情報源は、Java SE 27（JSR 402）プラットフォーム仕様です。この仕様書には、Java SE 26からJava SE 27までの間に行われた仕様変更が記載されています。この文書には、ここで説明していない削除済みAPIや機能の特定情報も含まれています。以下の説明では、JDK 27への移行時に発生しうる互換性の問題も示すことがあります。\nJDK 27でクローズされたCSRの一覧は、「JDK 27で承認されたCSR」を参照してください。\ncore-libs\u002Fjava.lang\n➜\nプロセス実装からVFORK起動方式を削除（Linux）\n（JDK-8357089）\nLinuxでは、VFORK起動方式は本質的に危険なため、-Djdk.lang.Process.launchMechanism=VFORKコマンドライン・オプションが削除されました。利用者はこの方式の使用をやめ、デフォルトのPOSIX_SPAWN起動方式に依存するか、-Djdk.lang.Process.launchMechanism=FORKに置き換えてください。\ncore-libs\u002Fjava.util.concurrent\n➜\nThreadPoolExecutor.finalize()を削除\n（JDK-8371748）\njava.util.concurrent.ThreadPoolExecutorからfinalize()メソッドが削除されました。\nThreadPoolExecutor.finalize()は、ファイナライズの廃止に向けた非推奨化の一環としてJDK 9で非推奨になりました。JEP 421を参照してください。このメソッドはJDK 11で「何もしない」ように再規定され、JDK 18で削除予定として非推奨になりました。\nこのメソッドが削除されたため、ThreadPoolExecutorを拡張し、super.finalize()を呼び出すfinalize()をオーバーライドする（またはfinalize()を直接呼び出す）既存コードは、今後Object.finalize()を呼び出します。削除されたThreadPoolExecutor.finalize()メソッドは検査例外を宣言していませんでしたが、Object.finalize()はthrows Throwableを宣言するため、このようなコードはコンパイルできなくなる場合があります。開発者には、ファイナライズの使用をやめることを強く推奨します。ただし必要であれば、try-catchブロックを使用してソース互換性の問題を回避できます。\ncore-libs\u002Fjava.util:i18n\n➜\njava.locale.useOldISOCodesシステム・プロパティを削除\n（JDK-8355522）\njava.util.Localeクラスでのjava.locale.useOldISOCodesシステム・プロパティのサポートが削除されました。JDK 17で導入されたこのプロパティを使うと、従来のISO 639言語コード（ヘブライ語はiw、イディッシュ語はji、インドネシア語はin）に戻すことができました。JDK 25で非推奨となり、JDK 27以降は、このプロパティを指定しても効果がなく、実行時に警告が発生します。引き続き旧コードに依存しているユーザーは、現在の標準コード（ヘブライ語はhe、イディッシュ語はyi、インドネシア語はid）への移行を推奨します。\ncore-libs\u002Fjavax.naming\n➜\n標準JNDIプロパティjava.naming.factory.control、java.naming.factory.object、java.naming.factory.stateが、JDKのLDAPサービス・プロバイダによってデフォルトで設定されなくなりました\n（JDK-8296183）\nJDKのjava.namingモジュールに属するJNDI\u002FLDAPサービス・プロバイダは、標準JNDIプロパティjava.naming.factory.control、java.naming.factory.object、java.naming.factory.stateにデフォルト値を設定しなくなります。\nJNDIファクトリのリストを指定するこれらの標準JNDIプロパティには、以前、LDAPサービス・プロバイダによってJDKに属さないクラスのクラス名が設定されていました。これらのクラスはアプリケーションのクラスパスに含まれていた可能性があります。この変更により、そのようなアプリケーションでこれらのファクトリが使用されなくなります。\nLDAPサービス・プロバイダがこれら3つのJNDIプロパティを設定することに依存していた可能性のあるアプリケーションは、「javax.naming.Context」の「プロバイダ・リソース・ファイル」セクションで説明されているように、これらの値を独自に設定する必要があります。\nglobalization\u002Ftranslation\n➜\n古い翻訳リソースを削除\n（JDK-8381436）\n古くなったローカライズ済みリソースがJDKソース・リポジトリから削除されました。\nJDKには複数のコンポーネント向けにローカライズ済みリソース・ファイルが含まれています。しかし、英語、日本語、ドイツ語、簡体字中国語以外のローカライズ済みリソース・ファイルは保守されていません。時間の経過とともに、これらのファイルは英語版との同期が取れなくなっています。たとえば、保守されていないリソース・ファイルを含むビルドでは、javaランチャーの--helpオプションの出力に、保守されていない言語での--enable-previewの情報が含まれないことがあります。\nこれらのローカライズ済みリソース・ファイルは削除されました。この変更の例外はjava.desktopモジュールで、保守されていないローカライズ済みリソース・ファイルも引き続き利用できます。その結果、これまで保守されていない言語でメッセージを表示していたビルドのユーザーには、代わりに英語の出力が表示されることがあります。\nhotspot\u002Fcompiler\n➜\nJVMコンパイラ・インタフェース（JVMCI）を削除\n（JDK-8382582）\n実験的なJVMコンパイラ・インタフェース（JVMCI）がこのリリースで削除されました。変更には、HotSpot JVMからのJVMCIコードの削除、モジュールjdk.internal.vm.ci、jdk.graal.compiler、jdk.graal.compiler.managementの削除、JVMCI固有のJITコンパイル・ポリシー、configureの機能選択フラグ、および文字列JVMCIを含むすべてのフラグと-XX:+UseGraalJITの削除が含まれます。\ntools\u002Flauncher\n➜\n-noclassgc、-noverify、-verifyremote、-Xverify:noneオプションを削除\n（JDK-8373481）\n非推奨となっていたjavaランチャー・オプション-noclassgc、-noverify、-verifyremote、およびHotSpot VMオプション-Xverify:noneが削除されました。\njavaの起動時に-noclassgcを使用していたアプリケーションは、同等の-Xnoclassgcの使用を検討できます。同様に、-verifyremoteを使用していたアプリケーションは、代わりに-Xverify:remoteの使用を検討できます。\n-noverifyまたは-Xverify:noneオプションに代わるものはありません。アプリケーションでは今後これらを使用しないでください。\nTOP\n解決された注目すべき問題\ncore-libs\u002Fjava.util:i18n\n➜\nWindowsでTimeZone.getDefault()が古いIDを返す（Asia\u002FCalcutta）\n（JDK-8377013）\nWindowsでTimeZone.getDefault()が返すデフォルトのタイムゾーンが、最新のIANA TZデータベースIDを反映し、現在のIANA定義と一致するようになりました。以前はインドなど一部の地域で、メソッドが古いID（例：「Asia\u002FCalcutta」）を返していましたが、現在は正しいID（例：「Asia\u002FKolkata」）を返します。\nhotspot\u002Fgc\n➜\nG1のMinHeapFreeRatioおよびMaxHeapFreeRatioのデフォルト値を変更\n（JDK-8238686）\nG1ガベージ・コレクタは、-XX:MinHeapFreeRatioおよび-XX:MaxHeapFreeRatioオプションのデフォルト値を、それぞれ40および70から0および100に変更します。その結果、これらの制約によるG1ヒープのサイズ変更は、デフォルトで実質的に無効になります。\n以前のデフォルト値では、Full GC後にヒープの拡張または縮小が発生し、不必要なサイズ変更を引き起こす可能性がありました。特に、System.gc()を頻繁に呼び出すアプリケーションでは、これらのオプションによりFull GCでヒープ・サイズが変化し、その変更が通常のヒープ・サイズ決定アルゴリズムによって直ちに取り消される場合がありました。\n-XX:MinHeapFreeRatioまたは-XX:MaxHeapFreeRatioを明示的に設定したアプリケーションでは、指定した設定に基づくヒープのサイズ変更動作が維持されます。\nTOP\nその他の注意事項\n以下の注意事項では、このリリースに関する追加の変更や情報について説明します。場合によっては、問題や変更の詳細情報へのリンクも記載しています。\ncore-libs\u002Fjava.net\n➜\nHttpServerの動作を文字列プレフィックス照合からパス・プレフィックス照合に変更\n（JDK-8272758）\n受信リクエストのパスをHttpContextのパスと照合する際の、JDK組み込みcom.sun.net.httpserver.HttpServer実装の動作が、文字列プレフィックス照合からパス・プレフィックス照合に変更されました。つまり、リクエスト・パスはコンテキスト・パスで始まり、照合されるすべてのパス・セグメントが一致する必要があります。たとえば、コンテキスト・パス\u002Ffooは、リクエスト・パス\u002Ffoo、\u002Ffoo\u002F、\u002Ffoo\u002Fbarには一致しますが、\u002Ffoobarには一致しません。新たに導入されたsun.net.httpserver.pathMatcherシステム・プロパティを使用すると、従来の動作である文字列プレフィックス照合を有効にできます。このプロパティと旧動作を復元する機能は、将来のリリースで削除される可能性があります。\ncore-libs\u002Fjava.time\n➜\n定義済みISO-8601フォーマッタが短いゾーン・オフセットをサポート\n（JDK-8210336）\nゾーン・オフセットを受け付けるDateTimeFormatterクラスの定義済みISO-8601ベースのフォーマッタ（例：ISO_DATE）が、解析時に短いゾーン・オフセットをサポートするようになりました。以前のリリースでは、秒やナノ秒のないオフセット（例：+01）を解析すると、一部のISOフォーマッタでDateTimeParseExceptionが発生しました。現在は、ゾーン・オフセットを受け付けるすべての定義済みISOフォーマッタで、これらのオフセットを正常に解析できます。\ncore-libs\u002Fjava.util\n➜\nリンク・エラー発生時にServiceLoaderがServiceConfigurationErrorをスローするよう変更\n（JDK-8196182）\nサービス・プロバイダの反復処理中にNoClassDefFoundErrorまたはその他のリンク・エラーが発生した場合、ServiceLoaderは一貫してServiceConfigurationErrorをスローするように変更されました。\nサービス・プロバイダのストリームを消費しているときにリンク・エラーが発生した場合も、ServiceConfigurationErrorがスローされます。\ncore-libs\u002Fjava.util.jar\n➜\nGZIPInputStreamがJDK 23以前の先読み動作を復元\n（JDK-8385924）\n現在のメンバーの後に追加のGZIPメンバーが続くかどうかを判定するため、java.util.zip.GZIPInputStreamは現在のメンバーのトレーラを読み取った後、次のメンバーを確認します。\nJDK 23より前のリリースでは、GZIPInputStreamは次のメンバー・ヘッダーを読み取ろうとする前に、基盤ストリームでInputStream.available()を呼び出していました。JDK 23ではこの動作が変更され（JDK-7036144を参照）、available()の呼び出しを省略して、代わりに直接読み取りを試みるようになりました。\nこの変更により一部のアプリケーションで互換性の問題が生じたため、GZIPInputStreamはJDK 23以前の動作に戻されました。次のメンバー・ヘッダーを読み取ろうとする前に、再びInputStream.available()を呼び出します。\n新しいシステムプロパティ\njdk.util.gzip.tryReadAheadAfterTrailer\nが追加されました。このプロパティを\ntrue\nに設定すると、JDK 23以前の動作が復元されます。\nGZIPInputStream\nは、最初に\nInputStream.available()\nを呼び出すことなく、次のメンバーヘッダーの読み取りを試みます。このプロパティは、この動作に依存するアプリケーションを対象としています。\ncore-libs\u002Fjava.util.jar\n➜\nZipOutputStream.putNextEntry は、エントリー名またはコメントをエンコードできない場合に ZipException をスローするようになりました\n(\nJDK-8380452\n)\nZipOutputStream.putNextEntry\nは、\nZipEntry\nの名前またはコメント文字列にマッピングできない文字が含まれ、\nZipOutputStream\nの文字セットを使用してエンコードできない場合に、\nZipException\nをスローするようになりました。\nこのリリースより前は、マッピングできない名前があると\nZipOutputStream.putNextEntry\nは\nIllegalArgumentException\nをスローしていました。同様に、マッピングできないコメントがあると、\nZipOutputStream.finish\nまたは\nZipOutputStream.close\nから\nIllegalArgumentException\nがスローされていました。\nこのような形式エラーに対して\nIllegalArgumentException\nを捕捉しているコードは、代わりに指定された\nZipException\nを捕捉するよう更新してください。\ncore-libs\u002Fjava.util:collections\n➜\nSpliterator および Stream から得た空の TreeMap と TreeSet の部分集合で NullPointerException がスローされるように\n(\nJDK-8376698\n)\nTreeMap\nおよび\nTreeSet\nの空の部分集合では、null アクションを\nStream.forEach\n、\nSpliterator.forEachRemaining\n、または\nSpliterator.tryAdvance\nに渡すと、\nNullPointerException\nがスローされるようになりました。以前のリリースでは、\nTreeMap\nおよび\nTreeSet\nの部分集合に対する\nSpliterator\nと\nStream\nの実装は、部分集合が空の場合、仕様で要求されている\nNullPointerException\nをスローせず、null アクションを渡されても\nfalse\nを返すか、正常に完了していました。\ncore-libs\u002Fjava.util:i18n\n➜\nCLDR バージョン 48.2 のサポート\n(\nJDK-8371842\n)\nUnicode Consortium の CLDR に基づくロケールデータがバージョン 48.2 にアップグレードされました。通常のロケールデータの追加や翻訳の変更に加え、上流の CLDR からの注目すべき変更があり、日付、時刻、数値の書式に影響します。\nCLDR-19106\nzh_Hant および yue で日付と時刻が判読不能\nCLDR-13986\nfr_CH: 私見では、書式は CHF XXX'XXX.00 とすべき\nCLDR-19280\nBC が恒久的な夏時間へ移行\nロケールデータは、今後の CLDR リリースで変更される可能性があることに注意してください。すべてのロケールデータの変更が JDK に影響するわけではありませんが、ユーザーはリリース間での安定性を前提としないでください。詳細については、\nUnicode Consortium の CLDR リリースノート\nを参照し、ロケールデータの差分について\nhttps:\u002F\u002Funicode-org.atlassian.net\nを検索してください。\ncore-libs\u002Fjavax.naming\n➜\njavax.naming.event.NamingEvent の実装にイベントを配信するスレッドは、コンテキストクラスローダーにシステムクラスローダーを使用\n(\nJDK-8273874\n)\n\njavax.naming.ldap.LdapContext\nに登録された\njavax.naming.event.NamingListener\nの実装にイベントを配信する\nThread\nは、スレッドのコンテキストクラスローダー（\nThread.getContextClassLoader\nを参照）としてシステムクラスローダーが設定されるようになりました。\n実行時の組み込みクラスローダー\nを参照してください。\ncore-svc\u002Fjava.lang.management\n➜\nJSON 形式のスレッドダンプで、スレッド識別子、スレッド数、プロセス識別子が数値として生成されるように\n(\nJDK-8381002\n)\n\ncom.sun.management.HotSpotDiagnosticMXBean.dumpThreads\nおよび\njcmd\nの\nThread.dump_to_file\nコマンドで生成される JSON 形式のスレッドダンプでは、スレッド識別子、スレッド数、プロセス識別子の JSON 値が数値として生成されるようになりました。例:\n{ \"tid\": 3, ...  }\n。以前は値は文字列として生成されていました。JSON 形式のスレッドダンプを解析するプログラムは、更新が必要になる場合があります。\nこの変更に伴い、\nthreadDump\nオブジェクトにスレッドダンプ形式用の\nformatVersion\nというメンバーが追加されました（値は 2）。スレッドダンプ形式の進化に応じて、この値も更新されます。\ncore-svc\u002Fjava.lang.management\n➜\nRuntimeMXBean.getInputArguments() メソッドが、設定ファイル由来の引数に -XX 接頭辞を追加するように\n(\nJDK-8378110\n)\n\nRuntimeMXBean.getInputArguments()\nは、設定ファイル経由で渡された引数に\n-XX:\n接頭辞を追加するようになりました。\nRuntimeMXBean.getInputArguments()\nは、コマンドラインで渡された引数に加え、設定ファイル（\n-XX:Flags=\u003Cpath>\n）で指定された引数も返します。以前は、設定ファイル由来の引数は\n-XX:\n接頭辞なしで返されていました。例:\n+UseG1GC\n。現在は、次のように\n-XX:\n接頭辞付きで返されます。例:\n-XX:+UseG1GC\n。\nhotspot\u002Fgc\n➜\n-XX:InitiatingHeapOccupancyPercent を -XX:G1IHOP に名称変更\n(\nJDK-8227106\n)\nコマンドラインオプション\n-XX:InitiatingHeapOccupancyPercent\nは、G1 ガベージコレクターでの用途を反映するため、\n-XX:G1IHOP\nに名称変更されました。\n旧オプション\n-XX:InitiatingHeapOccupancyPercent\nは後方互換性のため引き続き利用できますが、このエイリアスは非推奨になりました。\nhotspot\u002Fjfr\n➜\nJFR の jdk.SystemProcess イベントがコマンドライン引数を出力しなくなりました\n(\nJDK-8384164\n)\n同じコンピューター上で実行中のプロセスから機密情報が漏えいするのを防ぐため、\njdk.SystemProcess\nイベントはコマンドライン引数を出力しなくなりました。プロセス ID とプロセス名は引き続きイベントに含まれ、通常はトラブルシューティングに十分です。\nhotspot\u002Fjfr\n➜\nJFR イベント jdk.OldObjectSample が Generational ZGC で無効化\n(\nJDK-8382740\n)\nGenerational ZGC の使用時は、JFR イベント\njdk.OldObjectSample\nが無効になります。\nこの組み合わせでは許容できないパフォーマンスオーバーヘッドが発生します。これは、実装が弱いハンドルに依存しており、Generational ZGC ではそれらが旧世代でのみ処理されるためです。\nhotspot\u002Fruntime\n➜\nコンパクトオブジェクトヘッダーがデフォルトで有効に\n(\nJDK-8360700\n)\nコンパクトオブジェクトヘッダーは、JDK 24 で\nJEP 450\nを通じて導入されました。この機能がデフォルトで有効になり、アプリケーションの Java ヒープ占有量を削減し、パフォーマンスを向上させる可能性があります。\n-XX:-UseCompactObjectHeaders\nフラグで引き続き無効にできますが、このフラグは今後のリリースで非推奨化され、削除される予定です。\nJDK イメージの CDS アーカイブである\nclasses_coh.jsa\nおよび\nclasses_nocoops_coh.jsa\nは同等の起動性能を提供し、デフォルトの\nUseCompactObjectHeaders\nが有効な状態で構成されています。この機能を無効にした場合に備えて、別の CDS アーカイブも提供されています。\nhotspot\u002Fruntime\n➜\nUseCompressedClassPointers オプションが廃止予定になりました\n(\nJDK-8363996\n)\nHotSpot JVM オプション\nUseCompressedClassPointers\nは JDK 25 で非推奨になり、JDK 27 で廃止予定となりました。圧縮クラスポインターモードまたは非圧縮クラスポインターモードを使うために、このオプションを Java コマンドラインで指定すると、次の警告が表示されます。\nIgnoring option UseCompressedClassPointers; support was removed in 27.0\n。\nJVM は Java オブジェクト内のクラスポインターを常に圧縮するようになりました。\nhotspot\u002Fsvc-agent\n➜\nMethodData の表示と printmdo コマンドに対する Serviceability Agent のサポートを削除\n(\nJDK-8377797\n)\nServiceability Agent（SA）の\nprintmdo\nコマンドが削除されました。「printmdo」は、JVM 内部のコンパイラ情報である\nMethodData\nを表示するための\nclhsdb\nツールのサブコマンドです。\nsecurity-libs\u002Fjava.security\n➜\nWISeKey Global GB および GC ルート CA 証明書を追加\n(\nJDK-8372351\n)\n次のルート証明書が\ncacerts\nトラストストアに追加されました。\n+ WISeKey\n\n  + wisekeyglobalrootgbca\n    DN: CN=OISTE WISeKey Global Root GB CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\n\n+ WISeKey\n  + wisekeyglobalrootgcca\n    DN: CN=OISTE WISeKey Global Root GC CA, OU=OISTE Foundation Endorsed, O=WISeKey, C=CH\nsecurity-libs\u002Fjava.security\n➜\nHSS\u002FLMS の追加パラメーターセット\n(\nJDK-8369917\n)\nHSS\u002FLMS 署名アルゴリズムは、当初\nRFC 8554\nで定義されたものに加えて、\nRFC 9858\nで定義された追加パラメーターセットをサポートするようになりました。これらの新しいパラメーターセットでは、署名サイズを小さくできます。\nsecurity-libs\u002Fjava.security\n➜\n証明書失効リスト（CRL）のダウンロードサイズを制限\n(JDK-8381796（非公開）)\n新しいシステムおよびセキュリティプロパティ\ncom.sun.security.crl.maxSize\nが追加されました。このプロパティは、パス検証時に CRL Distribution Points 証明書拡張の URI 経由でダウンロードされる CRL の最大長を制限します。プロパティの値は、DER エンコードされた CRL のサイズ（バイト単位）です。LDAP など複数値の応答を返せるプロトコルでは、サイズのしきい値は単一の検索クエリからダウンロードされたすべての CRL の合計です。この長さを超える CRL は、証明書パス検証中に処理されません。このサイズ制限は、ネットワーク以外の手段でインポートされた CRL には適用されません。負の値を指定すると、このサイズ制限は無効になります。数値以外の値は無視され、代わりにデフォルトサイズが使用されます。デフォルトのサイズ制限は 20 MiB です。セキュリティプロパティとシステムプロパティの両方が設定されている場合は、システムプロパティが優先されます。\njava.security.debug=certpath\nを設定して証明書パスのログ記録を有効にすると、現在のサイズ制限と破棄された CRL が出力されます。\nsecurity-libs\u002Fjavax.crypto\n➜\nX25519 鍵共有と Ed25519 署名アルゴリズムの大幅な性能向上\n(\nJDK-8378893\n)\nこのリリースでは Curve25519 のフィールド演算が最適化され、X25519 の鍵生成と鍵共有、および Ed25519 の鍵生成と署名で顕著な性能向上が得られました。その結果、次の向上が測定されました。\nAArch64 アーキテクチャ\nX25519 鍵生成: +55%\nX25519 鍵共有: +51%\nX25519 を使用した TLS ハンドシェイク - 再開: +36%\nX25519 を使用した TLS ハンドシェイク - 再開なし: +17%\nEd25519 鍵生成: +48%\nEd25519 署名: +49%\nx86_64 アーキテクチャ\nX25519 鍵生成: +50%\nX25519 鍵共有: +50%\nX25519 を使用した TLS ハンドシェイク - 再開: +28%\nX25519 を使用した TLS ハンドシェイク - 再開なし: +14%\nEd25519 鍵生成: +46%\nEd25519 署名: +46%\n性能測定には、次のベンチマークを使用しました。\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.XDH\nmicro:org.openjdk.bench.javax.crypto.full.KeyAgreementBench.XDH\nmicro:org.openjdk.bench.javax.crypto.full.KEMBench.JSSE_DHasKEM\nmicro:org.openjdk.bench.java.security.SSLHandshake\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.EdDSA\nmicro:org.openjdk.bench.javax.crypto.full.SignatureBench.EdDSA\nsecurity-libs\u002Fjavax.crypto\n➜\nML-KEM および ML-DSA アルゴリズムの大幅な性能向上\n(\nJDK-8384353\n)\nAVX-512 をサポートする x86_64 システム向けに、このリリースでは SHA-3 のイントリンシックが最適化されました。ML-KEM および ML-DSA アルゴリズムは SHA-3 を多用します。その結果、ML-KEM の鍵生成、デカプセル化、カプセル化、および ML-DSA の鍵生成、署名、検証で、次のような顕著な性能向上が得られました。\nAVX-512\nML-KEM\n鍵生成: +48%\nML-KEM\nデカプセル化: +47%\nML-KEM\nカプセル化: +46%\nML-DSA\n鍵生成: +60%\nML-DSA\n署名: +38%\nML-DSA\n検証: +74%\n性能測定には、次のベンチマークを使用しました。\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.MLKEM\nmicro:org.openjdk.bench.javax.crypto.full.KEMBench.MLKEM\nmicro:org.openjdk.bench.javax.crypto.full.KeyPairGeneratorBench.MLDSA\nmicro:org.openjdk.bench.javax.crypto.full.SignatureBench.MLDSA\nsecurity-libs\u002Fjavax.net.ssl\n➜\nTLS 名前付きグループのデフォルトリストから ffdhe6144 と ffdhe8192 を削除\n(\nJDK-8373426\n)\nffdhe6144 と ffdhe8192 は、実際にはほとんど使用されず、処理に追加のホストリソースを必要とするため、TLS 名前付きグループのデフォルトリストから削除されました。システムプロパティ\njdk.tls.namedGroups\nを設定するか、TLS ソケット接続の構成時に\nSSLParameters.setNamedGroups\nメソッドを呼び出すことで、デフォルトの名前付きグループリストに追加できます。\nsecurity-libs\u002Fjavax.net.ssl\n➜\nTLS で有効な javax.net.debug オプションの組み合わせを適用\n(\nJDK-8044609\n)\nTLS\u002FSSL デバッグログ用の\njavax.net.debug\nシステムプロパティの解析が更新され、文書化されたオプションとサブオプションの関係が厳密に適用されるようになりました。\nverbose\n、\npacket\n、\nplaintext\nなどのサブオプションには、それぞれ対応する親オプションが必要になり、有効な組み合わせのみが反映されます。無効または未サポートの組み合わせは、警告なしに無視されます。\n以前は、一部のサブオプションを単独で、または誤った組み合わせで使用できましたが、これは意図された設計に反していました。ヘルプメッセージ（\n-Djavax.net.debug=help\n）も更新され、サポート対象および廃止された項目がすべて正確に反映されるようになりました。\nこれまで文書化されていない、または無効な組み合わせ（たとえば、次の指定のみ）に依存していたユーザーは、文書化された使用方法に合わせて設定を更新する必要があります。\n-Djavax.net.debug=verbose\n有効なオプションの最新一覧と正しい使用例については、更新されたヘルプ出力を参照してください。\nsecurity-libs\u002Fjavax.net.ssl\n➜\nTLS 1.3の鍵合意で汎用鍵アルゴリズムを使用\n（\nJDK-8377550\n）\nTLS 1.3の鍵合意が変更され、Diffie-Hellman共有秘密に対して\nTlsPremasterSecret\nアルゴリズムではなく、\nGeneric\n鍵アルゴリズムを使用するようになりました。この実装上の詳細は、SunJSSEプロバイダのユーザーには影響しません。\nGeneric\n鍵をサポートしないJCEプロバイダのユーザーは、TLS 1.3ハンドシェイクが失敗し、「Could not generate secret」というメッセージを含む\nSSLHandshakeException\nが発生する場合があります。\n互換性の問題が発生した場合は、システムプロパティ\njdk.tls.t13KeyDerivationAlgorithm\nに\nTlsPremasterSecret\nを設定すると、元の動作に戻せます。\nsecurity-libs\u002Fjavax.net.ssl\n➜\nTLS 1.3向けポスト量子ハイブリッド鍵交換\n（\nJDK-8314323\n）\nTLS 1.3向けのハイブリッド鍵交換アルゴリズムが実装され、安全なネットワーク通信を必要とするJavaアプリケーションのセキュリティが強化されました。これらのアルゴリズムは、耐量子アルゴリズムと従来のアルゴリズムを組み合わせることで、将来の量子コンピュータ攻撃から防御します。\njavax.net.ssl\nAPIを使用するアプリケーションは、コードを変更することなく、デフォルトでこれらの改良されたアルゴリズムの恩恵を受けられます。\n次の3つの新しいハイブリッド鍵交換アルゴリズムがサポートされます。\nX25519MLKEM768\n、\nSecP256r1MLKEM768\n、および\nSecP384r1MLKEM1024\n。このうち、\nX25519MLKEM768\nのみがデフォルトの名前付きグループ一覧の先頭に配置され、最も優先されるグループとなります。\n詳細は、\nJEP 527: TLS 1.3向けポスト量子ハイブリッド鍵交換\nを参照してください。\ntools\u002Fjavac\n➜\nJavaランチャーは、別パッケージのパッケージプライベートなmainメソッドを継承しなくなりました\n（\nJDK-8377004\n）\nクラスの起動時に、別のパッケージでパッケージプライベートな\nmain\nメソッドが定義されている場合、\njava\nランチャーは呼び出す\nmain\nメソッドを正しく判定するようになりました。\njava\nランチャーは、そのような\nmain\nメソッドを呼び出さなくなりました。\ntools\u002Fjavac\n➜\nvar変数のASTモデルがソースコードにより忠実に\n（\nJDK-8268850\n）\nJavaソースコードを抽象構文木（AST）でモデル化するCompiler Tree APIが、型が推論される変数をより正確にモデル化するよう変更されました。詳細は\ncom.sun.source.tree.VariableTree.getType()\nを参照してください。\ntools\u002Fjavac\n➜\nDocTrees.getElementがjavax.lang.model APIとの一貫性を向上\n（\nJDK-8284315\n）\n\nDocTrees.getElement(DocTreePath)\nの実装が\njavax.lang.model\nAPIにより沿うよう更新されました。特に、このメソッドは引数がプリミティブ型または配列型を参照する場合に\nnull\nを返すようになりました。以前は、プリミティブ型に対して無効な\nTypeElement\nを返し、配列型に対しては要素型を返していました。\nプリミティブ型または配列型を参照する\nDocTreePath\nに対して有効な\nTypeMirror\nインスタンスを取得するには、\nDocTrees.getType(DocTreePath)\nを使用できます。\ntools\u002Fjavac\n➜\nJavaコンパイラがASCII SUB文字の後にソースコードに現れる文字を正しく拒否\n（\nJDK-8371873\n）\n\njavac\nは、ソースファイル内の末尾のASCII SUB（\nU+001A\n、control-Z）文字に関するJLSの規則を適用するようになりました。\nU+001A\nが現れ、その後に文字が続く場合、末尾の文字は黙って無視されず、不正な入力として扱われます。\ntools\u002Fjavac\n➜\nvarラムダパラメータのTYPE_USE注釈を拒否\n（\nJDK-8371683\n）\n型注釈、特に\n@Target(TYPE_USE)\nを持ち、ローカル変数およびパラメータ宣言には適用できない注釈は、型が推論される（つまり\nvar\nを使用する）すべての変数で一貫して拒否されるようになりました。これにはラムダパラメータと拡張for文の変数が含まれます。\ntools\u002Fjavadoc(tool)\n➜\njavadocツールがdoc-filesのサブディレクトリをデフォルトでコピー\n（\nJDK-8347112\n）\n\njavadoc\nツールは、\ndoc-files\nディレクトリのサブディレクトリを生成された出力先に再帰的にコピーするようになりました。以前この動作を有効にするために使用されていた\n-docfilessubdirs\nオプションは不要となり、今後のリリースで削除される可能性があります。\n-excludedocfilessubdir\nオプションでは、引数に\n*\nを指定して、すべての\ndoc-files\nサブディレクトリをコピー対象から除外し、以前のデフォルト動作に戻せるようになりました。\nTOP\nOracle JDKとOpenJDKの違い\nOracle JDKとOpenJDKのバイナリを可能な限り近づけることを目標に掲げてきましたが、両者には依然としていくつかの違いがあります。\n現在の違いは次のとおりです。\nOracle JDKは「インストーラ」（\nmsi\n、\nrpm\n、\ndeb\nなど）を提供しています。これらはJDKバイナリをシステムに配置するだけでなく、更新規則を含み、場合によっては、（WindowsでのJAVA_HOMEなどの）共通環境変数の設定や、ファイルの関連付け（\n.jar\nファイルを\njava\nで起動するなど）といった一般的な設定も行います。OpenJDKは圧縮アーカイブ（\ntar.gz\nまたは\n.zip\n）のみで提供されます。\n使用状況のログ記録はOracle JDKでのみ利用できます。\nOracle JDKでは、サードパーティ製暗号プロバイダにJava Cryptography Extension（JCE）コード署名証明書による署名が必要です。OpenJDKでは、署名されていないサードパーティ製暗号プロバイダも引き続き使用できます。\n\njava -version\nの出力は異なります。Oracle JDKはjavaを返し、Oracle固有の識別子を含みます。OpenJDKはOpenJDKを返し、Oracle固有の識別子を含みません。\nOracle JDKは\nOracle No-Fee Terms and Conditions License\nのもとでリリースされます。OpenJDKは\nGPLv2wCP\nのもとでリリースされます。そのため、同梱されるライセンスファイルも異なります。\nOracle JDKはFreeTypeをFreeTypeライセンスのもとで配布し、OpenJDKはGPLv2のもとで配布します。そのため、\n\\legal\\java.desktop\\freetype.md\nの内容が異なります。\nOracle JDKにはJava cupとsteamのアイコンがあり、OpenJDKにはDukeのアイコンがあります。\nOracle JDKのソースコードには「ORACLE PROPRIETARY\u002FCONFIDENTIAL. Use is subject to license terms.」と記載されています。OpenJDKとともに配布されるソースコードには、代わりにGPLライセンス条項が記載されています。\n\n公式ソース: https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjavase\u002F27-relnote-issues.html\n","2026-09-15T16:50:12Z",3527,"2026-10-07T09:38:40.131182Z",[64],{"area":65,"items":66},"機能",[67,68,69,70,71],"TLS 1.3向けポスト量子ハイブリッド鍵交換。","コンパクトオブジェクトヘッダーがデフォルトで有効。","すべての環境でG1がデフォルトのGCに。","JFRはプロセス外への送信前に機密データを削除。","プリミティブ型パターンマッチングは引き続きプレビュー機能。","editorial","en-US","JDK 27では、ポスト量子ハイブリッドTLS鍵交換、コンパクトオブジェクトヘッダーのデフォルト化、全環境でのG1のデフォルト化、JFRによるプロセス内データの秘匿化が導入されます。","",{"locale":77,"machineTranslated":23,"sourceLocale":73,"status":78},"ja-JP","manual","27","Oracle Java Standard Edition Development Kit",[80,82],"oracle-jdk",[84,111,136,162,187,213,238,264,289,315,340,366,391,417],{"arch":38,"artifacts":85,"conflictsWith":99,"dependsOn":102,"downloadSha256":108,"downloadUrl":109,"macos":79,"requiresRosetta":23,"tag":110,"version":79},{"apps":86,"binaries":87,"entries":88,"pkgs":98},[],[],[89,94],{"declaration":90,"phase":13,"sources":93,"type":13},{"uninstall":91},[92],{"pkgutil":12},[],{"declaration":95,"phase":19,"sources":97,"type":21},{"pkg":96},[18],[18],[18],{"casks":100,"formulae":101},[],[],{"arch":103,"casks":104,"formulae":105,"requirements":106},[38],[],[],{"macos":107},{},"4f875ea6a8c198f42ada6aa9adafe9cc670cf6cb2c5fdd59e5158679c21efef2","https:\u002F\u002Fdownload.oracle.com\u002Fjava\u002F27\u002Farchive\u002Fjdk-27_macos-x64_bin.dmg","golden_gate",{"arch":37,"artifacts":112,"conflictsWith":126,"dependsOn":129,"downloadSha256":47,"downloadUrl":49,"macos":79,"requiresRosetta":23,"tag":135,"version":79},{"apps":113,"binaries":114,"entries":115,"pkgs":125},[],[],[116,121],{"declaration":117,"phase":13,"sources":120,"type":13},{"uninstall":118},[119],{"pkgutil":12},[],{"declaration":122,"phase":19,"sources":124,"type":21},{"pkg":123},[18],[18],[18],{"casks":127,"formulae":128},[],[],{"arch":130,"casks":131,"formulae":132,"requirements":133},[37],[],[],{"macos":134},{},"arm64_golden_gate",{"arch":38,"artifacts":137,"conflictsWith":151,"dependsOn":154,"downloadSha256":108,"downloadUrl":109,"macos":160,"requiresRosetta":23,"tag":161,"version":79},{"apps":138,"binaries":139,"entries":140,"pkgs":150},[],[],[141,146],{"declaration":142,"phase":13,"sources":145,"type":13},{"uninstall":143},[144],{"pkgutil":12},[],{"declaration":147,"phase":19,"sources":149,"type":21},{"pkg":148},[18],[18],[18],{"casks":152,"formulae":153},[],[],{"arch":155,"casks":156,"formulae":157,"requirements":158},[38],[],[],{"macos":159},{},"26","tahoe",{"arch":37,"artifacts":163,"conflictsWith":177,"dependsOn":180,"downloadSha256":47,"downloadUrl":49,"macos":160,"requiresRosetta":23,"tag":186,"version":79},{"apps":164,"binaries":165,"entries":166,"pkgs":176},[],[],[167,172],{"declaration":168,"phase":13,"sources":171,"type":13},{"uninstall":169},[170],{"pkgutil":12},[],{"declaration":173,"phase":19,"sources":175,"type":21},{"pkg":174},[18],[18],[18],{"casks":178,"formulae":179},[],[],{"arch":181,"casks":182,"formulae":183,"requirements":184},[37],[],[],{"macos":185},{},"arm64_tahoe",{"arch":38,"artifacts":188,"conflictsWith":202,"dependsOn":205,"downloadSha256":108,"downloadUrl":109,"macos":211,"requiresRosetta":23,"tag":212,"version":79},{"apps":189,"binaries":190,"entries":191,"pkgs":201},[],[],[192,197],{"declaration":193,"phase":13,"sources":196,"type":13},{"uninstall":194},[195],{"pkgutil":12},[],{"declaration":198,"phase":19,"sources":200,"type":21},{"pkg":199},[18],[18],[18],{"casks":203,"formulae":204},[],[],{"arch":206,"casks":207,"formulae":208,"requirements":209},[38],[],[],{"macos":210},{},"15","sequoia",{"arch":37,"artifacts":214,"conflictsWith":228,"dependsOn":231,"downloadSha256":47,"downloadUrl":49,"macos":211,"requiresRosetta":23,"tag":237,"version":79},{"apps":215,"binaries":216,"entries":217,"pkgs":227},[],[],[218,223],{"declaration":219,"phase":13,"sources":222,"type":13},{"uninstall":220},[221],{"pkgutil":12},[],{"declaration":224,"phase":19,"sources":226,"type":21},{"pkg":225},[18],[18],[18],{"casks":229,"formulae":230},[],[],{"arch":232,"casks":233,"formulae":234,"requirements":235},[37],[],[],{"macos":236},{},"arm64_sequoia",{"arch":38,"artifacts":239,"conflictsWith":253,"dependsOn":256,"downloadSha256":108,"downloadUrl":109,"macos":262,"requiresRosetta":23,"tag":263,"version":79},{"apps":240,"binaries":241,"entries":242,"pkgs":252},[],[],[243,248],{"declaration":244,"phase":13,"sources":247,"type":13},{"uninstall":245},[246],{"pkgutil":12},[],{"declaration":249,"phase":19,"sources":251,"type":21},{"pkg":250},[18],[18],[18],{"casks":254,"formulae":255},[],[],{"arch":257,"casks":258,"formulae":259,"requirements":260},[38],[],[],{"macos":261},{},"14","sonoma",{"arch":37,"artifacts":265,"conflictsWith":279,"dependsOn":282,"downloadSha256":47,"downloadUrl":49,"macos":262,"requiresRosetta":23,"tag":288,"version":79},{"apps":266,"binaries":267,"entries":268,"pkgs":278},[],[],[269,274],{"declaration":270,"phase":13,"sources":273,"type":13},{"uninstall":271},[272],{"pkgutil":12},[],{"declaration":275,"phase":19,"sources":277,"type":21},{"pkg":276},[18],[18],[18],{"casks":280,"formulae":281},[],[],{"arch":283,"casks":284,"formulae":285,"requirements":286},[37],[],[],{"macos":287},{},"arm64_sonoma",{"arch":38,"artifacts":290,"conflictsWith":304,"dependsOn":307,"downloadSha256":108,"downloadUrl":109,"macos":313,"requiresRosetta":23,"tag":314,"version":79},{"apps":291,"binaries":292,"entries":293,"pkgs":303},[],[],[294,299],{"declaration":295,"phase":13,"sources":298,"type":13},{"uninstall":296},[297],{"pkgutil":12},[],{"declaration":300,"phase":19,"sources":302,"type":21},{"pkg":301},[18],[18],[18],{"casks":305,"formulae":306},[],[],{"arch":308,"casks":309,"formulae":310,"requirements":311},[38],[],[],{"macos":312},{},"13","ventura",{"arch":37,"artifacts":316,"conflictsWith":330,"dependsOn":333,"downloadSha256":47,"downloadUrl":49,"macos":313,"requiresRosetta":23,"tag":339,"version":79},{"apps":317,"binaries":318,"entries":319,"pkgs":329},[],[],[320,325],{"declaration":321,"phase":13,"sources":324,"type":13},{"uninstall":322},[323],{"pkgutil":12},[],{"declaration":326,"phase":19,"sources":328,"type":21},{"pkg":327},[18],[18],[18],{"casks":331,"formulae":332},[],[],{"arch":334,"casks":335,"formulae":336,"requirements":337},[37],[],[],{"macos":338},{},"arm64_ventura",{"arch":38,"artifacts":341,"conflictsWith":355,"dependsOn":358,"downloadSha256":108,"downloadUrl":109,"macos":364,"requiresRosetta":23,"tag":365,"version":79},{"apps":342,"binaries":343,"entries":344,"pkgs":354},[],[],[345,350],{"declaration":346,"phase":13,"sources":349,"type":13},{"uninstall":347},[348],{"pkgutil":12},[],{"declaration":351,"phase":19,"sources":353,"type":21},{"pkg":352},[18],[18],[18],{"casks":356,"formulae":357},[],[],{"arch":359,"casks":360,"formulae":361,"requirements":362},[38],[],[],{"macos":363},{},"12","monterey",{"arch":37,"artifacts":367,"conflictsWith":381,"dependsOn":384,"downloadSha256":47,"downloadUrl":49,"macos":364,"requiresRosetta":23,"tag":390,"version":79},{"apps":368,"binaries":369,"entries":370,"pkgs":380},[],[],[371,376],{"declaration":372,"phase":13,"sources":375,"type":13},{"uninstall":373},[374],{"pkgutil":12},[],{"declaration":377,"phase":19,"sources":379,"type":21},{"pkg":378},[18],[18],[18],{"casks":382,"formulae":383},[],[],{"arch":385,"casks":386,"formulae":387,"requirements":388},[37],[],[],{"macos":389},{},"arm64_monterey",{"arch":38,"artifacts":392,"conflictsWith":406,"dependsOn":409,"downloadSha256":108,"downloadUrl":109,"macos":415,"requiresRosetta":23,"tag":416,"version":79},{"apps":393,"binaries":394,"entries":395,"pkgs":405},[],[],[396,401],{"declaration":397,"phase":13,"sources":400,"type":13},{"uninstall":398},[399],{"pkgutil":12},[],{"declaration":402,"phase":19,"sources":404,"type":21},{"pkg":403},[18],[18],[18],{"casks":407,"formulae":408},[],[],{"arch":410,"casks":411,"formulae":412,"requirements":413},[38],[],[],{"macos":414},{},"11","big_sur",{"arch":37,"artifacts":418,"conflictsWith":432,"dependsOn":435,"downloadSha256":47,"downloadUrl":49,"macos":415,"requiresRosetta":23,"tag":441,"version":79},{"apps":419,"binaries":420,"entries":421,"pkgs":431},[],[],[422,427],{"declaration":423,"phase":13,"sources":426,"type":13},{"uninstall":424},[425],{"pkgutil":12},[],{"declaration":428,"phase":19,"sources":430,"type":21},{"pkg":429},[18],[18],[18],{"casks":433,"formulae":434},[],[],{"arch":436,"casks":437,"formulae":438,"requirements":439},[37],[],[],{"macos":440},{},"arm64_big_sur",{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},628,20,{"brewLag":446,"cadence":450,"count30d":448},{"compared":447,"earlierCount":448,"medianMinutes":449},3,1,153722867,"irregular",[],"https:\u002F\u002Fgithub.com\u002Fhomebrew\u002Fhomebrew-cask\u002Fblob\u002FHEAD\u002FCasks\u002Fo\u002Foracle-jdk.rb","macOSでJavaアプリケーションをコンパイル、実行、デバッグ、監視するための、OracleのJava Standard Editionランタイムおよび開発キットです。",{"locale":77,"machineTranslated":27,"sourceLocale":73,"status":455},"machine",{"arm64":27,"requiresRosetta":23,"status":457,"x86_64":27},"known",[459,460,461,462],"Java","JDK","Runtime","Development","homebrew\u002Fcask",null,[466,476,484,491,501],{"autoUpdates":23,"deprecated":23,"disabled":23,"displayName":467,"editorChoice":23,"installs30d":468,"isFont":23,"isLibrary":23,"kind":57,"machineTranslated":23,"name":469,"primaryCategory":470,"rank30d":471,"sourceLocale":73,"summary":472,"token":473,"version":474,"versionChangedAt":475},"Azul Zulu JDK 25",211,"Azul Zulu Java Standard Edition Development Kit",{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},491,"AzulのOpenJDK 25は、Java 25向けアプリにランタイム、コンパイラー、開発ツールを提供します。","zulu@25","25.0.4.1,25.36.205","2026-10-07T09:38:44.668496Z",{"autoUpdates":23,"deprecated":23,"disabled":23,"displayName":477,"editorChoice":23,"installs30d":478,"isFont":23,"isLibrary":23,"kind":57,"machineTranslated":23,"name":469,"primaryCategory":479,"rank30d":480,"sourceLocale":73,"summary":481,"token":482,"version":483,"versionChangedAt":475},"Azul Zulu JDK 11",147,{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},626,"Javaアプリの実行・開発向けAzul OpenJDK 11ディストリビューション。AppleシリコンとIntel対応のmacOSパッケージを提供。","zulu@11","11.0.32.1,11.90.205",{"autoUpdates":23,"deprecated":23,"disabled":23,"displayName":469,"editorChoice":23,"installs30d":485,"isFont":23,"isLibrary":23,"kind":57,"machineTranslated":27,"name":469,"primaryCategory":486,"rank30d":487,"sourceLocale":73,"summary":488,"token":489,"version":490,"versionChangedAt":475},122,{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},690,"Javaアプリケーションの開発と実行に使うAzulのOpenJDKディストリビューションです。コマンドラインツールを備えたmacOS用Java開発キットとしてインストールされます。","zulu","27.0.0,27.28.101",{"accentColor":492,"autoUpdates":23,"deprecated":23,"disabled":23,"displayName":493,"editorChoice":23,"iconUrl":494,"installs30d":495,"isFont":23,"isLibrary":23,"kind":57,"machineTranslated":27,"name":493,"primaryCategory":496,"rank30d":497,"sourceLocale":73,"summary":498,"token":499,"version":500,"versionChangedAt":62},"#0C334C","OpenWebStart","https:\u002F\u002Fcdn.opennavo.com\u002Ficons\u002Fuploads\u002Fd772a83bd552\u002Fc4687f71aacf-256.png",234,{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},454,"管理されたJavaランタイム、アプリケーションのキャッシュ、設定可能なセキュリティ設定を使用して、JNLPベースのJavaアプリケーションを実行します。","openwebstart","1.14.0",{"autoUpdates":23,"deprecated":23,"disabled":23,"displayName":502,"editorChoice":23,"installs30d":503,"isFont":23,"isLibrary":23,"kind":57,"machineTranslated":27,"name":504,"primaryCategory":505,"rank30d":506,"sourceLocale":73,"summary":507,"token":508,"version":509,"versionChangedAt":510},".NET Runtime",192,".Net Runtime",{"icon":26,"machineTranslated":27,"name":28,"slug":29,"sourceLocale":30},535,"macOSで.NETアプリケーションを実行するためのMicrosoftのクロスプラットフォームランタイムです。開発やビルドに使用するSDKツールは含まれません。","dotnet-runtime","10.0.12","2026-10-07T09:38:28.442235Z","\u003Cp>Oracle JDK は、Oracle による Java Standard Edition Development Kit の実装です。Java アプリケーションの構築、実行、デバッグ、監視に必要な Java ランタイムと開発ツールを提供します。開発者向けのランタイムであり、単体の Mac デスクトップエディターではありません。\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">macOS へのインストール\u003C\u002Fh3>\n\u003Cp>Oracle は、Intel x64 と Apple シリコン AArch64 の両方のインストール手順を公開しています。Homebrew の oracle-jdk cask は、JDK パッケージを含むバージョン付きの Oracle DMG をインストールします。記録されているデフォルトの配布ファイルは、Apple シリコン向けの JDK 27 インストーラーです。JDK は \u002FLibrary\u002FJava\u002FJavaVirtualMachines にインストールされます。\u003Ccode>java -version\u003C\u002Fcode> でデフォルトのランタイムを確認し、\u003Ccode>\u002Fusr\u002Flibexec\u002Fjava_home\u003C\u002Fcode> でコマンドライン開発に使用するインストール済みの JDK を選択します。\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">バージョンの選択と更新\u003C\u002Fh3>\n\u003Cp>バージョン指定のない cask は、現在の機能リリースに追従します。長期サポート版の JDK に固定されているわけではありません。Oracle のダウンロードページでは、JDK 27 が最新の機能リリース、JDK 25 が最新の LTS 系列とされています。同じ機能リリース系列で同時にインストールできる更新版は1つだけです。新しい更新版をインストールすると、古い更新版が置き換えられます。Oracle は、JDK のインストールを置き換える前に Java プロセスを停止することを推奨しています。\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">ライセンス\u003C\u002Fh3>\n\u003Cp>Homebrew は Oracle No-Fee Terms and Conditions へのリンクを掲載しています。Oracle によると、JDK 27 のバイナリは、この規約の下で、本番環境での使用と再配布を無償で行えます。この条件は、JDK 28 がこのリリースに取って代わる2027年3月まで適用されます。ライセンスとサポートの条件はリリース系列によって異なります。古い Oracle JDK バージョンにも同じ本番環境での使用条件が適用されるとは限りません。\u003C\u002Fp>\n\u003Ch3 class=\"on-md-heading-1\">ビジュアル素材\u003C\u002Fh3>\n\u003Cp>このパッケージがインストールするのは JDK であり、独立したエディターウィンドウを持つアプリケーションではありません。公式の macOS インストールガイドには、インストーラーの操作手順とターミナルコマンドが記載されています。実際の JDK アプリケーションのスクリーンショットや、固有のラスター形式のアプリアイコンは確認されていません。\u003C\u002Fp>\n\u003Cp>出典:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fdownloads\u002F\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F27\u002Finstall\u002Finstallation-jdk-macos.html\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\" target=\"_blank\" rel=\"noopener noreferrer\">https:\u002F\u002Fformulae.brew.sh\u002Fapi\u002Fcask\u002Foracle-jdk.json\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n"]