有没有特殊原因Java是编程Android的唯一方法?

时间:2010-10-14 07:23:12

标签: java android dalvik

我第一次看到Dalvik和Google的Android操作系统时,我读了很多。我不太明白的一件事就是使用Java的原因。我理解的方式是:

Java code -> Java bytecode -> Dalvik bytecode

我不明白为什么我还没有看到任何编译为直接Dalvik代码或任何其他前端而不是Java的Dalvik VM。在没有Java的情况下,是否有直接编译器或Android方式的工作?

澄清我正在寻找不能编译为Java字节码的语言。而且我也不关心动态语言,我已经阅读了一些关于它们的问题。而且我也知道NDK,我正在寻找有关Dalvik编译语言的信息,而不是实际的本机编译语言。

4 个答案:

答案 0 :(得分:2)

还有可能编写直接在操作系统上运行的本机Android应用程序(这是* nix的变体)。推荐的方法是使用Android NDK:

http://developer.android.com/sdk/ndk/index.html

还有更多“hacky”方法:使用ARM C / C ++编译器,只需像任何普通的* nix程序一样编写应用程序。不过,这主要适用于没有GUI的后台服务。

答案 1 :(得分:1)

  

我不明白为什么我还没有看到任何编译为直接Dalvik代码或任何其他前端而不是Java的Dalvik VM。

原因基本上是不需要“直接到达尔维克”编译器,因为正如你正确指出的那样,现有的编译链无论如何都要经过字节码。 / p>

直接转到dalvik的唯一原因是,如果语言在某种意义上可以利用不在字节码中的dex功能。但是,dex和java字节码非常相似。主要区别可能是Dalvik是基于寄存器而JVM是基于堆栈的。除此之外,指令集非常相似。


正如您可能已经意识到的那样,您可以使用任何基于JVM的语言,即编译为java字节码的语言。

一些例子:

答案 2 :(得分:1)

MonoDroid是一个将C#.NET代码转换为Dalvik的beta项目。 它还没有完成,但它将为那些了解C#但没有Java的人开启一些可能性。

答案 3 :(得分:0)

每个人都使用Java,因为这是Android开发官方正式支持的内容,也是Android SDK基于开发的内容。但是,他们还提供NDK(Native Development Kit),允许您使用C / C ++进行开发。

请在此处查看原始公告:http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html