我对『Compile once, run anywhere』这个宣传语提出的历史背景非常感兴趣。这个宣传语似乎在暗示 C 语言有一个缺点:对于每一个不同的平台,源代码都要被编译一次。
我不解的地方是,为什么这会是一个问题?不同的平台,可执行的机器码必然是不一样的。
源代码自然需要依据不同的平台分别被编译。
我觉得真正问题不在编译这一块,而是在 C 语言源文件这一块。
我没有 C 语言的编程经验,但是似乎 C 语言程序经常需要调用操作系统层面的 API。
不同的操作系统,API 一般不同。为了支持多平台,C 语言程序的源文件需要根据不同平台修改多次。
这应该是一个非常大的痛点。
我回头查了一下当时的宣传语,原文是『Write once, run anywhere』,焦点似乎并不在编译上,而是在对源文件的修改上。
总结:java不同系统无需该源文件