字节码的目的是什么?

What is the purpose of bytecode?

我读到的是字节码一种中间语言,它被虚拟机使用,必须安装 在电脑上运行 程序。 Wikipedia 表示,虚拟机要么直接执行字节码,要么生成机器码以获得更好的性能。文章还说,字节码是一组指令。对我来说,这听起来像是普通的机器代码,只是只有 VM 才能理解它(我说得对吗?)。

那么字节码的用途是什么?如果 VM 也可以将其编译为机器码,为什么编译器不能直接编译并且我们不需要 VM 并且具有更好的性能?

这可能不是解决这个问题的最佳地点,但要视情况而定。在Java的情况下,便携才是王道。

Windows 应用程序的优点是您可以依赖许多未随程序编译的系统库。它还扩展了可移植性,因为代码不依赖于体系结构(通常。)

更一般地说,您可以生成字节码编译器,这些编译器可以以多种语言生成符合相同字节码标准的代码,从而提供模块之间的轻松互操作性。 (比如在 .NET 中可以在 VB 项目中引用 c# 库)

肯定有更深入的解释,但总的来说就是这些优点。