為什麼 Google Android 不全面推進 NDK,反而用一個全新,但性能提升有限的 ART 來代替 Dalvik 虛擬機?

是否,Android 永遠也不可能擺脫虛擬機。

via Google Says It Could Replace Dalvik Runtime In Next Version Of Android


樓主難道沒有從windows api的發展套路上發現點什麼嘛?

正經地:用什麼工具無非兩個大方面的考慮:開發效率、運行效率;也就是折騰人還是折騰機器;也就是人力成本還是機器成本。

回到java還是ndk的問題,作為一個c++老手和java新手,我明確地說ndk比java更折騰人。

而眼下的機器性價比不停翻番,也就是人力成本在軟硬體系統中的佔比越來越大。這種節點上,當然是越少折騰人越好!


初步感覺是因為兩者作用不同,ART和Dalvik都是運行時庫,解決JAVA語言向機器語言轉換的過程,而NDK是開發包,提供的是底層基礎函數的調用。

無論ART還是Dalvik其目的都是保證JAVA語言的開發者可以將他們開發的應用方便的部署到Android系統上,而NDK在部署方面無能為力,如果擴展NDK提供完整的運行環境,則意味著要所有的Android開發者放棄JAVA語言,轉向直接使用C或C++語言開發。這更是不可能的。原因有二,其一,android最初選擇JAVA語言是看中了其規模龐大的開發隊伍和語言本身的設備無關性,這樣可以確保短時間內全球開發者開發出大量的Android應用程序,這也是Android能短時間內發展起來的重要原因。其二,使用C或C++語言,會涉及內存操作以及直接與設備驅動程序對話,這樣大大增加Android應用程序的開發難度,尤其是在Android設備種類繁多、感測器五花八門的情況下,這在早期對於Android系統的負面影響將是致命性的。

綜上所述,如果Google全面推進NDK,那應該只能發生在他決定站到其他Android設備廠商的對立面,徹底自立門戶,變成另一個蘋果公司的時候。


ART機制提供了對原有軟體的兼容性。如果突然推行NDK,首先目前NDK的API非常不完善。

其次,其他公司的原有基於Java開發的軟體怎麼辦? 重寫?

我寫過NDK+SDK混編的程序,只能說it"s difficult。而且NDK調試巨不方便。

經常拋棄一套API,然後弄另一套的一般是微軟做的事情。 所以我現在超級討厭微軟的東西。但是沒辦法。


。。。本來就是為了方便開發才用的java開發,才搞虛擬機。。

完全NDK,整死程序員。。


Google對NDK的作用持保留意見


推薦閱讀:

TAG:Android開發 | AndroidNDK | AndroidRuntimeART |