所有Java软件都包含Java虚拟机吗?

4

我是一个Java新手,我知道Java虚拟机是一种抽象的机器,帮助运行Java程序。所以我想知道JVM是否包含在所有的Java软件中,比如Eclipse?


不是所有的程序都内置JVM(实际上,如果你想将一个程序上传到苹果应用商店,你需要这样做),但这并不意味着所有程序都是这样,大多数程序依赖于已经安装了JVM。 - MadProgrammer
2个回答

5
通常不需要这样做。Java被许多程序使用,如果每个Java软件都包含它,将会占用更多的硬盘空间,并且必须为每个软件加载一个全新的JVM实例。此外,每次发现安全漏洞时,所有软件都必须更新。因此,通常只需在新计算机或操作系统安装后不久安装一次。
偶尔会开发一些软件包,不假定系统上有Java,因此可能会包含自己的Java。有时还可能需要某种定制的JVM。
这样做的主要原因是因为Java被数以亿计的设备使用。如果虚拟机或运行时不是如此广泛使用,我可以说服我的用户安装它(如果他们本身不是开发人员,通常会很困难),或者只是自己打包。
如果您熟悉静态和动态库的概念,那么同样的问题也会出现。

3
您可能已经知道,
JVM并不是一种软件。所有者有他们的实现,但其他人可以根据各种实际和合同要求制作自己的实现。
抽象规范是具体实现,存在于许多平台上并来自许多供应商,可以是全部软件或硬件和软件的组合,运行时实例托管单个正在运行的Java应用程序。
因此,总结一下,JVM是硬件和软件的组合,但并非所有Java包都包含在内,正如您所要求的那样,它甚至不理解Java源代码。
引用: JVM更多地提供了一种定义实现外部行为(子系统、内存区域、数据类型和指令)的方式,这些实现在抽象内部架构中进行描述。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接