无论如何,当移植JVM时,Java虚拟机在体系结构上运行Java的目的是什么?



我正在尝试分析移植和虚拟机的性质,目的是最大限度地减少移植量。

然而,回顾事物的历史,有一件事在我脑海中脱颖而出。Java虚拟机,即SDK/JRE,虽然它能够动态处理Java类和/或编译Java源代码,但本质上是中间件,不是吗?我想象Oracle的人为不同的操作系统重新编译它,以便Java语言对每个操作系统都有用。

因此,所有这些都让我想到了我上面提到的问题,"当Java本身可以作为另一种语言存在并移植到不同的体系结构而无需移植中间件(即本例中的中间件是JVM)时,为什么要建立Java虚拟机?

这只是一个假设,但会不会是因为 JVM 被设计为在架构之间具有最小的移植要求,因此在架构之间修改现有 java 需要更少的工作? 谢谢。

对于何时使用Java的虚拟机等软件,而不是每次需要不同的体系结构时仅实现一种语言,则以利弊为准。正如上面的评论者所提出的那样,将编译器移植到新的架构来编译语言的代码,比如说,没有虚拟机的Java,将包含比移植单个软件更勤奋的任务,该软件旨在随着时间的推移不会发生太大变化,并处理执行和内存管理,其中包括广泛使用的语言,例如, 就像我们现有的Java一样。因此,与Java一起提供的虚拟机在这方面是一个优点,它减少了所需的重构量。

但是,也许最明显的缺点是,运行该语言的虚拟机会使使用该语言的应用程序对虚拟机底层硬件的访问速度变慢,因为内部垃圾收集机制和内置内存管理共同会导致大量开销。因此,诸如AAA游戏之类的高性能应用程序将被排除和/或严重阻碍。

最新更新