Есть ли особая причина, по которой Java является единственным способом программирования Android? - PullRequest
2 голосов
/ 14 октября 2010

Я много читал о Dalvik и ОС Android от Google, когда она только появилась.Однако я не совсем понимаю, почему используется Java.Насколько я понимаю, это так:

Java code -> Java bytecode -> Dalvik bytecode

Чего я не понимаю, так это того, почему я до сих пор не вижу ничего, скомпилированного для прямого кода Dalvik или любого другого интерфейса, кроме Java, для виртуальной машины Dalvik.Есть ли работа над прямым компилятором или способом работы с Android без Java?

Чтобы уточнить, я ищу языки, которые не компилируются в байт-код Java.А также я не имею отношения к динамическим языкам, я уже прочитал несколько вопросов о них.А также я знаю о NDK, я ищу информацию о языках, скомпилированных Dalvik, а не о языках, скомпилированных на нативном языке.

Ответы [ 4 ]

2 голосов
/ 14 октября 2010

Существует также возможность написания собственных приложений Android, работающих непосредственно в операционной системе (которая является разновидностью * nix).Для этого рекомендуется использовать Android NDK:

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

Существует также более «хакерский» способ сделать это: использовать компилятор ARM C / C ++ и просто писать свои приложения.как любая обычная * nix программа.Это подходит в основном для фоновых сервисов без графического интерфейса.

1 голос
/ 14 октября 2010

MonoDroid - это бета-проект, который конвертирует код C # .NET в Dalvik.Он еще не закончен, но откроет некоторые возможности для людей, которые знают C #, но не знают Java.

1 голос
/ 14 октября 2010

Чего я не понимаю, так это того, почему мне еще предстоит увидеть что-нибудь скомпилированное для прямого кода Dalvik или любого другого интерфейса, кроме Java, для виртуальной машины Dalvik.

Причина этого в основном в том, что нет необходимости в компиляторе "direct-to-Dalvik" , поскольку, как вы правильно заметили, существующая цепочка компиляции в любом случае проходит через байт-код.

Единственная причина, по которой можно перейти непосредственно к dalvik, заключается в том, что в каком-то смысле язык может использовать преимущества dex-функций, которых нет в байт-коде. Однако байт-код dex и java чрезвычайно похожи. Основное отличие, вероятно, в том, что Dalvik основан на регистре, а JVM - на стеке. Кроме этого, набор инструкций поразительно похож.


Как вы, наверное, уже поняли, вы можете использовать любой язык, основанный на JVM, то есть компилируемый в байт-код Java.

Некоторые примеры:

0 голосов
/ 14 октября 2010

Каждый использует Java, потому что это то, что официально разрабатывается разработкой для Android и на чем основан Android SDK. Тем не менее, они также предлагают NDK (Native Development Kit), который позволяет разрабатывать на C / C ++.

См. Их оригинальное объявление здесь: http://android -developers.blogspot.com / 2009/06 / inturing-android-15-ndk-release-1.html

...