2010-07-27 10 views
12

Acabo de pedir un teléfono inteligente Android y quiero empezar a jugar con la creación de mis propias aplicaciones. Ahora la pregunta es qué lenguaje usar, el nativo Java o Python usando SL4A (antiguo ASE).Comenzando con Android: Java o Python (SL4A)

Tiendo a Python, como lo conozco mucho mejor que Java, pero me pregunto qué me extrañaría usar un lenguaje de "segunda clase" en Android. En el sitio web SL4A también se afirma que es un software de calidad alfa, lo que no es precisamente alentador.

Tampoco estoy muy seguro de cuáles son las limitaciones del entorno de scripting y si serían problemáticas.

Respuesta

16

Por el momento no se puede crear un programa liberable con Python (o cualquier otro lenguaje de scripting) utilizando SL4A. He escuchado rumores de que esto es algo en lo que Google está trabajando, pero incluso si lo hacen, es probable que las aplicaciones de Python sean lentas y con gran consumo de energía en comparación con Java. Además, la API de scripting solo le da acceso a un subconjunto limitado de la API Java nativa. No consideraría usar SL4A para un trabajo de desarrollo serio en este momento, solo para scripts únicos y creación de prototipos.

Eche un vistazo a Scala. Es un lenguaje estáticamente tipado en la JVM, pero utiliza la inferencia de tipo para eliminar la mayor parte del ruido que se obtiene en Java. También es totalmente compatible con la programación funcional, y tiene muchas características de pythonish. Debido a que está tipado estáticamente, es tan eficiente como Java directo sin ninguno de los inconvenientes. En mi humilde opinión, es el lenguaje que debería haber sido Java en primer lugar.

Mucha gente está blogueando sobre el uso de Scala en Android, así que busca más información en Google.

+1

Definitivamente voy a echar un vistazo a Scala, debería ser interesante. –

+0

Depende de cómo codifique su programa. Si eres un programador experimentado de Python, hazlo, ya que es lo suficientemente rápido para la mayoría (o casi todos) de los propósitos. Solo evita Java siempre que puedas. – OTZ

+0

@otz: para los programas normales de escritorio estaría de acuerdo contigo, pero como dije en mi publicación (1) actualmente no hay manera de convertir un script de python en una aplicación de Android liberable, (2) la implementación de SL4A Python no da el acceso a la API completa de Android y (3) en el uso de la batería de un teléfono móvil es primordial. Un lenguaje dinámico como Python va a usar más jugo que el equivalente de Java o Scala. –

2

Es más probable que dependerá del tipo de aplicaciones que desarrolle.

Comenzaría con Java para familiarizarme con Android SDK. De todos modos, primero debes buscar algunos ejemplos, tutoriales. La mayoría de ellos están hechos en Java, y solo unos pocos, probablemente en el sitio de desarrollo de SL4A para eso.

También hay desarrollo nativo Android NDK, que se puede programar con C++.

Pero, de todos modos, las reglas de Java para aplicaciones generales.

+0

No pensé en tutoriales/documentación, ese es un buen punto. Así que probablemente debería comenzar en Java de todos modos, independientemente de qué idioma utilizo al final. –

2

Adición de una actualización a la respuesta de Dave Kirby:

Issue 55, Distribute scripts as APKs, en el seguimiento de incidencias en ofertas SL4A específicamente con eso.

Hay una solución que se está solucionando (puede estar completa ahora) que se describe en SharingScripts. El único problema parece ser que necesitas tener un intérprete APK ya instalado.

1

es un marco para el desarrollo de aplicaciones de Android basadas en JRuby, lo que significa que su código JRuby puede llamar a las API de Android y también se puede recuperar desde el lado de Java de Android. Here es un artículo introductorio.

1

Considere ising Kivy, si desea escribir aplicaciones de Android con Python. El proceso de empaquetado de la secuencia de comandos en el archivo .apk se describe here.

El problema es que el .apk resultante será grande (~ 7Mb para datos de 300Kb). Es obvio, porque necesita empaquetar el tiempo de ejecución de Python y todas las bibliotecas.

Otra solución de la que he oído hablar es Pygame for Android, pero funciona en lewel inferior, por lo que debe dibujar gráficos manualmente.

Lamentablemente, no he intentado ninguna de estas formas todavía, pero parece que voy a comenzar a usar kivy pronto.