鉴于我可以在几秒钟内编译300个类,Java的实现可以只给Java源文件而不是字节码作为输入,然后编译和缓存输入源代码,永远不要再编译它(例如python这样做,许多语言实现都是这样做的,除非他们甚至懒得缓存):
This回答为什么分发字节码而不是本机代码,但为了清楚起见,我想知道为什么甚至有一个编译格式的分发呢?假设编译很重要,为什么不直接使用运行时编译源并对其进行缓存呢?
我能想到的唯一剩余理由是混淆,但是......
...所以这一点被简化为直觉会说字节码比源代码更复杂,因此具有字节码分发格式允许欺骗商人认为他们的IP受到保护(即字节码将是&#34 ;增加价值",但没有技术原因)。
为什么Java平台设计用于向用户分发字节码,而不是将源代码分发给用户?我无法在互联网上找到任何解释。我在这里错过了一个很重要的原因吗?
如果你给出一个理由,你应该说明这是语言设计者最初的原因,还是今天仍然有效的理由。
答案 0 :(得分:3)
你正在想着你的小世界。有一些令人信服的理由来编译源代码并提供字节码:
我确信有更多的字谜代码,我甚至都没有。