web-dev-qa-db-ja.com

Java / javaw / javawsの違い

Java/javaw/javawsの違いは何ですか?ウィンドウの下で、ほとんどのJavaがjavawを使用して起動されていることがわかりました。

166
user705414

次のドキュメントを参照してください。

  • Javaコマンド1/ javawコマンド2
    1. Javaツールは、Javaアプリケーションを起動します。これを行うには、Javaランタイム環境を開始し、指定されたクラスをロードし、そのクラスのmainメソッドを呼び出します。
    2. javawコマンドはJavaと同じですが、javawには関連付けられたコンソールウィンドウがないことを除きます。 do n'tコマンドプロンプトウィンドウを表示する場合は、javawを使用します。
  • javaws command " Java Web Start command"

    javawsコマンドは、Java Network Launching Protocol(JNLP)のリファレンス実装であるJava Web Startを起動します。 Java Web Startは、ネットワークでホストされているJavaアプリケーション/アプレットを起動します。

    JNLPファイルが指定されている場合、javawsは、JNLPファイルで指定されたJavaアプリケーション/アプレットを起動します。

    javawsランチャーには、現在のリリースでサポートされている一連のオプションがあります。ただし、オプションは将来のリリースで削除される可能性があります。

    JDK 9リリースノート非推奨のAPI、機能、およびオプション

    Java Deployment Technologiesは非推奨であり、将来のリリースで削除される予定です
    JavaアプレットおよびWebStart機能。アプレットAPI、Javaプラグイン、Java Applet Viewer、JNLPおよびJava Web Startを含むjavaws toolを含むすべてがJDK 9で非推奨であり、将来のリリースで削除される予定です。

189
Andrew Thompson

Java: Java出力/エラーを表示するコンソールに関連付けられているアプリケーションエグゼキューター

javaw:(Javaウィンドウ)アプリケーション実行プログラムはコンソールに関連付けられていません。そのため、出力/エラーは表示されません。静かに出力/エラーをテキストファイルにプッシュするために使用できます。主にGUIベースのアプリケーションを起動するために使用されます

javaws:(Java Web Start)を使用して、分散Webアプリケーションをダウンロードして実行します。再びコンソールは関連付けられていません。

すべてがJREの一部であり、同じJVMを使用します

61
Venkataswamy

Java.exeはコンソールに関連付けられていますが、javaw.exeにはそのような関連付けはありません。したがって、Java.exeを実行すると、コマンドプロンプトウィンドウが自動的に開き、出力およびエラーストリームが表示されます。

9
Serge Bekenkamp

from http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/index.jsp?topic=%2Fcom.ibm.Java.doc.user.aix32.60%2Fuser%2Fjava.html

Javawコマンドは、javawに関連付けられたコンソールウィンドウがないことを除いて、Javaと同じです。コマンドプロンプトウィンドウを表示したくない場合は、javawを使用します。 javawランチャーは、失敗するとエラー情報を含むウィンドウを表示します。

JavawsはJavaウェブスタートアプリケーション、アプレット、または私が疑うようなもののためのものです

6
lfxgroove

出力リダイレクトがjavawで機能することを確認しました。

javaw -cp ... mypath.MyClass ... arguments 1>log.txt 2>err.txt

つまり、JavaアプリケーションがSystem.outまたはSystem.errを介して何かを出力する場合、Java(wなし)を使用する場合と同様に、そのファイルに書き込まれます。特にJavaの起動時に、JREはエラー出力パイプに起動エラー(クラスが見つかりません)を書き込む場合があります。この点で、エラーについて知ることが不可欠です。 javawが呼び出される場合は、どのような場合でもコンソールリダイレクトを使用することをお勧めします。

反対の場合

start Java .... 1>log.txt 2>err.txt

Windows console startコマンドを使用すると、コンソール出力のリダイレクトはJavaおよびjavawでも機能しません。

説明、なぜそうなのか:javawはOSで内部プロセスを開き(Java.lang.Processクラスを使用して適切)、既知の出力リダイレクトをこのプロセスに転送すると思います。コマンドラインでリダイレクトが指定されていない場合、リダイレクトは行われず、javawの内部起動プロセスにはコンソール出力がありません。 Java.lang.Processの動作は似ています。仮想マシンは、この内部機能をjavawにも使用できます。

「開始」を使用すると、Windowsコンソールは、開始後にコマンドを実行するためのWindowsの新しいプロセスを作成しますが、残念ながら、このメカニズムは開始されたサブプロセスに特定のリダイレクトを使用しません。

0