2010-05-14 17 views
12

¡Acabo de obtener un teléfono Android y me muero por empezar a codificarlo! Sin embargo, no soy un gran admirador de Java, aunque puedo vivir con eso, me gustaría saber si hay alternativas razonables para la máquina virtual de Android. He hecho un proyecto de tamaño medio usando clojure, sin embargo, de las críticas que leí, es muy lento cuando se ejecuta en Android. ¿Qué tal Scala? Leí que algunas personas experimentaron con él en Android, ¿es "lo suficientemente rápido"? ¿Qué tan grande es la curva de aprendizaje?Alternativas a Java en Android

Saludos, Ze Maria

Respuesta

4

Ahí está el NDK, que le permite escribir partes de su programa en C o C++.

Hay ASE que le permite escribir scripts en python y tal vez en otros idiomas. No hay compilador de Python a pesar de que pueda escuchar lo contrario.

He leído algo sobre Scala pero como no estaba realmente interesado no presté atención.

+1

NDK solo produce código para ARM en este momento. Entonces los dispositivos con otras CPU se quedan fuera. Como el WeTab. – stesch

4

Definitivamente hay bastantes personas haciendo el desarrollo de Android en Scala. De particular interés, incluso hay un plugin para SBT, el constructor preferido para los proyectos de Scala, con objetivos específicos de Android.

En cuanto a la curva de aprendizaje, no puedo hablar del desarrollo de Android en sí mismo, ya que no lo he hecho. En cuanto a Scala, puede ser productivo muy rápido, pero aprender todas las particularidades del lenguaje lleva su tiempo. No necesita para obtener para conocer todas las particularidades. He visto a gente escribir programas que no son de juguete sin apenas experiencia, pero algunas personas no soportan no saber algo sobre el idioma que están usando.

Además, muchos códigos de Scala son muy declarativos. Si miras los archivos de construcción SBT, por ejemplo, son en su mayoría declarativos. Algunas personas se molestan mucho por eso, por alguna razón.

Supongo que lo que intento decir es que depende en gran medida de lo bien que te lleves a Scala.

En cuanto a la velocidad, el código de Scala puede ser tan rápido como el código de Java, aunque eso puede requerir evitar las abstracciones de mayor nivel a cambio de un código más feo pero rápido. Depende mucho del tipo de cálculo que estés haciendo.

3

Android 2.2 agrega jit a la máquina virtual que se supone que hace que la carga de los programas Clojure sea mucho más eficiente. Clojure produce una gran cantidad de clases pequeñas que tardan un poco en cargarse cuando se inicia el programa de Android. esto debería ser aliviado con el enw android aunque no es intolerable ahora.

+4

Y el código de Clojure se basa en un buen GC, que dalvik no puede entregar. JIT o no. – stesch

0

"lo suficientemente rápido": está ejecutando aplicaciones en un teléfono móvil con una pregunta relativa a lo que espera que haga.

También el rendimiento de Java se ha incrementado a través de los años. Pero también corres solo estás codificando en java. Google ha creado una herramienta que toma el código de byte de Java y lo convierte en .dex (Dalvik Executables).La implementación de Dalvik the VM que usó java está optimizada para esta plataforma. Lo que significa que puede programar en un lenguaje de alto nivel como java que proporciona muchas clases de ayuda, lo que significa que será más productivo.

Tienen un NDK pero creo que todavía tiene que tener una interfaz java y hacer que su código java llame al código NDK cuando sea necesario. Simplemente desea escribir el código nativo cuando realmente necesita la optimización. Muchas clases de Java como java nio y las clases de OpenGL son solo envoltorios para llamadas de bajo nivel que usan recursos de hardware directamente.

Probablemente haya respondido usted pregunta un poco.

0

También hay Lua, que puede usar con Corona SDK.