java - 当需要移植 JVM 时,Java 虚拟机在架构上运行 java 的目的是什么?
问题描述
我正在尝试分析移植和虚拟机的性质,以尽量减少移植量。
然而,回顾事物的历史,有一件事在我脑海中很突出。Java 虚拟机,即 SDK/JRE,虽然能够动态处理 Java 类和/或编译 Java 源代码,但本质上是中间件,不是吗?我想 Oracle 的人会为不同的操作系统重新编译它,以便 Java 语言可以用于每个相应的操作系统。
所以,这一切都让我想到了我上面提到的问题,“当 Java 本身可以作为另一种语言存在并被移植到不同的体系结构而不需要移植中间件(即在这种情况下的中间件是JVM)?”
这只是一个假设,但是否是因为 JVM 被设计为在架构之间具有最小的移植要求,因此在架构之间修改现有 java 需要更少的工作?谢谢。
解决方案
关于何时使用 Java 虚拟机之类的软件,而不是每次需要不同架构时只实现一种语言,利弊占主导地位。正如上面的评论者所提出的那样,将编译器移植到新架构以编译语言的代码,比方说,没有虚拟机的 Java,将比移植一个设计为不会随时间发生太大变化并处理执行的软件做更多的工作。和内存管理等,用于一种广泛使用的语言,比如我们现有的 Java 语言。因此,与 Java 一起提供的虚拟机在这方面是一个优点,它减少了所需的重构量。
然而,也许最明显的缺点是运行该语言的虚拟机会使使用该语言的应用程序对虚拟机底层硬件的访问速度变慢,这是由于内部垃圾收集机制和内置内存管理共同导致显着开销. 因此,诸如 AAA 游戏之类的高性能应用程序将被排除和/或严重阻碍。
推荐阅读
- python - 如何在 Linux 中获得空闲时间?
- laravel - 如何在laravel 7中从http重定向到https并删除带有子域的www
- kubernetes - Prometheus 速率函数输出为整数
- python - How to store and use data from a text file in python for sentiment-analysis?
- r - compute mean with x range for many variables
- python - How to prevent user input into console when program is running in python?
- java - Google Dataproc API (through Java) does not submit Job to cluster
- excel - VBA: Exporting charts from Excel to PowerPoint, but my PowerPoint Application crashes without an error message
- ios - 当我添加 Google 移动广告 SDK 时,Flutter ios pod install 出现此错误。关于如何解决的任何想法?
- axios - NestJS FilesInterceptor 不解析来自 Axios 请求的文件