【发布时间】:2015-05-24 02:48:34
【问题描述】:
使用 java.exe、javaw.exe 和 jvm.dll 运行应用程序(例如 Eclipse)有什么区别?另外,它在性能方面有什么不同吗?
【问题讨论】:
-
阅读 Java 工具 - docs.oracle.com/javase/1.5.0/docs/tooldocs
使用 java.exe、javaw.exe 和 jvm.dll 运行应用程序(例如 Eclipse)有什么区别?另外,它在性能方面有什么不同吗?
【问题讨论】:
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 运行而不是启动它数百次。
【讨论】:
javaw -jar MyApp.jar 的批处理文件时,会打开 cmd 窗口。为什么? MyApp.jar 打开 JFrame 实例。
.bat 文件在javaw.exe 启动之前急切地打开 Windows 提示符(控制台)。
javaw 的长行?
java.exe - 从包含 main() 方法的指定类开始运行 Java 程序(需要指定类和/或 JAR)。
javaw.exe - 同上,但不创建 Windows 命令提示符(适用于不需要控制台的 Swing 程序)。
jvm.dll - 这不是可运行的,而是库。可能上面两个程序都使用过。
【讨论】:
jvm.dll与此无关。 没有性能差异(如果不需要,则使用 java.exe 创建的不必要的命令提示符除外)。使用更适合您的应用程序的一种(命令行与 GUI 应用程序)