Java 字节码的用途是什么?

Java 字节码的用途是什么?,java,c#,virtual-machine,bytecode,Java,C#,Virtual Machine,Bytecode,正如我所读到的,字节码是一种中间语言,虚拟机必须安装在计算机上才能运行程序。也就是说,VM要么直接执行字节码,要么生成机器代码以获得更好的性能。文章还说,字节码是一组指令。对我来说,它听起来像普通的机器代码,只是只有虚拟机才能理解它(对吗?) 那么字节码的用途是什么呢?如果虚拟机也可以将其编译为机器代码,那么为什么编译器不能直接编译,我们不需要虚拟机,而且性能更好?这可能不是解决这个问题的最佳地方,但这取决于具体情况。就Java而言,可移植性是王道 Windows应用程序的优点是,您可以依赖许多

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


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

这可能不是解决这个问题的最佳地方,但这取决于具体情况。就Java而言,可移植性是王道

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

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


当然还有更深入的解释,但总的来说,这些都是优点

我去了一家著名的搜索引擎,输入了你的主题行:“字节码的用途是什么?”第一个问题是一个非常类似于这个问题的问题,这个问题与我现在标记为重复的问题相关联。在你要求陌生人为你提问之前,请努力研究你的问题;如果你做了,那么请包括一些研究结果,这样我们就可以更好地调整我们的反应,而不是重复已经存在的。