为什么 C 语言仍然占据统治地位?( 六 )

Java输给C的地方是一个Java从未打算竞争的领域:靠近底层结构运行 , 或直接与硬件打交道 。 C代码被编译成机器代码 , 由进程直接执行 。 Java被编译成字节码 , 这是一种随后会被JVM解释器转换为机器代码的中间代码 。 此外 , 尽管Java的自动内存管理在大多数情况下都是个优点 , 但C更适合于必须充分利用有限内存资源的情况 。

也就是说 , 在某些方面 , Java在速度方面可以接近于C 。 JVM的JIT引擎在运行时根据程序行为优化例程 , 允许进行许多类型的优化 , 而这些优化是在未提前编译的C中无法实现的 。 虽然Java运行时自动执行内存管理 , 但一些较新的应用程序可以解决这个问题 。 例如 , Apache Spark部分地通过使用绕过JVM的自定义内存管理代码来优化内存中处理 。

C vs. C#和.Net

在推出近二十年后 , C#和.Net 框架仍然是企业软件世界的主要组成部分 。 有人说C#和.Net是微软对Java的回应——一个托管代码编译器系统和通用运行库——C和Java之间的许多种对比也适用于C和C#或.Net之间 。

推荐阅读