This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
Java Compatibility
Javaの互換性 #
このページでは、FlinkがサポートするJavaのバージョンと、適用される制限(存在する場合)についてリストします。
Java 8 (非推奨) #
Java 8のサポートは1.15.00で非推奨になりました。 Java11に移行することをお勧めします。
Java 11 #
Java 11のサポートは1.10.0で追加され、Flinkを実行するために推奨されるJavaバージョンです。
これはDockerイメージのデフォルトのバージョンです。
未テストのFlink機能 #
以下のFlinkの機能はJava 11でテストされていません:
- Hive connector
- Hbase 1.x connector
未テストの言語機能 #
- モジュール化されたユーザjarはテストされていません。
Java 17 #
Java 17の実験的サポートが1.18.0で追加されました。(FLINK-15736)
未テストのFlink機能 #
これらのFlinkの機能はJava 17でテストされていません:
- Hive connector
- Hbase 1.x connector
JDKのモジュール化 #
Java 16以降、Javaアプリケーションは、Project Jigsawとも呼ばれるJDKモジュール化と完全に連携する必要があります。 これは、JDKクラス/内部へのアクセスは、アプリケーションの起動時に–add-opens/–add-exports JVM引数の形式で、モジュールごとに明示的に許可する必要があることを意味します。
Flinkはユーザ定義関数とデータ(Kryo経由)をシリアライズするためにリフレクションをつかうため、UDFまたはデータ型がJDKクラスを使う場合これらのJDKクラスへのアクセスを許可する必要がある可能性があることを意味します。
これらはenv.java.opts.allオプションを介して設定する必要があります。
Flink配布物のデフォルトの設定では、このオプションはFlink自身がJava 17で動くように設定されています。 設定パラメータのリストは短縮することはできず、拡張だけしてください。
知られていること #
- Javaのレコードはサポートされません。アップデートについてはFLINK-32380を参照してください。
- SIGSEGV in C2 Compiler thread: 初期のJava 17ビルドはJVMが突然失敗する可能性があるバグの影響を受けます。この問題を解決するにはJava 17インストレーションを更新してください。詳細はJDK-8277529を参照してください。