私は、モジュールシステムの後に私たちのJava言語で導入されていることを理解することはできませんよ。java9と上記まだプラットフォームに依存しないかではないですか?私は今、すべてのアプリケーションは、その中に、独自のJREを持っていることを読んだので、私はこの質問をしています。だから、どのようにこの単一のJREは、Windows、Linux、またはMac OSのように、すべてのOS上で実行されます。
あなたはconflatingされている二つの異なる変更、最近のJavaプラットフォームに作られました:
- Java Web Startの&アプレット技術の退任
- モジュール化
デスクトップ技術を退任
最近、Oracleは、の廃止を発表したJava Web Startはに加えて、技術既に廃止予定のアプレットの技術。参照項目JDK-8184998のJava 9リリースノート:
Java配備テクノロジーズは推奨されておらず、将来のリリースでは削除されます
JavaアプレットとWebStartの機能、アプレットのAPIを含め、JavaプラグインJavaアプレットビューア、JNLPとJava Web Start、のjavawsツールなどは、すべてのJDK 9で非推奨になっており、将来のリリースでは削除されます。
エンドユーザーは、もはや自分のコンピュータ上のJDKやJREをインストールすることをお勧めしません。
詳細については、オラクルから8ページ2018から03のホワイトペーパーを参照してくださいJavaクライアントのロードマップを更新。
それでは、どのように開発されているスイングかのJavaFXアプリケーションは、エンドユーザに彼らのソフトウェアを提供するために?
Oracleは、一緒にあなたのアプリをパッケージ化することを示唆しているJVM&JREクライアントのように見える上の単一の発射準備のアプリケーションはネイティブアプリケーションと一緒にちょうど別のアプリなるように送達するため。このような「ダブルクリックで」アプリパッケージングは、通常のJavaの初めからMac上で行われています。しかし、他のホスト環境(上の曖昧な芸術たら何であったかのLinux、BSD、WindowsのそれはMacOSの上にあるようになりました、標準となる、など)。
往年では、あなたのアプリとJavaランタイムをバンドルすることは、いくつかの上でジャンプに必要なライセンスのハードル。合法性は、オープンソースの到着と緩和しているのOpenJDKプロジェクト、およびおそらく他の実装と†。
あなたは、各ホスティング環境のためにアプリの異なるリリースを準備する必要があります。Javaコードは、ホストOSとは独立して動作しますが、JVMは、ホストの特定の一種類と対話するためにネイティブコードで構築されています。あなたがLinuxのJVMとLinuxのリリースを構築する必要がありますので、MacOSのは、MacOSのJVMを解放し、というように。それはダウナーのように見えるかもしれませんが、逆さま間違ったJVMのバージョンを持つユーザーを心配する必要のなくなっがインストールされていることではない、またはまったくJVM。今、JVMの存在とバージョンがあなたのコントロール下にあります。エンドユーザーや顧客は、もはやあなたのアプリはJavaベースであることを認識する必要がありません。
モジュール化
アプリ包装のためにその必要性は、とは何の関係もありませんジャワのモジュール化を。私が言ったように、それがMac上で何十年も行われています。
どのようなモジュール化のパーティーにもたらす、あなたの配信アプリにバンドルするJVM / JREということです実際にあなたの特定のアプリケーションが利用するだけのJavaモジュールを含むようにカスタマイズすることができます。完成したアプリが小さいので、小さいサイズでのこの結果は、ダウンロードが高速化され、より少ないストレージが使用され、アプリケーションがより速くロードすることがあります。
オープンソースJLINKカスタムランタイムイメージにモジュールとその依存関係(実際にあなたのアプリケーションによって呼び出されたもののみ)のセットをアセンブルし、最適化することができますので、「Javaのリンカ」ツールは、包装作業に役立ちます。このモジュール実行時の画像フォーマットがで定義されているJEP 220。
†関連ノートで、あなたはホワイトペーパー読むことをお勧めしますJavaのですがまだ無料アプリのJava実装を取得する方法と場所を理解するために、どのような支援またはいずれかの自由のコストで提供または有料であってもなくてもよいですリリース。
ところで、あなたは役に立つかもしれません。この回答に関連した質問を Java実装のさまざまなソースを選択するフローチャートで、。