有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java是Android的唯一编程方式,有什么特别的原因吗?

我读了很多关于Dalvik和谷歌Android操作系统的文章。但我不太明白的一件事是为什么使用Java。我的理解是:

Java code -> Java bytecode -> Dalvik bytecode

我不明白的是,为什么我还没有看到任何编译成直接的Dalvik代码或Dalvik VM的Java以外的任何前端。有没有关于直接编译器的工作,或者没有Java的Android的工作方式

为了澄清这一点,我正在寻找不编译为Java字节码的语言。我也不关心动态语言,我已经读过一些关于它们的问题。我也知道NDK,我在寻找关于Dalvik编译语言的信息,而不是真正的本地编译语言


共 (4) 个答案

  1. # 1 楼答案

    MonoDroid是一个转换C#的测试版项目。NET代码发送给Dalvik。 它还没有完全完成,但它将为了解C#,但不了解Java的人提供一些可能性

  2. # 2 楼答案

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

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

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

  3. # 4 楼答案

    What I don't understand is why I have yet to see anything compile to straight Dalvik code or any other front end than Java for the Dalvik VM.

    其原因基本上是不需要“直接到Dalvik”编译器,因为正如您正确指出的,现有的编译链无论如何都是通过字节码进行的

    直接访问dalvik的唯一原因是,该语言在某种意义上可以利用字节码中没有的dex特性。然而,dex和java字节码非常相似。主要区别可能是Dalvik是基于寄存器的,而JVM是基于堆栈的。除此之外,指令集惊人地相似


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

    例如: