2010-10-14 52 views
2

当我第一次发布Dalvik和Google的Android操作系统时,我读了很多。其中一个我不太明白的事情就是为什么使用Java。我的理解是是这样的:是否有特定的原因Java是编程Android的唯一方式?

Java code -> Java bytecode -> Dalvik bytecode 

我不明白的是,为什么我还没有看到任何编译直Dalvik的代码或任何其他前端比Java的Dalvik虚拟机。在没有Java的情况下使用直接编译器或使用Android的方式是否有任何工作正在进行?

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

+0

请参阅[ Android without Java ](http://stackoverflow.com/questions/3242034/android-without-java)。但是,您应该澄清您是否正在寻找Java语言(相对常见)或Java字节码的替代品。我还没有亲自听说过使用Davlik VM但不是Java字节码的项目。 – 2010-10-14 07:28:19

回答

0

每个人都使用Java,因为这正是Android开发正式支持的内容,这正是Android SDK在开发时所基于的内容。但是,它们还提供NDK(本机开发工具包),允许您使用C/C++进行开发。

看到自己原来公布的在这里:http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

+0

我相信很多次NDK需要特殊的电话支持吗?而且我正在寻找更直接的Dalvik代码,而不是机器代码。 – Earlz 2010-10-14 07:34:31

2

还有编写原生Android应用程序在操作系统上运行的直接(这是尼克斯的*的变化)成为了可能。对于推荐的方法是使用Android NDK:

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

还有更多的“哈克”的方式做到这一点:使用ARM C/C++编译器和只写你的应用程序就像任何普通的* nix程序。不过,这大部分适用于没有GUI的后台服务。

+0

有趣:-) – willcodejavaforfood 2010-10-14 07:53:23

1

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

这样做的原因基本上是没有必要为“直接到Dalvik的”编译,因为,正如你正确地指出,现有编译链通过字节去反正。

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


正如你可能已经意识到,您可以使用基于JVM的编译为Java字节码的任何语言,就是。

一些例子:

+0

好吧,达尔维克确实有“goto”;-) – 2010-10-14 16:07:00

+2

所以java字节码 – aioobe 2010-10-14 16:45:31

+0

直接进入Dalvik对于高级混淆器很有用,因为它可以利用dalvik字节代码格式的细微差异来欺骗天真的反向工程工具依靠转换回Java字节码。但对普通编程没用。 – Antimony 2013-09-07 19:08:19

1

MonoDroid的是一个测试项目,C#.NET代码转换成Dalvik的。这并不完全,但它会为知道C#的人开放一些可能性,但不会有Java。

相关问题