Java
/javaw
/javaws
の違いは何ですか?ウィンドウの下で、ほとんどのJavaがjavaw
を使用して起動されていることがわかりました。
次のドキュメントを参照してください。
Java
コマンド1/ javaw
コマンド2
Java
ツールは、Javaアプリケーションを起動します。これを行うには、Javaランタイム環境を開始し、指定されたクラスをロードし、そのクラスのmain
メソッドを呼び出します。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で非推奨であり、将来のリリースで削除される予定です。
Java: Java出力/エラーを表示するコンソールに関連付けられているアプリケーションエグゼキューター
javaw:(Javaウィンドウ)アプリケーション実行プログラムはコンソールに関連付けられていません。そのため、出力/エラーは表示されません。静かに出力/エラーをテキストファイルにプッシュするために使用できます。主にGUIベースのアプリケーションを起動するために使用されます
javaws:(Java Web Start)を使用して、分散Webアプリケーションをダウンロードして実行します。再びコンソールは関連付けられていません。
すべてがJREの一部であり、同じJVMを使用します
Java.exeはコンソールに関連付けられていますが、javaw.exeにはそのような関連付けはありません。したがって、Java.exeを実行すると、コマンドプロンプトウィンドウが自動的に開き、出力およびエラーストリームが表示されます。
Javawコマンドは、javawに関連付けられたコンソールウィンドウがないことを除いて、Javaと同じです。コマンドプロンプトウィンドウを表示したくない場合は、javawを使用します。 javawランチャーは、失敗するとエラー情報を含むウィンドウを表示します。
JavawsはJavaウェブスタートアプリケーション、アプレット、または私が疑うようなもののためのものです
出力リダイレクトが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の新しいプロセスを作成しますが、残念ながら、このメカニズムは開始されたサブプロセスに特定のリダイレクトを使用しません。