[英]Is there a particular reason Java is the only way to program Android?
當Dalvik和Google的Android操作系統首次問世時,我讀了很多。 我不太了解的一件事是為什么使用Java。 我的理解是這樣的:
Java code -> Java bytecode -> Dalvik bytecode
我不明白的是,為什么我還沒有看到任何東西可以編譯為直接的Dalvik代碼或Dalvik VM的Java以外的任何其他前端。 在沒有Java的情況下,是否可以在直接編譯器上進行任何工作或在Android上工作?
為了明確起見,我正在尋找無法編譯為Java字節碼的語言。 而且我也不關心動態語言,我已經閱讀了有關它們的一些問題。 我也知道NDK,我在尋找有關Dalvik編譯語言的信息,而不是實際的本機編譯語言的信息。
還可以編寫直接在操作系統上運行的本機Android應用程序(這是* nix的變體)。 推薦的方法是使用Android NDK:
http://developer.android.com/sdk/ndk/index.html
還有另一種“駭客”的方法:使用ARM C / C ++編譯器,就像編寫任何普通的* nix程序一樣編寫應用程序。 不過,這最適合沒有GUI的后台服務。
我不明白的是,為什么我還沒有看到任何東西可以編譯為直接的Dalvik代碼或Dalvik VM的Java以外的任何其他前端。
這樣做的原因基本上是不需要“直接到Dalvik”編譯器 ,因為正如您正確指出的那樣,現有的編譯鏈始終通過字節碼進行。
直接進入dalvik的唯一原因是,某種程度上該語言可以利用字節碼中沒有的dex功能。 但是,dex和Java字節碼極為相似。 主要區別可能是Dalvik是基於寄存器的,而JVM是基於堆棧的。 除此之外,指令集非常相似。
正如您可能已經意識到的那樣,您可以使用任何基於JVM的語言,即編譯為Java字節碼的語言。
一些例子:
MonoDroid是一個Beta項目,將C#.NET代碼轉換為Dalvik。 還沒有完成,但是它將為了解C#但不懂Java的人打開一些可能性。
每個人都使用Java,因為這是Android開發正式支持的內容,也是Android SDK圍繞其開發的基礎。但是,他們還提供了NDK(本機開發套件),使您可以使用C / C ++進行開發。
在此處查看其原始公告: http : //android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.