2

当 Dalvik 和 Google 的 Android 操作系统刚问世时,我阅读了很多。我不太明白的一件事是为什么要使用 Java。我的理解是这样的:

Java code -> Java bytecode -> Dalvik bytecode

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

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

4

4 回答 4

2

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

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

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

于 2010-10-14T07:32:38.563 回答
1

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

这样做的原因基本上是不需要“direct-to-Dalvik”编译器,因为正如您正确指出的那样,现有的编译链无论如何都是通过字节码进行的。

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


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

一些例子:

于 2010-10-14T07:46:36.833 回答
1

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

于 2010-10-14T15:03:51.417 回答
0

每个人都使用 Java,因为这是 Android 开发官方支持的,也是 Android SDK 围绕开发的基础。但是,他们还提供允许您使用 C/C++ 进行开发的 NDK(本机开发工具包)。

在这里查看他们的原始公告:http ://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

于 2010-10-14T07:30:56.120 回答