为什么Java编译器像可执行文件一样分布而不是作为JVM字节码?

use*_*807 4 java

Java ByteCode的答案平台独立性中,据说Java Compiler在所有平台上都是相同的.我明白这一点.

我的问题是为什么Java编译器作为.exe文件(对于Windows)分发呢?为什么不作为JRE执行的JVM字节码.这种方式对于不同的平台不会有不同版本的编译器.我不知道它是否可能?

Jon*_*eet 8

javac.exe(在我的安装上,Windows x64上的JDK 1.8)大小约为15K.这不是完整的编译器.编译器本身实际上用Java编写的,并且javac.exe只是一个有效的启动器.Java中提供的许多工具都是如此 - 必须运行以下操作会很痛苦:

java -cp path/to/javac.jar java.tools.Javac -cp path/to/your/libraries Foo.java
Run Code Online (Sandbox Code Playgroud)

例如.