java和 javaw 及 javaws的区别解析

作者:bird_cat 时间:2023-07-21 06:31:05 

java  ,javaw   和  javaws 的区别:

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

java和 javaw 及 javaws的区别解析

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进程   ------ 因为这是通过控制台运行的。

图如下:

java和 javaw 及 javaws的区别解析

java和 javaw 及 javaws的区别解析

如果在eclipse中直接运行:运行后 查看任务管理器出现 javaw.exe进程  --因为没有通过控制台输出运行。

图如下:

java和 javaw 及 javaws的区别解析

如果用javaw通过命令行运行也是如上图所示:

java和 javaw 及 javaws的区别解析

注: 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平台上的一种实现

注:原文地址:http://javapapers.com/core-java/java-vs-javaw-vs-javaws/

来源:https://blog.csdn.net/topwqp/article/details/8595936

标签:java,javaw,javaws
0
投稿

猜你喜欢

  • 深入理解Spring Boot属性配置文件

    2021-11-18 00:23:34
  • C#排序算法之快速排序

    2021-05-24 02:44:17
  • Java面向对象基础,类,变量,方法

    2023-04-08 13:21:49
  • Java实例讲解多态数组的使用

    2021-08-30 19:34:46
  • C#时间格式转换为时间戳的方法步骤

    2022-04-13 12:27:19
  • Android Gradle 三方依赖管理详解

    2023-02-27 21:11:53
  • Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】

    2021-07-07 21:11:57
  • C#-WinForm跨线程修改UI界面的示例

    2022-01-14 13:25:44
  • Android基于高德地图完全自定义Marker的实现方法

    2023-03-09 03:32:30
  • Java synchronized轻量级锁实现过程浅析

    2022-05-08 07:28:55
  • Java8中的LocalDateTime你会使用了吗

    2023-11-15 07:02:07
  • C#中DataSet转化为实体集合类的方法

    2022-05-09 00:50:46
  • Android实现掷骰子效果

    2022-06-16 01:09:16
  • 解决springboot启动失败的问题('hibernate.dialect' not set)

    2023-11-09 03:21:21
  • java文件操作输入输出结构详解

    2023-07-30 21:48:30
  • 详解spring boot集成ehcache 2.x 用于hibernate二级缓存

    2023-06-25 05:49:44
  • Java concurrency之共享锁和ReentrantReadWriteLock_动力节点Java学院整理

    2022-06-16 09:17:25
  • java实现二分法查找出数组重复数字

    2022-07-15 03:54:00
  • Visual Studio 2022 安装低版本 .Net Framework的图文教程

    2023-06-22 19:18:44
  • 二分查找算法在C/C++程序中的应用示例

    2021-06-01 08:15:30
  • asp之家 软件编程 m.aspxhome.com