安卓爲什麼用Java語言不用C語言?

活動中心17653708


我做移動互聯開發多年,也做過不少大大小小的Android項目,所以我來回答一下這個問題。

眾所周知,Google選擇了Java語言作為Android平臺的開發語言,而且並沒有使用Oracle公司的JVM,而是自己寫了獨立的編譯器(DVM)。而且DVM與JVM的區別還是比較明顯的,JVM是基於棧的,而DVM是基於寄存器的,所以從速度上來說,DVM理論上要更快一些。另外,JVM執行的是class文件,而DVM執行的是dex文件,這就說明JVM與DVM在執行的字節碼方面也是不同的。

從這些區別上來看,Google對Java的改造還是比較大的,只是在語法上保留了Java語言的規則。在我看來,Google為安卓平臺選擇Java語言有以下幾個方面的原因:

第一,Java語言有較為廣泛的程序員基礎。由於目前Java語言的應用領域十分廣泛,所以使用Java語言能迅速建立龐大的開發群體。

第二,Java語言的生態比較健全。Android平臺的功能越來越強大,這就需要有一個能與之匹配的編程語言,而編程語言自身的生態就顯得比較重要的,而Java語言的生態環境是比較健全的。

目前我們在實際的開發過程中發現,用Java語言的Android平臺在某些性能指標上,明顯要優於iOS平臺。比如大列表的裝載問題,Android平臺是沒有問題的,但是同樣的操作在iOS系統下就會出現崩潰的問題。

我的研究方向是大數據和人工智能,目前也在帶大數據方向的研究生,我會陸續在頭條上寫一些關於大數據方面的文章,感興趣的朋友可以關注我的頭條號,相信一定會有所收穫。

如果有軟件開發方面的問題,或者是考研方面的問題,也可以諮詢我。

謝謝!


IT人劉俊明


首先安卓是可以使用C語言寫代碼的

題主應該是接觸安卓比較少,其實安卓本身底層是一個Linux的系統,既然是Linux系統,那麼必然可以使用Linux上面的特性了;不知道有沒有網友用過第一代安卓手機,我的第一個安卓手機是中興N760,很古老的手機了,12年的時候,在學校裡面的營業廳,充700元話費,送一臺手機,當時的這個手機,上面有一個terminal,你沒聽錯,這個手機真的搭載了一個terminal,在這個terminal裡面,你可以屬於Linux常用的命令。就是下面這個貨。

既然安卓系統的底層是一個Linux系統,如何才能用C/C++編程放到上面跑呢?安卓的編譯器裡面,有一個叫做NDK的東西,此神器就是解決如何用c/c++開發的問題,有興趣的可以瞭解一下。

順便說一下,一般來說對於CPU密集型的程序,追求效率,都基本上會選擇用C/C++開發,然後ndk編譯,比如輸入法,需要再本地做音字轉換,效率要求極高,所以用c語言研發引擎部分。


波波桑


這個問題本身就是錯的,實際上,android系統底層(包括但不限於內核)就是由c/c++寫的。即使是應用,對於部分對執行效率要求比較高的實現也會使用c/c++。


分享到:


相關文章: