【发布时间】:2021-02-10 09:28:50
【问题描述】:
当您在 Windows 中运行 .exe 控制台应用程序(例如用 C++ 编写的应用程序)时,Windows 会为您创建一个控制台窗口。
因此,从本质上讲,该程序不会在 Windows 本身之外的任何东西之上运行。
当你调用java Main.classinside cmd.exe 控制台时,它真的是它自己的独立程序吗?感觉更像java 是正在运行的程序,而Main.class 只是一个给定的参数。
这一切都是要问,所有Java程序都是简单的控制台java [argument]程序吗?另一种问法是,所有 Java 程序都只是读取特定类文件的 JRE 程序/实例吗?
【问题讨论】:
-
这里的部分问题是您的术语。 Java 程序是一组 .java 源文件或其编译结果:一组 .class 文件。 Java 进程确实是一个JVM进程。
-
@Nayuki 是的,这是真的。一些 Java 程序会这样做。这样它看起来更像是一个本地程序,例如当有人在任务管理器中查找该程序时。你可以给exe一个图标。或者,如有必要,请下载 exe 并安装 JVM。
-
代码就是数据,数据就是代码。
-
@hobbs:除了在现代操作系统下,代码在页表中设置了执行和只读位。数据通常是可写的,但肯定是不可执行的。
-
在某种程度上取决于上下文。在 IBM iSeries 上,Java 程序(可选地)被编译成“本机代码”并像任何其他程序一样执行。在这种情况下,JVM 只是程序的“运行时库”。即使没有这种编译,Java 程序也会被操作系统“识别”,并且不需要显式调用 Java.exe。
标签: java