「java」、「javawv」、「javaws」の違い


184

何の違いだjavajavawjavaws

私はWindowsでほとんどのJavaがを使い始めてjavawいるのを見つけました。


2
これは、Windowsでプログラムを起動するたびに、フォアグラウンドで実際のターミナル(「ターミナル」と呼ばれることすらありません...)を起動するという厄介な癖があるためjava -cp ...です。ほとんど誰もそれを望んでいないので、javawその迷惑なウィンドウを消すための選択です。
Matthieu 2018年

回答:


212

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

  • javaコマンド1 / javawコマンド2
    1. javaこのツールは、Javaアプリケーションを起動します。これは、Javaランタイム環境を開始し、指定されたクラスをロードし、そのクラスのmainメソッドを呼び出すことによって行われます。
    2. このjavawコマンドはと同じですがjavajavaw関連するコンソールウィンドウがない点が異なります。コマンドプロンプトウィンドウを表示したくないjavaw場合に使用します
  • javawsコマンドJava Web Startコマンド」

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

    JNLPファイルが指定されている場合は、JNLPファイルで指定されてjavawsいるJavaアプリケーション/アプレットを起動します。ランチャーは、現在のリリースではサポートされているオプションのセットがあります。ただし、オプションは将来のリリースで削除される可能性があります。

    javaws

    JDK 9リリースノートの非推奨のAPI、機能、オプションもご覧ください。

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


69

java:コンソールに関連付けられ、出力/エラーを表示するJavaアプリケーション実行プログラム

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

javaws:Java web start)分散Webアプリケーションをダウンロードして実行します。ここでも、コンソールは関連付けられていません。

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


JREをインストールした場合javaw、PATHにある必要がありますか?(そうではありません)
エンドリス14

@ endolith、WindowsへのJavaのインストールでは、PATH変数に何も追加されません。JREのみをインストールした場合は、おそらくJRE / binディレクトリを手動でPATHに追加する必要があります。JREとJDKをインストールした場合は、代わりにJDK / binをPATHに追加します。
mcduffee 2014年

9

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


6

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

javawコマンドはjavaと同じですが、javawに関連するコンソールウィンドウがない点が異なります。コマンドプロンプトウィンドウを表示しない場合は、javawを使用します。javawランチャーは、失敗するとエラー情報を含むウィンドウを表示します。

そして、javawsはJava Web Startアプリケーション、アプレット、またはそのようなもののためのものだと思います。


リンクが壊れています:「リクエストされたページは存在しないか、移動した可能性があります。」
Peter Mortensen

1

私は出力リダイレクトが動作することを確認しました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のコンソールでstartコマンド、コンソール出力のリダイレクトはないではないと動作しjavaたりしてjavaw

理由:javawOSで内部プロセスを開き(java.lang.Processクラスを使用して十分)、既知の出力リダイレクトをこのプロセスに転送すると思います。コマンドラインでリダイレクトが指定されていない場合、何もリダイレクトされず、内部で開始されたプロセスにjavawはコンソール出力がありません。java.lang.Processの動作も同様です。仮想マシンはこの内部機能も使用する場合がありますjavaw

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.