我们写的命令行程序和GUI程序,在Eclipse中运行程序,显示是使用了javaw.exe。
可是我们在刚接触Java的时候,基本只知道 java、javac 等命令,javaw 是什么?
本文讲解 java、javaw、javaws 三种命令。
java、javaw、javaws先简单概括下三者的应用场景:
- java 适用于小型Java应用程序,也可以做运行GUI等其他Java程序。
- javaw 适用于Java的GUI程序,也可以运行普通命令行程序,与 java 类似。
- javaws 是Web启动实用程序。
我们顺便先了解一下 jvm.dll。这是Windows环境中实际的Java虚拟机实现,它是JRE的一部分。 C语言程序可以直接使用此 jvm.dll 来运行 jvm。
.dll 这种文件后缀,电脑中很常见,想必大家在学习OS的时候也接触过了,不熟悉的建议去看看。
java.exe 是 Win32 控制台应用程序。它是作为帮助程序提供的,因此我们可以使用Java类来代替使用 jvm.dll。由于它是 Win32 控制台应用程序,因此显然与控制台相关联,并在执行时启动它。
java.exe 一般适合于启动小型应用程序,常用于命令行程序。
javaw.exejavaw.exe 与 java.exe 非常相似,看起来像是双胞胎。javaw.exe 是一个Win32 GUI应用程序。它作为一个辅助程序,方便应用程序启动其自己的GUI窗口,而不会启动控制台。每当我们想要运行基于GUI的应用程序且不需要Console时,我们都可以将其用作应用程序启动器。
例如,要启动Eclipse,将使用此javaw.exe(前面也说了这个事)。
也可以编写一个小型Java-GUI的HelloWorld程序,并使用CMD输入"javaw HelloWorld”命令运行,就能看到GUI启动。 javaw一样可以运行普通命令行程序,此时感觉和java一样。
javaws.exejavaws.exe 用于启动通过Web分发的Java应用程序。我们有一个与此应用程序关联的 jnlp_url。我们可以使用 “javaws jnlp_url” 启动该应用程序。它从URL下载应用程序并启动它。将应用程序分发给用户并提供集中控制以提供更新,并确保所有用户都使用最新软件,非常有用。当应用程序被调用时,它被缓存在本地计算机中。每次启动时,它都会检查分发服务器是否有可用的更新。
实战辨析java和javaw举个例子辨析一下java和javaw吧!
编写简单的GUI程序代码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();
}
});
}
}
我们可以同时使用 java.exe 和 javaw.exe 在命令行执行上述GUI应用程序。
结论使用 java.exe 启动时,命令行将等待应用程序响应,直到其关闭。此时关闭命令行就是终止GUI程序的执行。 使用 javaw.exe 启动时,应用程序启动,命令行立即退出,并准备好下一条命令。此时关闭命令行不会终止GUI程序的执行。
(截图不方便,就没截,自己试试就好啦!)