当前位置: 首页 > 面试题库 >

与本地编译语言相比,使用虚拟机编译(例如JVM)有什么优势?

强金鑫
2023-03-14
问题内容

我听说Java的优点是人们可以编写代码,为JVM编译代码,然后在任何地方运行它。每个人只需要为其平台使用JVM应用程序即可。

当然,它看起来类似于当前的情况,即每个人都有针对其平台的特定编译器。因此,优势并不能因此而得到解释。但是我想我明白了..问题一定是在Java情况下,您不能或不打算以特定于OS的方式直接访问真实机器。

我想这意味着在其他语言中,代码本身必须根据运行的计算机进行修改

有人可以提供一个简短的示例,例如可以证明这一点的Hello World程序吗?毫无疑问,它将在非Java中,例如C

由于这不是通常在Hello
World程序中发生的事情,或者自从我在Java上使用过这些书以来从未见过的大多数事情,不幸的是它们是“如何编程”样式的书,而其中的所有内容都没有演示它(也许是因为他们不能或不想使用Java来演示它!)。尽管他们大肆宣传这是一个很大的优势。我想看看它的例子。


问题答案:

我整理了一些答案。

虽然我还没有测试过它们。.我从答案中看到了对我来说很有意义的示例

Bruno在C语言中提供了一个示例

#include <win32.h> (特定于OS的行和代码必须针对不同的OS进行重写)限制在stdio.h和其他一些调用中使用的任何内容(可移植)

加里(Gary)谈到一个与int有关的案件。在C语言中,“一个int在32位盒子上是32位。在64位盒子上是64位”“可移植的方法是使用int32_t”以及关于C语言和汇编语言的一点。到处发现,如果超过限制,它会循环回到0。因此,这是代码对不同系统和编译产生不同影响的情况,但可能无法按预期工作,因此必须改写。

Thorbjørn提供了指向不同CPU上汇编语言示例的链接。适用于32位CPU的Win32
ASM和适用于64位的Win64。它在每个示例中都有一个hello世界示例,并说要转换它们并不容易,因为“在Win32中,所有参数都是通过堆栈传递的,但是在Win64中,它们是通过寄存器传递的”。他说它使用不同的指令。.我想您可能还不止于此,就某种意义而言,如果它是不同的汇编语言..并且汇编语言显然是不可移植的..因此,我没有在其中提及它。问题,但是很高兴在该链接上看到示例。这是一个很好的知识。很高兴看到一些当代的汇编语言不会模糊机器。



 类似资料:
  • 本文向大家介绍基于编译虚拟机jvm—openjdk的编译详解,包括了基于编译虚拟机jvm—openjdk的编译详解的使用技巧和注意事项,需要的朋友参考一下 java只所以被推广,实际上很大原因是因为本身是跨平台的,很大作用是因为虚拟机的关系。 一般情况下开发人员不需要关注虚拟机内部实现就可以日常开发了,但是有时候涉及到性能的时候就需要了解虚拟机的实现机制了。 那么今天写的内容更多的是关于编译一套自

  • 问题内容: 我正在尝试更好地理解它们之间的区别。我在网上找到了很多解释,但是它们倾向于抽象的差异,而不是实际的含义。 我的大部分编程经验都来自CPython(动态的,解释的)和Java(静态的,编译的)。但是,我知道还有其他种类的解释和编译语言。除了可以从以编译语言编写的程序中分发可执行文件这一事实之外,每种类型是否有优点/缺点?通常,我听到人们争辩说解释语言可以交互使用,但是我相信编译语言也可以

  • 问题内容: 我正在尝试更好地理解它们之间的区别。我在网上找到了很多解释,但它们倾向于抽象的差异,而不是实际的含义。 我的大部分编程经验都来自CPython(动态的,解释的)和Java(静态的,编译的)。但是,我知道还有其他种类的解释和编译语言。除了可以从以编译语言编写的程序中分发可执行文件这一事实之外,每种类型是否有优点/缺点?通常,我听到人们争辩说解释语言可以交互使用,但是我相信编译语言也可以具

  • 问题内容: 我听说Java必须使用JIT来提高速度。与解释相比,这很合情合理,但是为什么有人不能制作可以生成快速Java代码的提前编译器呢?我知道,但是我认为它的输出通常不会比Hotspot快。 语言方面是否存在使这变得困难的事情?我认为可以归结为以下几点: 反射 类加载 我想念什么?如果我避免使用这些功能,是否可以将Java代码一次编译为本机代码并完成? 问题答案: 任何AOT编译器的真正杀手是

  • 一、什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的Java应用程序的运行。dex格式是专门为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Google对其进行了特定的优化,使得Dalvik具有高效、简洁、节省资源的特点。从Andro

  • 问题内容: 在阅读了有关该主题的一些资料之后,我仍然不确定编译语言和解释语言之间的区别。有人告诉我这是Java和JavaScript之间的区别之一。有人能帮我理解吗? 问题答案: 编译语言和解释语言之间有什么区别? 区别 不 在于语言。它在 执行中 。 从我的系统中得到了答案,这是一个答案: 在编译的实现中,原始程序被转换为本地机器指令,这些指令直接由硬件执行。 在解释的实现中,原始程序被翻译成其