为什么操作系统都是用c或者c++程序写的,而不用Java呢?求高手指教,谢谢。
Android 用的java 谢谢
用C/C++的原因很简单:具有贴近底层硬件的能力。设想使用Java来写操作系统的话,你必须把jvm那一套做在硬件上。
java是高级语言 不和底层打交道,比如寄存器。这些都交给java虚拟机了 所以要写操作系统就必须得直接和底层打交到 java好学就是因为少了这部分 缺点也是因为这部分.
只能说是大多数,不是所有的操作系统都用的是C。
原因简单说两点:
1.效率,C的效率比其他语言高,可以达到汇编的80%。相对于解释型的编程语言要快
2.底层,C语言更接近机器底层,使用C指针可以直接访问内存
老牌的程序,很多功能c已经写好了,用别的语言再写只是重复造轮子,最多在底层是c的基础上 封装自己的语言, 既然别人已经把功能写好了,为什么还要自己用语言重新写系统呢,还有这太绝对了,还有很多事不是c的
效率问题和兼容型。。。Java 需要环境,C#这个更不用说了。。
因为语言设计之初定位就不同。java的特点是oop,执行效率相比较c/c++较低,java开发效率高,适合编写应用和网页。c/c++的特点是指针,能够直接跟内存打交道,适合性能要求较高的场合。某些场合c的性能还不能满足要求的话,可以用更低级的汇编语言。
因为java的底层虚拟机就是纯C写的,如果用JAVA写个操作系统,执行的过程就是java-C-汇编-机器指令这样了,就是效率问题,别说操作系统了,就是windows上跑的程序,都几乎没java写的,99%是C++写的,100%的图形处理程序是C++写的
谢谢各位,很有收获。。。
看编程语言发展史啊,机器语言封装封装成汇编,汇编封装成C,扩展出C++,C/C++能给裸机编程,有一定体系的裸机程序就是操作系统,有了操作系统就可以进行应用开发了。
然而C/C++进行应用开发还是太难了,比较明显的是内存自己管理会引发程序崩,比如指针越界崩溃,内存泄漏崩溃,而且C/C++崩溃的特点又是一处崩溃,整个程序崩溃,以至于整个系统崩溃。
同时,C/C++为了维持系统运转,套路似乎是很固定的。
于是,JAVA PYTHON 等在不同领域做应用的虚拟机或解释型语言就被做出来了。
总而言之,有了C/C++控制硬件,作为基础,JAVA才能跑起来。
C/C++能做到JAVA做不到的事,反过来不行。