1. ホーム
  2. java

[解決済み] JavaFXとOpenJDK

2022-07-28 10:28:32

質問

私のJavaアプリケーションのユーザーインターフェイスをJavaFXに切り替えることができるかどうかを決定しようとしています。私のユーザーのほとんどは、最近JavaFXが統合されたOracle JREを使用しています。しかし、一部のユーザーはOpenJDK (Linux上) を使用しています。 これは (古い)質問は、OpenJDKがJavaFXを非常に悪く扱っていることを示唆しています。によると この の質問によると、代替のOpenJFXは、バージョン9で初めてOpenJDKに完全に統合される。ですから、私の質問は2つあります。

  • OpenJDK の JavaFX サポートはまだそんなに悪いのでしょうか。
  • もしそうなら、OpenJFXパッケージをすでに提供しているLinuxディストリビューションはありますか? それを自分で構築する ?

どのように解決するのですか?

JavaFXはOpenJDKの一部です。

JavaFXプロジェクトそのものは オープンソース であり OpenJDK プロジェクトの一部であり .

しかしながら、OpenJDKプロジェクトは、インキュベートプロジェクトや、ソースと実装が一部のJDK/JREディストリビューションの一部として出荷されていないOpenJFXなどの多くのプロジェクトを含みます(例えば、Oracle JDK 11+の実装や多くのオープンソースJDK LinuxパッケージのインストールにはJavaFXランタイムは含まれていません)。

最近のJavaFXディストリビューションはモジュール

JavaFXはほとんどのJDK 11+のダウンロードの一部ではなく、通常、モジュールまたは別のSDKとして開発者によってダウンロードされます。

特にJavaFX 11+の場合、詳細は https://openjfx.io のサイトに記載されています。

JavaFXランタイムは、プラットフォーム固有のSDKとして、またはいくつかのjmodとして、あるいはMaven Centralのアーティファクトのセットとして利用可能です。

これは、ランタイムモジュールパスに適切なJavaFXモジュール(openjfxまたはMaven Centralから入手可能)を含めることにより、サポートされたプラットフォーム上で動作する任意のモダンなJDKから、JavaFXが使用できることを意味します。

openjfxから利用可能なすべてのJavaFXモジュールは、クローズドソースコードを含まないオープンソースの実装です。

エンドユーザへのJavaFXベースのアプリケーションの配布のために、JDKとJavaFXモジュール+必要な依存ライブラリコードとアプリケーションコードに基づいたランタイムイメージ配布をパッケージ化することが推奨されます。このパッケージングの完全な議論はこの回答の範囲外ですが、必要であれば、純粋にオープンソースのJDK+JavaFX+ライブラリ+アプリケーションコードに基づいた配布物を作成することができます。 以下を参照してください。 openjfx.ioドキュメント ランタイムイメージに関するドキュメントを参照してください(包括的ではありませんが)。

2021年9月更新

また、関連する質問もご覧ください。

Java 8とそれ以降のバージョンに関する情報を網羅しています。

2019年12月更新

オープンソースJavaFXの現在の使用方法については、以下を参照してください。 https://openjfx.io . これには、既存のJDKからアクセスされるモジュラーライブラリとしてJavaFXを使う手順が含まれています(たとえば オープンJDKのインストール ).

JavaFXのオープンソースコードリポジトリは、以下の通りです。 https://github.com/openjdk/jfx .

リンク先のソースの場所には、オープンJavaFXのライセンスファイルがあります(現在はこの ライセンス はOpenJDKのライセンス: GPL+クラスパス例外と一致しています)。

このプロジェクトのwikiは以下の場所にあります。 https://wiki.openjdk.java.net/display/OpenJFX/Main

オープンなJavaFXの使い方を手っ取り早く知りたいなら、ベルソフトの リベリカJDK ディストリビューションは、さまざまなプラットフォーム用のOpenJFXを含むプレビルドのOpenJDKバイナリを提供します。

自己充足型アプリケーションとして配布するために、Java 14は以下を実装する予定です。 JEP 343です。パッケージングツール これは,エンドユーザに自然なインストール体験を提供するために,ネイティブなパッケージング形式をサポートするものです。これらのフォーマットには、Windowsのmsiとexe、macOSのpkgとdmg、Linuxのdebとrpmが含まれます。 CUDAカーネルのグリッドとブロックの寸法はどのように選択するのですか?