为什么C++没有被java取代

时间:5年前   阅读:3913

关于java虚拟机和Class文件格式, 貌似很厉害的样子,那肯定有人疑问,为什么 c/c++这些不能跨平台的语言,还现在还被很多人使用,还没被java取代呢。

当然,这个原因有很多,比如java的gc过程所无法避免的stop the world过程,这在 某些实时性要求比较高的 系统中,比如 股票交易系统,军事系统,是不可接受的。(关于垃圾回收这是另一个话题,不在本文范围内,未来有时间可以花时间另写博客讨论这个问题)。

不过有句话说的很好

java和c++之间有一堵由动态内存分配和垃圾收集技术所围成的'高墙',墙外的人想进去,墙内的人想出来

另外,对于直接与硬件交互的事情,也只能靠C语言了。毕竟上层再怎么发展,硬件与系统之间永远要存在一个驱动层啊。

但是除了以上这些,还有一个原因。给大家讲讲软件历史上的一个重大教训,大家也许就明白了。

当年为了对抗sun的java平台,微软2002年推出了类似中间件思想的.NET平台(C#)。当时window xp一统江湖,让微软如日中天,不可一世,微软在下一代操作系统(就是window visa)的开发中,决定使用 C#, 虽然微软牛逼哄哄,拥有最牛逼的程序员,最顶尖的科学家,但是开发到最后他们发现,使用C#这种运行在虚拟机上的中间件语言,无论如何也达不到 C/C++语言的速度。所以最后悲剧的 window visa,全部推倒重来,重新开发。当时李开复在微软,他的一本书中对此有详细介绍。

当然,当年window visa项目的失败,还有其他一些原因,比如 使用数据库系统代替文件系统,驱动不兼容等, 但是 使用.NET来进行开发,起码也是失败的主要原因之一。

所以现在大家明白了,ByteCode运行在虚拟机上,相比于直接编译成 NativeCode 运行在物理机上,速度较慢。

现在随着虚拟机运行时优化技术的发展,以及硬件的速度越来越快,所以它们速度之间的差异,也没之前差距那么大了。

实质上,Class文件在虚拟机上运行的时候,还会有很多的优化措施。

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

上一篇:重磅!大盘即将暴涨!

下一篇:上证50ETF期权怎么买?

网友评论

请先 登录 再评论,若不是会员请先 注册