LINUX.ORG.RU

[Разработка под Android] Что выбрать - python или java?


0

3

Решил написать под андроид небольшую полезную мне, мб и не только мне, софтинку. Заодно и потренироваться в разработке под эту платформу. Но встал вопрос, что логично, «а с чего начать»? И я полез гуглить. Гугления завело меня на ненавистную всем фанатикам хабру. Там я наткнулся на пару статей, где было с нуля расписано, как сделать приложение, как кодить, все дела. Ну т.е. самое то, что надо, то, от чего можно толкаться дальше.

Но возник вопрос - там были примеры разработки в двух вариантах - на python, и использованием интерпретатора для андроида и либы с функциями оси и гуя андроида, и, собственно, родная разработка на Java.

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

Собственно вопрос - как бы на моем месте поступили вы? Что лучше - поломать мозг над явой (что потом может быть полезно, к тому же, при поиске новой работы) и писать на ней или написать на питоне, используя ту штуку, что несомненно проще, но ЕМНИП со сборкой apk могут быть проблемы.

Кастую в тред всех разрабов для андроида, чтобы высказали свой авторитетное аналитическое мнение.

★★★★★

пистон на андроиде не родной, чтобы избежать проблем лучше не вносить дополнительную зависимость. жаба не айс, но это самый Ъ-способ для андроида. можно захреначить все на сях с помощью NDK, без жавы. но это только 2.3+, кажется.

waker ★★★★★
()

питон же работает только через scripting layer for anroid. его нужно ставить отдельно. это минус.

sacred ★★
()

Сталкивался с той же проблемой. Выбрал Java, т.к. она нативная для андроида + возможность поковыряться в незнакомом языке.

strangeman ★★★★
()
Ответ на: комментарий от sacred

> а ndk умеет интерфес делать ?

скорее всего не умеет. придется его делать руками с нуля. но ТС не указал, что конкретно он делать собрался — может ему это и нужно.

ну и, опять же, можно сделать интерфейс на жабе, а остальное на сях. у меня в проекте так и сделано.

waker ★★★★★
()
Ответ на: комментарий от waker

Питон через костыли, согласен. Склоняюсь в сторону явы все же...

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от strangeman

>Выбрал Java, т.к. она нативная для андроида + возможность поковыряться в незнакомом языке.

Похоже, и я так сделаю.

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от sacred

разве весь андроидный гуи-тулкит не на жабе написан сам по себе? если его и дергать из сей — то только через jni.. проще убиться. или написать велосипед под opengles. или таки гуглы для него сишную обертку сварганили?

waker ★★★★★
()
Ответ на: комментарий от waker

>ну и, опять же, можно сделать интерфейс на жабе, а остальное на сях. у меня в проекте так и сделано.

А проблем со сборкой не было потом?

Неужто ты склепал deadbeef и под андроид? =)

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от sacred

It provides a set of system headers for stable native APIs that are guaranteed to be supported in all later releases of the platform:

libc (C library) headers
libm (math library) headers
JNI interface headers
libz (Zlib compression) headers
liblog (Android logging) header
OpenGL ES 1.1 and OpenGL ES 2.0 (3D graphics libraries) headers
libjnigraphics (Pixel buffer access) header (for Android 2.2 and above).
A Minimal set of headers for C++ support
OpenSL ES native audio libraries
Android native application APIS

про гуй ничего не видно.

waker ★★★★★
()
Ответ на: комментарий от waker

Знаю, что я поставлю, как только возьму в руки телефон.

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

> А проблем со сборкой не было потом?

пришлось из нескольких библиотек вырезать всякий c++ мусор, т.к. стандартный ndk идет с bionic, в котором полной поддержки c++ нет, а собирать через левый ndk в котором glibc мне не хотелось, и не хочется.

но это только положительно сказалось — меньше расход памяти, меньше cpu-оверхед на всякие бесполезности.. в т.ч. в десктопной версии.

других проблем не было — это все официальный инструментарий, с долгосрочной поддержкой.

waker ★★★★★
()
Ответ на: комментарий от waker

Я неточно выразился: там не про создание интерфейса на С, там про это есть

But if you prefer to work exclusively in C++, the NDK r5 will let you build a main loop like this:

те можно работать только с ndk

sacred ★★
()
Ответ на: комментарий от sacred

ну я это и имел ввиду в 1м сообщении - что можно целиком на C без жабы писать приложения. но стандартный гуй только через jni придется дергать. это в основном для разработчиков игр, им стандартный гуй не нужен.

waker ★★★★★
()

На яве под андроид писать проще всего. Нативный интерфейс все равно написан для явы, и в ней его использовать достаточно удобно.
С++ можно вызывать из явы через jni, но под jni писать очень уж неудобно. Если в программе нет критичных к скорости выполнения частей, то оно и не нужно. Скорость работы приложений крайне редко упирается в байткод, чаще всего - в криво разработанный интерфейс и километровые деревья экранных объектов.
Не представляю, зачем может быть нужен питон на андроиде, кроме использования уже готового кода.

Можно на scala писать, синтаксических возможностей больше и к питону поближе, при этом полная совместимость с явой на уровне байткода и интерфейсов.

note173 ★★★★★
()
Ответ на: комментарий от note173

> Скорость работы приложений крайне редко упирается в байткод, чаще всего - в криво разработанный интерфейс и километровые деревья экранных объектов.

на андроиде скорость чаще всего упирается в тормознутость работы с floating point. поэтому _приходится_ переписывать критические участки на асме под NEON. и даже это не всегда спасает.

а гуй на андроиде тормозит абсолютно всегда, вне зависимости от приложения. и ускорить его в данный момент можно только апгрейдом девайса на двухъядерник.

waker ★★★★★
()
Ответ на: комментарий от waker

Двухъядерник-то чем поможет, gui выполняется в одном и только одном потоке.
Слабо представляю приложение, не ориентированное на обработку числовых данных, которому таки надо пропускать через себя сотни float. Да и после jit, вроде как, оверхеда на этом почти не остается.

note173 ★★★★★
()
Ответ на: комментарий от note173

про уровень языков Java и Objective-C спорить не буду. но скорость работы ифона была раньше и есть сейчас, а ведроид как лагал так и лагает

sacred ★★
()
Ответ на: комментарий от note173

> Двухъядерник-то чем поможет, gui выполняется в одном и только одном потоке.

ну в двухъядернике одно ядро полностью сожрет гуй, а на втором приложение будет работать без тормозов :)

Слабо представляю приложение, не ориентированное на обработку числовых данных, которому таки надо пропускать через себя сотни float. Да и после jit, вроде как, оверхеда на этом почти не остается.

в той или иной степени, практически любое приложение ориентировано на обработку числовых данных. jit не спасает по той простой причине, что работа с float на ARM как минимум вдвое медленнее чем с integer (так написано у гугла в доках), а на практике может быть и в 5 раз медленнее, или вообще эмулироваться в софте. но в последнем случае, спасает только переход на fixed point (точности которого в 32 битах может не хватить, а в 64 получим overhead такой же как от float), либо отказ от фичи вообще.

waker ★★★★★
()
Ответ на: комментарий от note173

> на яве писать неэффективный код намного проще.

на яве писать максимально эффективный код невозможно. fxd.

waker ★★★★★
()
Ответ на: комментарий от waker

>ну в двухъядернике одно ядро полностью сожрет гуй, а на втором приложение будет работать без тормозов :)

Я так понимаю, что чтобы это произошло, нужно чтобы ОС это умела. Умеет ли так андроид?

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

> Умеет ли так андроид?

я не проверял, но вроде в рекламе 2ядерных девайсов именно это ставят как главную фичу.

waker ★★★★★
()
Ответ на: комментарий от sacred

Интерфейс в iphone3g работает медленнее, чем на моем телефоне с cyanogenmod. В целом - андроид организован не так хорошо, как ios, но не настолько, чтобы тормозить на порядок больше.
(кстати, на 90% уверен, что пятый айфон все равно будет технически менее продвинутым, чем уже вышедший galaxy s2)

note173 ★★★★★
()
Ответ на: комментарий от Zhbert

пысы: не вижу, почему андроид это может не уметь — это ж обычный линух. или в жабе нельзя поток назначить на конкретное ядро процессора?

waker ★★★★★
()
Ответ на: комментарий от waker

>в рекламе

Ну в рекламе и люди, оформляющие ренту бабушек не убивают и денежки им миллионами отсыпают =)

Zhbert ★★★★★
() автор топика
Ответ на: комментарий от note173

> Интерфейс в iphone3g работает медленнее, чем на моем телефоне с cyanogenmod

а у меня телефон с cyanogenmod аццки тормозит, хотя и не настолько аццки как с родным htc sense. ни на каком ифоне не видел таких лагов. но оно и понятно - там многозадачности нет.

кстати, на 90% уверен, что пятый айфон все равно будет технически менее продвинутым, чем уже вышедший galaxy s2

но все равно останется на пике популярности, благодаря на порядок более качественным os и софту.

waker ★★★★★
()
Ответ на: комментарий от waker

Независимо от качества OS и софта, экраны у самсунга все равно самые крутые)
И андроид они сейчас очень серьезно продвигают.

note173 ★★★★★
()
Ответ на: комментарий от PolarFox

> В айфоне качественный софт? Хех, его покупают только ради удовлетворения вау-импульсов.

чем одно мешает другому?

а ифоне как минимум есть искоробочно нормальный аудио-плеер. в отличие от. а в андроиде официальное приложение google maps вешает девайс намертво, что приходится вытаскивать батарею. тут я, правда, на cyanogenmod грешу, но опять же — нет ведь возможности иным путем получить 2.3 на моем девайсе.

waker ★★★★★
()
Ответ на: комментарий от waker

> а ифоне как минимум есть искоробочно нормальный аудио-плеер

В который хрен зальёшь музыку без аналтьюнсов. Который не умеет флак и огг.

а в андроиде официальное приложение google maps вешает девайс намертво, что приходится вытаскивать батарею. тут я, правда, на cyanogenmod грешу, но опять же — нет ведь возможности иным путем получить 2.3 на моем девайсе.

Это глюк твоего цианогенмода. Джейлбрейкнутый ради многозадачности или иных недоступных плюшек новых осей 2Г айфон тоже не отличается стабильностью.

PolarFox ★★★★★
()
Ответ на: комментарий от PolarFox

> В который хрен зальёшь музыку без аналтьюнсов. Который не умеет флак и огг.

зато умеет mp3,aac и alac, которые компенсируют флак и огг с лихвой. а кроме этого умеет gapless и replaygain.

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

Это глюк твоего цианогенмода.

угу. один из. приходится терпеть. впрочем, на sense у меня был другой баг, что maps зависали в фоне, и выжирали всю батарею за пару часов. те же яйца, вид сбоку.

waker ★★★★★
()
Ответ на: комментарий от PolarFox

> В моём цианогенмоде7 искоробочный умеет.

/0

cyanogenmod сам по себе не искоробочный. это уже энтузиасты прикрутили к нему flac. 99% юзеров понятия не имеют как себе этот cyanogenmod поставить, и что это вообще такое.

waker ★★★★★
()
Ответ на: комментарий от waker

>а в андроиде официальное приложение google maps вешает девайс намертво, что приходится вытаскивать батарею.

не Nexus S случайно?

thevery ★★★★
()
Ответ на: комментарий от PolarFox

>Это глюк твоего цианогенмода.

у меня и на стоке gmaps'ы вешают девайс (Nexus S)

thevery ★★★★
()

однозначно java, ну и c/c++ при большой необходимости

thevery ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.