当您可以传递源代码时,JVM需要什么?

当您可以传递源代码时,JVM需要什么?,jvm,Jvm,我是java新手。 我想知道这件事。 在java中创建.class文件需要什么? 难道我们不能把源代码传递给每台机器,让每台机器都能根据操作系统和硬件进行编译吗 我认为这主要是出于效率原因 来自维基百科: 字节码,也称为p代码(可移植代码),是一种 为软件高效执行而设计的指令集 口译译员与人类可读的源代码不同,字节码是紧凑的 数字代码、常数和引用(通常为数字地址) 对事物的语法分析和语义分析的结果进行编码 类似于程序对象的类型、范围和嵌套深度他们 因此,允许比直接解释 源代码。 (我的重点) 正

我是java新手。 我想知道这件事。 在java中创建.class文件需要什么?
难道我们不能把源代码传递给每台机器,让每台机器都能根据操作系统和硬件进行编译吗

我认为这主要是出于效率原因

来自维基百科:

字节码,也称为p代码(可移植代码),是一种 为软件高效执行而设计的指令集 口译译员与人类可读的源代码不同,字节码是紧凑的 数字代码、常数和引用(通常为数字地址) 对事物的语法分析和语义分析的结果进行编码 类似于程序对象的类型、范围和嵌套深度他们 因此,允许比直接解释 源代码。

(我的重点)


正如其他人提到的,源代码可能很弱。

编译的主要原因是,用于承载java类并运行它们的虚拟机只理解字节码 而且,由于每次将类编译成虚拟机能够理解的语言是昂贵的。这就是源代码被编译成字节码的唯一原因。
但我们也可以使用一些编译器,将源代码直接编译成机器代码。但这是另一个我不太了解的故事。

因为编译字节码比编译源代码花费的时间少?因为字节码比源代码小?是的,差不多就是它的大小。好问题。也是因为字节码不容易被最终用户查看/修改。因为编译器太大?因为开发人员不想开源?甚至在发送到浏览器之前;-)谢谢你回答我的问题。我真的很感激。如果我们使用字节码,我们需要JDK。JDK很重,节点资源不足。在网络节点上安装成熟的JDK不是一个好主意。另一方面,将源代码传递给每个用户只需要一个编译器。帮助我AGAIN@RahulMathur:如果您正在谈论分发字节码以在客户端计算机上运行,那么您不需要JDK,只需要JRE。见: