既然Android的底层是Linux,而Linux是由C语言编写的,那为什么不是使用C/C++来编写软件,而是要用Java来编写?
我知道Java的跨平台性很好,但C/C++的跨平台性不也很好吗?
还说是纯粹是因为Java实现图形界面更加容易一些?
首先不同层并不需要用同一种语言编写
然后重点就在于C系和Java系的差异性了, C系偏向底层,对底层控制硬件控制全面,效率高,所以底层系统用C或者C++,甚至汇编。
但到了上层的话这就变成缺点了,C系可以让程序员获得更多的内存控制,但带来的BUG的可能性也更大,而上层应用的话并不需要把注意力放在琐碎的细节上。
形象的说这就像打仗,同样是进攻一个山头
C的方法是控制每一个兵,具体给每一个兵一个明确的任务,虽然繁琐,但每人任务明确,执行速度快,但作为司令官你的工作量会很大。
而JAVA则是直接将任务交给军长,军长交给师长,一层一层的下发指令,你作为司令官就比较简单了直接和军长交流就好。
你这问题提的好。
我的理解是:
1、我们知道Java语言的主导开发者詹姆斯,他原来是C和C++程序员出生,正因为他对C++精通的情况下,发现了很多C++的缺点,有些缺点是致命的,就像在C++里面我们程序员可以直接操作内存,可怕不可怕?一旦申请了内存来不及释放,那就是大问题,还有申请内存容易,在什么是否释放??是个难点。
2、C++不是纯面向对象编程语言,写起来很麻烦,可能同样的功能,C++需要100行,Java需要50行。效率来了。
3、比如我们的手机界面的一个按钮,就是一个对象,我们在这个页面能用,另一个页面也可以用,代码我们只写一遍。
4、Java是在JVM里面运行,就像我们在沙盒里面运行病毒一样,如果出现什么问题,坏的只是我们的沙盒,重新装一个沙盒就好了,我们的宿主机还是好的。
5、Java语言的底层还是有C和C++语言,只是这两种语言的使用范围不一样,Java更适合做服务器开发,web开发。C和C++更适合系统开发,因为其比Java更高效。
最后:你再想想一个问题,为什么Java在编程语言的排名常年霸榜?社区活跃度那么高?都是由原因的。
首先应该是说应用层是用java开发。
然后C跨平台?java是一次编译,到处运行。而C这种编译型语言的跨平台只能是一套代码,不同编译,然后才能在不同平台运行。
就比如,现在应用商店不是都在推64位应用吗?那为什么有64和32的区别?不还是因为c/c++,纯java安卓项目是不存在64/32的区别的。