128

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

4

6 に答える 6

119

JavaFX は OpenJDK の一部です

JavaFX プロジェクト自体はオープン ソースであり、OpenJDK プロジェクトの一部です

ただし、OpenJDK プロジェクトには、いくつかの JDK/JRE ディストリビューション (たとえば、Oracle JDK 11+ 実装および多くのオープンソース JDK Linux パッケージインストールには JavaFX ランタイムは含まれません)。

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

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

具体的には、https ://openjfx.ioサイトで詳しく説明されているように、JavaFX 11 以降の場合:

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 にアクセスしてください。これには、JavaFX を既存の JDK (オープン JDK インストールなど) からアクセスされるモジュラー ライブラリとして使用する手順が含まれます。

JavaFX のオープン ソース コード リポジトリはhttps://github.com/openjdk/jfxにあります。

リンクされたソースの場所で、オープン JavaFX のライセンス ファイルを見つけることができます (現在、このライセンスは OpenJDK のライセンスと一致します: GPL+クラスパスの例外)。

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

オープン JavaFX の使用をすぐに開始したい場合は、Bellsoft の Liberica JDKディストリビューションが、さまざまなプラットフォーム用の OpenJFX を含むビルド済みの OpenJDK バイナリを提供します。

自己完結型アプリケーションとして配布するために、Java 14 はJEP 343: Packaging Toolを実装する予定です。これは、「ネイティブ パッケージ形式をサポートして、エンド ユーザーに自然なインストール エクスペリエンスを提供します。これらの形式には、Windows の msi と exe、macOS の pkg と dmg が含まれます。 Linux では deb と rpm を使用します。" は、ネイティブ インストーラーを使用し、追加のプラットフォーム依存関係 (プリインストールされた JDK など) を使用しない OpenJFX ベースのアプリケーションのデプロイ用です。


時間の経過とともに古くなる可能性のある古い情報

OpenJDK リポジトリからの JavaFX のビルド

Oracle JDK やクローズド ソース コードに依存しないオープン バージョンの OpenJDK (JavaFX を含む)をソースから完全にビルドできます。

更新: OpenJDK ソースからビルド済みの JavaFX ディストリビューションを使用する

この質問へのコメントと別の回答に記載されているように、Debian Linux ディストリビューションは、OpenJDK に基づく JavaFX バイナリ ディストリビューションを提供します。

(現在、これは私の知る限り、Java 8 でのみ機能します)。

JavaFX に関する Open JDK と Oracle JDK の違い

Java 8 については、次の情報が提供されました。Java 9 の時点で、VP6 エンコーディングは JavaFX で非推奨になり、Oracle WebStart/Browser 組み込みアプリケーション デプロイメント テクノロジーも非推奨になりました。そのため、JavaFX の将来のバージョンは、たとえ Oracle によって配布されたとしても、オープン ソース以外のテクノロジは含まれない可能性があります。

Oracle JDK には、OpenJDK からは使用できないソフトウェアが含まれています。JavaFX に関連するコンポーネント:

  • ON2 VP6 ビデオ コーデックは Google が所有しており、Google はオープン ソース化していません。
  • Oracle WebStart/Browser Embedded アプリケーション デプロイメント テクノロジー。

これは、JavaFX のオープン バージョンが VP6 FLV ファイルを再生できないことを意味します。VP6 エンコーダーまたは VP6 でエンコードされたメディアを見つけるのは難しいため、これは大きな損失ではありません。

H.264 などのその他のより一般的なビデオ形式は、JavaFX のオープン バージョンで正常に再生されます (ターゲット マシンに適切なコーデックが事前にインストールされている場合)。

WebStart/Browser Embedded デプロイメント テクノロジーの欠如は、特に JavaFX ではなく、OpenJDK 自体に関係しています。このテクノロジを使用して、JavaFX 以外のアプリケーションをデプロイできます。

オープン ソース コミュニティが Java (およびその他のソフトウェア) の展開テクノロジを開発し、WebStart および Browser Embedded の展開方法を完全に置き換えて、アプリケーションの配布に軽量で影響の少ないユーザー エクスペリエンスを提供できれば、それは素晴らしいことです。そのような目標を達成するためにいくつかのプロジェクトが開始されたと思いますが、それらはまだ高い成熟度と採用レベルに達していません。

個人的には、WebStart/Browser Embedded デプロイメントはレガシー テクノロジーであり、現在、多くの JavaFX アプリケーション (自己完結型アプリケーションなど) をデプロイするためのより良い方法があると感じています。

2019 年 12 月の更新:

JDK 11+ 用の WebStart のオープン ソース バージョンが開発されており、https: //openwebstart.com で入手できます。

JavaFX を含む Linux OpenJDK ディストリビューションを作成する必要があるのは誰ですか?

JavaFX を含む JDK および JRE 用の RPM を作成するのは、OpenJDK (Redhat、Ubuntu など) に基づく Linux ディストリビューション用のパッケージを作成する人次第です。これらのソフトウェア ディストリビューターは、生成されたパッケージを標準のディストリビューション コード リポジトリー (例: fedora/red hat network yum リポジトリー) に配置する必要があります。現在、これは行われていませんが、Java 8 が 2014 年 3 月にリリースされたときに、Java 8 Linux パッケージに JavaFX が含まれていなかったとしたら、非常に驚​​かれることでしょう。

更新、2019 年 12 月:

現在、JavaFX はほとんどのバイナリ JDK および JRE ディストリビューション (Oracle のディストリビューションを含む) から分離されており、代わりに、スタンドアロン SDK、jmod のセット、または中央の Maven リポジトリから利用可能なライブラリ依存関係として利用できます(概要は次のとおりです)。 https://openjfx.io )、標準の Linux OpenJDK ディストリビューションに JavaFX を含める必要はあまりありません。

JavaFX を含むビルド済みの JDK が必要な場合は、さまざまなプラットフォーム用に提供されているLiberica JDK ディストリビューションを検討してください。

実質的なアプリケーションの展開に関するアドバイス

Java の自己完結型アプリケーション展開モードを使用することをお勧めします。

この展開モードの説明は次のとおりです。

アプリケーションはローカル ドライブにインストールされ、Java および JavaFX ランタイムのプライベート コピーを使用してスタンドアロン プログラムとして実行されます。アプリケーションは、デスクトップ ショートカットやメニュー エントリを使用するなど、そのオペレーティング システムの他のネイティブ アプリケーションと同じ方法で起動できます。

Oracle JDKディストリビューションまたはJavaFXを含むOpenJDKビルドから自己完結型アプリケーションを構築できます。現在、Oracle JDK を使用すると簡単に実行できます。

アプリケーションには Java のバージョンがバンドルされているため、マシンにプリインストールされている Java のバージョン、Java の機能、プログラムとの互換性について気にする必要はありません。代わりに、正確な Java ランタイム バージョンに対してアプリケーションをテストし、それをアプリケーションと共に配布できます。アプリケーションを展開するためのユーザー エクスペリエンスは、マシンにネイティブ アプリケーションをインストールする場合と同じです (例: Windows の .exe または .msi のインストール、OS X の .dmg、Linux の .rpm または .deb)。

注:自己完結型アプリケーション機能は、Java 8 および 9 でのみ使用でき、Java 10 ~ 13 では使用できませんでした。JEP 343: Packaging Tool経由の Java 14 は、OpenJDK ディストリビューションからこの機能のサポートを再び提供する予定です。

更新、2018 年 4 月: 将来の開発に対するオラクルの現在のポリシーに関する情報

于 2013-10-22T22:56:10.617 に答える
51

私にとってこれはうまくいきました。

$ sudo apt-get install openjfx
于 2016-03-12T10:44:47.463 に答える
3

obuildfactoryを試してください。

これらのスクリプトを変更する必要があります (エラーが含まれており、必要な「こと」を正確に実行していません)。obuildfactory からフォークした私のスクリプトを数日中にアップロードします。したがって、それに応じて回答も更新します。

それまで楽しんでください、先生:)

于 2015-01-06T10:47:46.157 に答える
0

オラクルによると、OpenJDK と javaFX の統合は 2014 年第 1 四半期になります (ロードマップを参照してください: http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html )。したがって、最初の質問の答えは、それまで待つ必要があるということです。2番目の質問については、他に方法はありません。ですから、とりあえず Java swing を使うか、javaFX を起動して待ってください。

于 2013-10-22T21:07:24.380 に答える