java - 为什么 Java 编译器作为可执行文件而不是 JVM 字节码分发?

标签 java

在答案中Platform independence in Java ByteCode ,据说 Java 编译器在所有平台上都是相同的。我明白这一点。

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

最佳答案

javac.exe(在我的安装中,Windows x64 上的 JDK 1.8)大小约为 15K。这不是完整的编译器。编译器本身确实是 用 Ja​​va 编写的,而 javac.exe 实际上只是一个启动器。对于 Java 附带的许多工具来说都是如此 - 必须运行如下内容会很痛苦:

java -cp path/to/javac.jar java.tools.Javac -cp path/to/your/libraries Foo.java

例如。

关于java - 为什么 Java 编译器作为可执行文件而不是 JVM 字节码分发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22807153/

相关文章:

java - 在内存方面对许多常量使用枚举是否有效?

java - 代码分析失败 : Dead store to local variable

java - 文件未删除

java - 如何创建一个 int 数组,其中包含给定范围内随机打乱的数字

java - 从包含子类和父类(super class)项的数组列表中删除项

java - 如何通过元信息引用类字段(就像 .class 一样)

java - 切换到主线程

java - 无法从 Fedora 30 中删除 java-11-amazon-corretto-devel

java - 如何使用 Maven 进行 CI 只构建一次

java - 时区更改JAVA