Heroku の Java サポートリファレンス
この記事の英語版に更新があります。ご覧の翻訳には含まれていない変更点があるかもしれません。
最終更新日 2025年03月19日(水)
Table of Contents
Heroku は Java のさまざまな実装で Java アプリケーションを実行でき、フレームワーク固有のワークフローのためのサポートを備えています。このドキュメントには、バージョンのサポート情報が記載されています。
Heroku が Java アプリケーションを認識して実行する一般的な動作に関する情報については、Heroku の Java の動作を参照してください。Heroku での一般的な Java サポートとは、すべてのフレームワークに対するサポートのことです。
フレームワーク固有のチュートリアルについては、次を参照してください。
Java バージョンの指定
アプリケーションに必要な OpenJDK メジャーバージョンを常に明示的に設定することをお勧めします。バージョンを設定しない場合は、スタックのデフォルトバージョンがインストールされます。デフォルトバージョンは時間の経過とともに変化するため、新しいデフォルトバージョンではアプリケーションのビルドに失敗する可能性があります。
各スタックの現在のデフォルトバージョンは次のとおりです。
heroku-20 |
heroku-22 |
heroku-24 |
---|---|---|
OpenJDK 8 | OpenJDK 8 | 最新の LTS (現在は OpenJDK 21) |
OpenJDK バージョンを明示的に設定するには、system.properties
というファイルをアプリケーションに追加します。そのファイル内で、java.runtime.version
プロパティをアプリの OpenJDK メジャーバージョンに設定します。
java.runtime.version=11
使用できるメジャーバージョンについては、サポートされている Java バージョンの表を参照してください。
OpenJDK バージョンをフルバージョンに固定することもできますが、特別な理由がない限り推奨されません。フルバージョンに固定すると、アプリはビルドごとに OpenJDK セキュリティアップデートを自動的に取得しなくなります。
フルバージョンを使用するには、java.runtime.version
プロパティをフルバージョン文字列に設定します。
java.runtime.version=1.8.0_412
サポートされている Java バージョン
各 OpenJDK メジャーバージョンと Heroku スタックで利用可能な最新バージョンについては、表を参照してください。選択した OpenJDK バージョンはアプリにバンドルされ、最終的なアプリのサイズに影響します。
赤色のテキストと背景でマークアップされている行は、サポートが完全に終了し、上流の保守担当からいかなる種類のアップデートも受け取っておらず、Heroku によるサポートが終了している OpenJDK バージョンを示しています。
OpenJDK バージョン | heroku-20 |
heroku-22 |
heroku-24 |
---|---|---|---|
OpenJDK 7 | 1.7.0_352 | 1.7.0_352 | - |
OpenJDK 8 | 1.8.0_442 | 1.8.0_442 | 1.8.0_442 |
OpenJDK 11 | 11.0.26 | 11.0.26 | 11.0.26 |
OpenJDK 13 | 13.0.14 | 13.0.14 | - |
OpenJDK 14 | 14.0.2 | - | - |
OpenJDK 15 | 15.0.10 | 15.0.10 | - |
OpenJDK 16 | 16.0.2 | - | - |
OpenJDK 17 | 17.0.14 | 17.0.14 | 17.0.14 |
OpenJDK 18 | 18.0.2.1 | 18.0.2.1 | - |
OpenJDK 19 | 19.0.2 | 19.0.2 | - |
OpenJDK 20 | 20.0.2 | 20.0.2 | - |
OpenJDK 21 | 21.0.6 | 21.0.6 | 21.0.6 |
OpenJDK 22 | 22.0.2 | 22.0.2 | 22.0.2 |
OpenJDK 23 | 23.0.2 | 23.0.2 | 23.0.2 |
OpenJDK 24 | 24.0.0 | 24.0.0 | 24.0.0 |
OpenJDK ディストリビューションの指定
Heroku では、Azul® Zulu® または Heroku のいずれかからの OpenJDK のビルドがサポートされています。どちらのディストリビューションも同じソースから構築されており、Java SE 仕様に完全に準拠しています。OpenJDK の Azul® Zulu® ビルドはさらに TCK/JCK 認証を受けており、推奨される OpenJDK ディストリビューションです。
Heroku の OpenJDK ビルドは Cedar 世代のアプリでのみ利用できます。
各スタックの OpenJDK のデフォルトディストリビューションは次のとおりです。
heroku-20 |
heroku-22 |
heroku-24 |
---|---|---|
Heroku | Azul® Zulu® | Azul® Zulu® |
デフォルト以外のディストリビューションの使用
アプリでデフォルト以外のディストリビューションを使用するには、Java バージョンを指定する必要があります。バージョン文字列に heroku-
または zulu-
の接頭辞を付けて、それぞれのディストリビューションを選択します。
OpenJDK 11 を使用し、Azul® Zulu® を OpenJDK ディストリビューションとして明示的に選択するには、以下を system.properties
に追加します。
java.runtime.version=zulu-11
Java バージョンのアップグレード
Java アプリをデプロイすると、アプリは利用可能な最新の OpenJDK バージョンに自動的にアップグレードされます。アプリを再デプロイしない場合、または system.properties
ファイルで特定のバージョンを設定していない場合、バージョンはアップグレードされません。
Maven バージョンの指定
Heroku では、Maven バージョンを定義するために推奨されるメカニズムである Maven Wrapper がサポートされています。Heroku はリポジトリのルートディレクトリに mvnw
ファイルを検出した場合、このスクリプトを使用して Maven プロセスを起動します。
maven.version
プロパティを設定して、system.properties
ファイルで Maven バージョンを指定することもできます。
maven.version=3.9.4
このプロパティを定義すると、Heroku は mvnw
スクリプトを無視します。アプリは新しいバージョンに自動アップグレードされないため、system.properties
ファイルを更新して新しいバージョンを取得する必要があります。
バージョンを指定せず Maven Wrapper を使用しない場合のデフォルトバージョンは 3.9.4
です。このデフォルトはいずれ変更されるため、安定したビルドを保証するために Maven Wrapper を使用することをお勧めします。
Maven についての詳細は、Maven の使用のカテゴリを参照してください。
デフォルトの Web プロセスタイプ
Java buildpack では Spring Boot Web フレームワークの使用を自動的に検出します。Spring Boot の場合、次のコマンドで web
プロセスタイプを作成します。
java -Dserver.port=$PORT $JAVA_OPTS -jar target/*.jar
Procfile
を使用して、このデフォルトを上書きしたり、カスタムプロセスタイプを定義したりできます。適切なコマンドは、ご使用のアプリおよびフレームワークによって異なります。Procfile
の設定については、いずれかの Java チュートリアルを参照してください。
動作
動作の情報については、「Heroku の Java の動作」を参照してください。
カスタマーサポート
Heroku サポートチャネルのいずれかを通じて問題を報告できます。