簡體   English   中英

Java是編寫Android編程的唯一方法嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM