web-dev-qa-db-ja.com

JavaFXおよびOpenJDK

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

  • OpenJDKでのJavaFXサポートはまだひどいですか?
  • もしそうなら、すでにOpenJFXパッケージを提供しているLinuxディストリビューションがあるので、ユーザーは 自分でビルドする
93
mdriesen

JavaFXはOpenJDKの一部です

JavaFXプロジェクト自体は オープンソース および OpenJDKプロジェクトの一部 です。

OpenJDKリポジトリからJavaFXを構築する

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

更新:OpenJDKソースから事前構築されたJavaFXディストリビューションを使用する

この質問へのコメントと別の回答で述べたように、Debian LinuxディストリビューションはOpenJDKに基づいたJavaFXバイナリ配布を提供します:

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

Java 8については、次の情報が提供されました。Java 9の時点で、 VPFXエンコーディングはJavaFXで非推奨 および Oracle WebStart/Browser embeddedアプリケーション展開テクノロジーも廃止されました 。したがって、JavaFXの将来のバージョンは、たとえOracleによって配布されたとしても、オープンソースではないテクノロジーを含まない可能性があります。

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

  1. GoogleとGoogleが所有するON2 VP6ビデオコーデックは、オープンソース化されていません。
  2. Oracle WebStart/Browser Embeddedアプリケーションのデプロイ技術。

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

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

WebStart/Browser Embeddedデプロイメントテクノロジーの欠如は、実際にはJavaFXではなくOpenJDK自体と関係があります。このテクノロジーは、非JavaFXアプリケーションのデプロイに使用できます。

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

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

JavaFXを含むLinux OpenJDKディストリビューションを作成する必要がある人

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

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

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

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

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

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

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

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

83
jewelsea

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

Sudo apt-get install openjfx

49
Vineel Kovvuri

迅速な解決策として、JavaFXランタイムJARファイルと Oracle JRE(JDK) またはJavaFXを使用する自己完結型アプリケーション(たとえば JavaFX Scene Builder 2. から参照されるファイルをコピーできます。 ):

cp <JRE_WITH_JAVAFX_HOME>/lib/ext/jfxrt.jar     <JRE_HOME>/lib/ext/
cp <JRE_WITH_JAVAFX_HOME>/lib/javafx.properties <JRE_HOME>/lib/
cp <JRE_WITH_JAVAFX_HOME>/lib/AMD64/libprism_*  <JRE_HOME>/lib/AMD64/
cp <JRE_WITH_JAVAFX_HOME>/lib/AMD64/libglass.so <JRE_HOME>/lib/AMD64/
cp <JRE_WITH_JAVAFX_HOME>/lib/AMD64/libjavafx_* <JRE_HOME>/lib/AMD64/

ちょうど 確認 あなたはgtk 2.18以上を持っています

また、この質問に答えます:

OpenJDK(Windows)用のビルド済みJavaFXライブラリはどこで入手できますか

Linuxではそれほど問題ではありませんが、Windowsではそれほど簡単ではありません(特にJREを配布する場合)。

実際には、Windows上でOpenJFXとOpenJDK 8を使用できます。自分で組み立てる必要があります。

ここからOpenJDKをダウンロードします。 https://github.com/AdoptOpenJDK/openjdk8-releases/releases/tag/jdk8u172-b11

ここからOpenJFXをダウンロードします。 https://github.com/SkyLandTW/OpenJFX-binary-windows/releases/tag/v8u172-b11

jDKの上にあるOpenFX Zipからすべてのファイルをコピーします。できれば、JavaFXを備えたOpenJDKがあります。

更新

幸いなことにAzulからOpenJDK + OpenJFXビルドがコミュニティページでダウンロードできます: https://www.azul.com/downloads/zulu-community/?&version=Java-8-lts&os=windows&package = jdk-fx

5
Mauli

obuildfactory を試してください。

これらのスクリプトを修正する必要があります(エラーを含み、必要な「もの」を正確に実行しません)、今後数日でobuildfactoryから分岐した鉱山スクリプトをアップロードします。そして、それに応じて答えも更新します。

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

3
DeepSidhu1313

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

1