[解決済み] JavaFXとOpenJDK
質問
私の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カーネルのグリッドとブロックの寸法はどのように選択するのですか?
関連
-
Javaでよくある構文エラー
-
無効なメソッド宣言
-
htmlとwordの相互変換の実装(画像あり)
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] Oracle JDKとOpenJDKの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Jsoup-Crawlingの動作
-
unsigned char* から const jbyte* {aka const signed char*} への変換が無効です。
-
-bash: java: コマンドが見つからない 解決方法
-
java send https request prompt java.security.cert.について。
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
Web Project JavaでPropertiesファイルを読み込むと、「指定されたファイルがシステムで見つかりません」というソリューションが表示されます。
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
switch case文のcaseの後の列挙定数は列挙型なし