Альтернативы Java на Android - PullRequest
12 голосов
/ 14 мая 2010

Я только что получил себе телефон Android, и я умираю, чтобы начать кодировать на нем! Однако я не большой поклонник Java, хотя я могу жить с этим, я хотел бы знать, есть ли разумные альтернативы для виртуальной машины Android. Я сделал проект среднего размера с использованием clojure, однако из прочитанных мною обзоров он очень медленный при работе на Android. Как насчет скалы? Я читал, что некоторые люди проводили эксперименты с ним в Android, это "достаточно быстро"? Насколько велика кривая обучения?

Ура, Зе Мария

Ответы [ 8 ]

5 голосов
/ 14 мая 2010

Это: Программирование Scala для Android кажется интересным.

4 голосов
/ 14 мая 2010

В Scala довольно много людей занимаются разработкой для Android. Особого внимания заслуживает даже плагин для SBT , предпочтительный компоновщик для проектов Scala, с целевыми заданиями для Android.

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

Кроме того, большое количество кода Scala очень декларативно. Например, если вы посмотрите на файлы сборки SBT, они в основном декларативные. Некоторые люди почему-то очень расстраиваются из-за этого.

Полагаю, я пытаюсь сказать, что в основном от тебя зависит, насколько хорошо ты придешь в Скалу.

Что касается скорости, то код Scala может быть таким же быстрым, как и код Java, хотя для этого может потребоваться избегать абстракций более высокого уровня в обмен на более уродливый, но быстрый код. Хотя многое зависит от того, какие вычисления вы делаете.

4 голосов
/ 14 мая 2010

Это NDK, который позволяет вам писать частей вашей программы на C или C ++.

Есть ASE, которая позволяет вам писать скриптов на python и, возможно, на других языках. Там нет компилятора Python, хотя вы могли бы услышать иначе.

Я читал кое-что о scala, но так как мне было неинтересно, я не обратил на это внимания.

3 голосов
/ 15 мая 2010

Android 2.2 добавляет jit к виртуальной машине, что должно сделать загрузку программ Clojure намного более эффективной. Clojure создает множество небольших классов, которые загружаются при запуске программы Android. это должно быть облегчено с enw android, хотя это не невыносимо сейчас.

1 голос
/ 22 марта 2012

Также есть порт JRuby для Android, с которым я поигрался и кажется интересным. http://ruboto.org/

1 голос
/ 17 мая 2010

Только что заметил, что некоторые примеры Scala можно найти в транке: http://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/docs/android-examples.

Я не пробовал себя, но это обнадеживает.

0 голосов
/ 22 марта 2012

Существует также Lua, который вы можете использовать с Corona SDK.

0 голосов
/ 19 мая 2010

«достаточно быстро» - на мобильном телефоне вы запускаете приложения, которые задают вопрос относительно того, что вы ожидаете от него.

Кроме того, производительность Java была увеличена с годами. Но также запустить вы просто кодирования в Java. Google создал инструмент, который берет байт-код Java и преобразует его в .dex (исполняемые файлы Dalvik). Dalvik реализация виртуальной машины, используемая Java, оптимизирована для этой платформы. Это означает, что вы можете программировать на языке высокого уровня, таком как Java, который предоставляет множество вспомогательных классов, а значит, вы будете более продуктивными.

У них есть NDK, но я считаю, что у вас все еще должен быть Java-интерфейс, и ваш Java-код должен вызывать NDK-код, когда это необходимо. Вы в значительной степени хотите писать нативный код только тогда, когда вам действительно нужна оптимизация. Многие java-классы, такие как java nio и opengl, являются просто оболочками для вызовов низкого уровня, которые напрямую используют аппаратные ресурсы.

Я, вероятно, перебил немного вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...