web-dev-qa-db-ja.com

Java 11でjreなしでjdkを使用する方法

Java 8プロジェクトをJava 11を使用するように移行する予定ですが、Java 11にはJREフォルダーがないことに気付きました。

Java 9およびJava 10では、フォルダー構造が変更されます。つまり、Java\jdk1.xまたはJava\jre1.xです。ここで、xはJavaです9または10。

しかし、Java 11では、Java\jdk-11という1つのフォルダーしか取得できません。クライアントはjreなしでアプリケーションをどのように使用しますか?

私が理解したことは、Java 11はアプリケーションをモジュール化することを強制しており、クライアントでアプリケーションを実行する独自のjreを作成するにはjlinkを使用する必要があるということです。

私の理解は正しいですか?

42
Maha Lak

20年間、JDKにはJREが同梱されていましたが、これはシステムの別のディレクトリにインストールされた機能のサブセットにすぎません。

実際、2つの同一のJREが付属しており、1つはJDKインストールディレクトリ内にインストールされ、もう1つは外部にインストールされています。

これは、メンテナー側がこれを行うのは完全な労力の無駄であり、インストールするコンピューターのディスクスペースの完全な浪費であるため、常に私を困惑させました。すでにします。

最後に、Java 11を使用して、OracleとOpenJDKチームはこの愚かさを終わらせ、JDKという単一のものを配布することにしました。このJDKをインストールすると、実際には古いJREだけよりもハードディスク上で小さくなり、ディスクスペースが限られているデバイス用に別個のJREが必要になるというある程度有効な引数も削除されます。そもそも単一のJDKでインストールされますが、JDKの必要最低限​​のランタイム環境としてJREが必要であることを正当化するために作成されました。

エルゴ、別個のJREは必要ありません。また、JDKインストールの一部として強制的にインストールすることは言うまでもなく、長い間存在していませんでした。

いいえ、独自のJREを作成する必要はありません。クライアントマシンにOpenJDKをインストールし、古いJREで行うのと同じように、システムパスに$ Java_HOME/binを追加することを確認してください。

そして、古いJREインストーラーのいくつかのバージョンがそこに配置することを望まなかったJava * .exeファイルのWindowsディレクトリツリーと、いくつかのJREインストーラーによって追加されたいくつかの奇妙なエントリがあったシステムパスを削除します。

56
jwenting

tl; dr

クライアントはjreなしでアプリケーションをどのように使用しますか?

Java Javaベースのアプリ内にJava実装をバンドルします。

について学ぶ:

詳細

私が理解したのは、Java 11がアプリケーションのモジュール化を強制していることです

いいえ、厳密に言えば、モジュール化は必要ありません。ほとんどの既存のアプリは、Java 11でそのまま実行できます。コードをモジュール化せずに、Java 11で引き続き開発できます。ただし、GUIデスクトップまたはモバイルアプリの場合、アプリ内にJVMをパッケージ化する必要があります。 jlinkツールをモジュール化して使用することは、おそらくそれを行うための最良の方法です。対照的に、サーバー側のサーブレットベースのアプリまたはMicroservicesサーバーはまだモジュール化する必要はありませんが、最終的にはモジュール化することをお勧めします。

Java 11にはJREフォルダーがないことに気付きました。

Oracleは、エンドユーザーがJREまたはJDKをインストールすることを意図していません。 Java Applets ブラウザーで Java Web Start アプリ配信は両方とも段階的に廃止され、エンドユーザーはJREを必要としません。 Javaベースのアプリは、独自のJava実装をバンドルすることが期待されています。 JDKを意識的にインストールするのは、開発者とサーバー側のシステム管理者だけです。

一部の人々は、Java Everywhere夢の通過を見て失望しています。また、ホストOS(macOS、Linux、Windowsなど)ごとにアプリをビルドしなければならないことに悩まされることもあります。一方、一部の開発者は、アプリにJava実装(以前よりも小さくなっています)をバンドルして喜んでいます。これにより、エンドユーザーがシステムをダウンロード、インストール、更新する手間が省けます。 wide Java実装。また、ユーザーのPCにJavaをインストールするための企業IT部門との格闘を排除します。アプリにJavaをバンドルすると、どのバージョンとJavaのディストリビューションが関係するかを正確に把握および制御できるため、テストとサポートが簡素化されます。ところで、このアプリとJavaのバンドルはまったく新しいものではありません。macOSとiOSのアプリストアで長年Appleによってサポートされています。

重要:

以下は、Java 11実装を提供するさまざまなベンダーの中から見つけて決定するのに役立つフローチャート図です。

Flowchart diagram to aid in finding and choosing an implementation of Java 11 from various vendors.

10
Basil Bourque

AdoptOpenJDKプロジェクトのWebサイトを見て、最新のJREとJDKをダウンロードしてください https://github.com/AdoptOpenJDK/openjdk-jdk11

ナイトビルドを使用して、JDKパッケージにJREがないという問題を回避しました https://adoptopenjdk.net/releases.html?variant=openjdk11#x64_linux

JREをJDKフォルダーに展開するだけです。

enter image description here

8
matson kepson