简单的问题,但在current developer documentation中似乎没有直接的答案。
Swift是否编译为机器语言(即程序集),还是编译为某个中间形式然后在虚拟机上运行?
(我怀疑它确实如此,但对苹果公司的发展并不熟悉,我不清楚这可能对某人有所帮助。)
答案 0 :(得分:31)
是的,它通过llvm位代码编译为机器语言,并且正如@connor所说,它运行在Objective-C运行时之上。
答案 1 :(得分:18)
Swift不仅编译为本机机器代码,而且还是designed specifically for it。与...不同Java专门设计为JITed语言。我的意思是,Swift通过提前编译实现了最佳性能,而Java从JITing中获益最多。
这些设计选择有很多原因,但其中包括Swift比Java等托管语言有更大的范围。它应该适用于具有更多受限硬件的台式计算机和电话。您可以将Swift用作系统编程语言,这与C#,Java或Python不同,因为它几乎没有运行时要求,并且允许对内存进行相当详细的控制。所以从理论上讲,应该能够用Swift构建一个操作系统内核,这对Java来说很难。
答案 2 :(得分:8)
答案 3 :(得分:6)
Swift与Objective-C一样,被编译为在Objective-C运行时运行的机器代码。