java、javaw和javaws的区别

java、javaw和javaws的区别

首先,所有的这些都是java的启动装置,java.exe经常使用,当使用命令行输出到window的时候,会有java.exe进程,通过任务管理器可以看到。通常 我们执行一些小的java程序的时候会有 java.exe进程在运行。javaw.exe对于我们也比较特殊,我们也能够通过任务管理器看到javaw.exe进程的运行。javaws通常web开启的时候的进程。
image.png

java 各进程功能

javac 代码编译成字节码

javap字节码解析成代码

java.exe用于启动window console 控制台程序

javaw.exe用于启动 GUI程序

javaws.exe用于web程序。

jvm.dll就是java虚拟机规范在windows平台上的一种实现

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窗口,不启用控制台。

运行后查看任务管理器出现了 java.exe进程 —— 因为这是通过控制台运行的。

image.png

javaws.exe

javaws.exe进程适用于启动通过web 配置的程序,简而言之就是在web应用程序中应用。

运行特性

jdk的java.exe和javaw.exe文件都可以运行由javac.exe编译出来的java文件,但是,这两个程序都是有区别的:
1、java启动的程序是命令行程序或阻塞程序,如果该程序未执行完毕或未被关闭,则所打开的命令行将被阻塞,不能执行其它命令如dir等,可以通过Ctrl+C等方式关闭程序;
2、javaw启动的程序是窗口程序或非阻塞程序,在使用该命令运行程序后,可接着在命令行中执行下一命令,且启动的程序与命令行无关不依赖命令行,不能通过Ctrl+C关闭。

也可以这样解释:

两者的根本区别:java.exe是win32控制台应用,javaw.exe是一个win32的GUI应用

java.exe运行的程序之后cmd控制台进入阻塞状态,正在运行的cmd控制台不能输入其他命令,

而用javaw.exe运行java程序的话,控制台还可以输入其他命令。

java.exe调用的是系统System.console即系统控制台,javaw.exe调用的是java的GUI库,当用java.exe运行java用户界面的时候,实际上是java.exe通过系统的控制台调用java的GUI库,所以通过系统控制台输出GUI界面,所以cmd是出于阻塞状态的。

总结:

java.exe用于启动window console 控制台程序

javaw.exe用于启动 GUI程序

javaws.exe用于web程序。

jvm.dll就是java虚拟机规范在windows平台上的一种实现

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信