2012-01-17 49 views
31

我使用Java在Android中編寫了一些簡單的應用程序。
但後來我發現這一點:Android:Java,C或C++?

它提供頭文件和庫,讓您共建活動, 處理用戶輸入,使用硬件傳感器,訪問應用程序資源, 多,在C或C編程時++。 (Source

它是如何與這樣的:

Android應用程序是用Java編程語言。 (Source

是否所有三種語言可能嗎?
對不起,這個愚蠢的問題。

回答

33

您鏈接到的文章有很好的信息。它還鏈接到http://developer.android.com/sdk/ndk/overview.html其中說:

該NDK將不會受益於大多數應用程序。作爲開發人員,您需要 來平衡其優點和缺點;值得注意的是,使用本機 代碼不會導致性能自動增加,但始終會增加應用程序複雜性。一般來說,如果您的應用程序必須使用 本機代碼,而不僅僅是因爲您喜歡使用C/C++進行編程的 。

典型好的候選人NDK是自包含的,CPU密集型 操作不分配的內存,如信號處理, 物理模擬,等等。簡單地重新編碼在C 中運行的方法通常不會導致性能大幅提高。當 檢查您是否應該使用本機代碼進行開發時,請考慮 以瞭解您的需求,並查看Android框架API是否提供您需要的功能 。但是,NDK可以是重用大量現有C/C++代碼的有效方法。

4

Java總是允許你調用「本地代碼」組件。但是,如果可能的話,您希望避免它們,因爲它們可以將微妙的錯誤和平臺依賴關係引入您的代碼。

我不相信你可以在C/C++中爲Android編寫一個完整的應用程序,但是 - 你必須至少有一個Java包裝器。

3

這是一個很好的問題,AFAIK,c或C++出現在你真正想編程核心dalvik特性的東西比使用Android API指定你的問題,如傳感器相關的特性或硬件。

如果您想使用API​​構建應用程序,它將主要使用Java/XML。

+0

Dalvik主要是用C++編寫的,但是在JVM上工作並不等於爲android編寫應用程序。 C++ api比java更受限制 - 我甚至不確定是否存在傳感器的本地API ..雖然顯然有一個適用於Java的API。 – Voo 2012-01-17 21:07:40

5

Android是Linux下的所以你可以運行任何語言。我在Android手機上運行Perl腳本以獲得樂趣。從實用的應用程序開發角度來看,Google在Dalvik上運行的Java實現將是典型的路線。

2

重新寫入用C 通過根據this investigation一個的17因子可以提高性能/電池壽命的那些「不分配多少內存自包含的,CPU密集型操作」中的一個。 This article發現運行CCTOOLS Fortran更快。所以替代語言是值得考慮的。