gpt4 book ai didi

Java虚拟机新手困惑: When is the virtual machine invoked while compiling java

转载 作者:行者123 更新时间:2023-12-01 07:09:01 25 4
gpt4 key购买 nike

我刚刚开始学习java以进入android编程
我假设使用 java 编译的所有内容都被编译为 java 字节码,该字节码必须由虚拟机解释。所以 javac filename.java 生成 filename.class,它具有由 JVM 解释的字节码(至少我是这么想的,我会使用 java 运行这个类文件文件名.class)。但是,如果我写这样的东西,

public class Arrays { 
public static void main(String[] args) {
int[] a1 = { 1, 2, 3, 4, 5 };
int[] a2;
a2 = a1;
for(int i = 0; i < a2.length; i++)
a2[i]++;
for(int i = 0; i < a1.length; i++)
System.out.println(
"a1[" + i + "] = " + a1[i]);
}
}

它只是在控制台上显示一些消息,看起来与 C/C++ 输出没有任何不同。这真的只是像一个 C/C++ 程序吗?还是 Windows 仍在后台以某种方式调用 VM?我知道浏览器需要安装虚拟机才能运行这样的东西

import javax.swing.*; 
import java.awt.*;

public class Applet1 extends JApplet {
public void init() {
getContentPane().add(new JLabel("Applet!"));
}
}

但是其他基于控制台的基本程序又如何呢?再说一遍,转向 android,在这种情况下,VM 到底在哪里被调用?或者我们应该将 android 操作系统视为一个非常复杂的浏览器,VM 在其中运行,并且我们使用 java 代码执行的任何内容都在该 VM 内执行?

最佳答案

Javac(编译)不会调用VM,它只是将您的java代码转换为字节码。而Java(运行时)则调用VM。

将 JVM 视为一个可以在操作系统中安全执行 Java 程序的环境。请注意,您的 java 可执行文件是调用 VM 的可执行文件,它将在您的操作系统(例如 Windows/Android 内核)中运行某些任务。

这就是为什么Java有一个口号“一次编写,到处运行”,因为只要有一个操作系统提供了JVM,Java字节码就可以在该操作系统中运行。

enter image description here

关于Java虚拟机新手困惑: When is the virtual machine invoked while compiling java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17715672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com