【问题标题】:Difference between java.exe, javaw.exe and jvm.dlljava.exe、javaw.exe和jvm.dll的区别
【发布时间】:2015-05-24 02:48:34
【问题描述】:

使用 java.exe、javaw.exe 和 jvm.dll 运行应用程序(例如 Eclipse)有什么区别?另外,它在性能方面有什么不同吗?

【问题讨论】:

标签: java jvm


【解决方案1】:
  • jvm.dll 是 JVM 的实际 Windows 实现(或者更好的是,主入口点)。 C 或 C++ 应用程序可以使用此 DLL 来运行嵌入式 Java 运行时,这将允许应用程序直接与 JVM 交互,例如如果他们想使用 Java 作为其 GUI。

  • java.exe 是 DLL 的包装器,因此人们无需自定义启动器应用程序即可实际运行 Java 类。它是一个 Win32 控制台应用程序,因此如果 exe 不是从批处理文件运行,Windows 将打开一个新的命令提示符窗口。

  • javaw.exe 是一个类似于java.exe 的包装器,但它是一个 Win32 GUI 应用程序。 Windows 不必打开命令提示符窗口,而这正是您想要运行的 GUI 应用程序打开自己的窗口。

编辑:除了进程创建和初始化的开销之外,这些不应该对性能产生任何影响。

最重要的是:没关系;如果您担心这一点,您可能实际上希望保持 Java 运行而不是启动它数百次。

【讨论】:

  • 出现了一个问题。当我从 Win7 运行一个包含 javaw -jar MyApp.jar 的批处理文件时,会打开 cmd 窗口。为什么? MyApp.jar 打开 JFrame 实例。
  • @MockerTim:.bat 文件在javaw.exe 启动之前急切地打开 Windows 提示符(控制台)。
  • @TomaszNurkiewicz 有没有什么简单的方法可以在不打开 cmd 的情况下从文件中启动带有javaw 的长行?
  • @MockerTim:在没有命令提示符窗口的情况下运行它需要一个 VB 脚本或 Windows 快捷方式。不过,您可能想提出一个新问题,因为它实际上与 Tomasz 指出的 javaw 无关。
【解决方案2】:
  • java.exe - 从包含 main() 方法的指定类开始运行 Java 程序(需要指定类和/或 JAR)。

  • javaw.exe - 同上,但不创建 Windows 命令提示符(适用于不需要控制台的 Swing 程序)。

  • jvm.dll - 这不是可运行的,而是库。可能上面两个程序都使用过。

【讨论】:

  • 这三者在性能上也有区别吗?
  • @ManishSharma:在两个之间,jvm.dll与此无关。 没有性能差异(如果不需要,则使用 java.exe 创建的不必要的命令提示符除外)。使用更适合您的应用程序的一种(命令行与 GUI 应用程序)
猜你喜欢
  • 2015-08-05
  • 2011-01-01
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
  • 2012-06-19
  • 2019-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多