java ,javaw 和 javaws 的區別:
首先,所有的這些都是java的啟動裝置,java.exe經常使用,當使用命令列輸出到window的時候,會有java.exe進程,通過工作管理員可以看到。通常 我們執行一些小的java程式的時候會有 java.exe進程在運行。javaw.exe對於我們也比較特殊,我們也能夠通過工作管理員看到javaw.exe進程的運行。javaws通常web開啟的時候的進程。
jvm.dll
jvm.dll是一個java虛擬機器在windows平台環境上的實現,也是JRE的一部分,一個C程式能夠使用jvm.dll直接運行在jvm上。
java.exe
java.exe是win32控制台應用,它提供了一種協助,代替使用jvm.dll執行java classes 檔案,作為一個win32控制台應用,顯然他是和一個控制台相關聯,當執行java classes的時候,它運行。
javaw.exe
javaw.exe是相似的和java.exe 是一個win32的GUI應用,應用提供自己的GUI視窗,不啟用控制台。
因此我們想運行一個GUI程式不需要命令控制台。
下面是一個例子:
複製代碼 代碼如下:
package javaw;
import javax.swing.*;
public class HelloWorldSwing {
private static void createAndShowGUI() {
JFrame jFrame = new JFrame("HelloWorld Swing");
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel helloLabel = new JLabel("Hello World!");
jFrame.getContentPane().add(helloLabel);
jFrame.pack();
jFrame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
上面是一個GUI程式,按照如下方式運行就是在控制台上運行:
複製代碼 代碼如下:
java -classpath . javaw.HelloWorldSwing
解釋:其中 -classpath . 代表把classpath 的路徑設定為目前的目錄。
運行後查看工作管理員出現了 java.exe進程 ------ 因為這是通過控制台啟動並執行。
圖如下:
如果在eclipse中直接運行:運行後 查看工作管理員出現 javaw.exe進程 --因為沒有通過控制台輸出運行。
圖如下:
如果用javaw通過命令列運行也是如上圖所示:
註:
javaw -classpath . javaw.HelloWorldSwing 啟動的進程為javaw.exe
java -classpath . javaw.HelloWorldSwing 啟動的進程為java.exe
java.exe 和 javaw.exe兩種運行方式的區別還有一點 java運行GUI以後堵塞在那裡直到視窗關閉。
javaw運行GUI後 直接就可以進行下一條命令的運行了。
javaws.exe
javaws.exe進程適用於啟動通過web 配置的程式,簡而言之就是在web應用程式中應用。
總結:
java.exe用於啟動window console 控制台程式
javaw.exe用於啟動 GUI程式
javaws.exe用於web程式。
jvm.dll就是java虛擬機器規範在windows平台上的一種實現