2010-07-13 8 views
25

Después de hacer toda la programación de "empresa" por un tiempo, estoy muy desilusionado por el lenguaje en sí mismo y siempre me siento bastante obstaculizado si tengo que volver a hacerlo. El tamaño del proyecto de su aplicación promedio de Android no es demasiado intimidante y las bibliotecas son bastante agradables en cuanto a su estilo de codificación, pero si pudiera evitar Java, ciertamente lo haría.Android sin Java

Así que esa es la pregunta: ¿Puedo evitarlo? Si bien hay un montón de lenguaje JVM que sería una opción en los escritorios y servidores, la VM Dalvik y los dispositivos en sí mismos presentan algunos límites. Esto parece ser un poco mejor en 2.2 con el JIT, pero limitarme a la vanguardia sería una decisión bastante dura.

La única alternativa que conozco que se usa parece ser Scala. ¿Hay alguna posibilidad de que me esté perdiendo? Clojure parece ejecutarse exactamente en los problemas que he ilustrado anteriormente con Dalvik, pero como AppInventor se basa en Kawa, ¿podría haber esperanza de un Lisp en la plataforma móvil?

¿Qué otros lenguajes ya se pueden utilizar o avanzan hacia eso?

+2

posible duplicado de [¿Puedo programar para Android usando cualquier lenguaje JVM?] (Http://stackoverflow.com/questions/3002566/can-i-program-for-android-using-any-jvm-language) –

+1

Esa y otras discusiones mencionaron muchos candidatos potenciales. Y realmente no es tan difícil obtener un lenguaje JVM para ejecutarlo un poco en Android, la viabilidad y el rendimiento son otros problemas ... – mhd

+0

En cuanto a los cargos de Oracle contra Android, ¿puede ser una posibilidad futura real desde el punto de vista de Google soltar Java y marcar algunos otro idioma como el principal compatible? (Tal vez debería hacer una pregunta real con respecto a esto, no solo comentar). – pcjuzer

Respuesta

14

Personalmente, yo diría que Scala es su mejor apuesta en este momento. Funciona muy bien, con el único inconveniente de que debe incluir Scala como dependencia (lo que aumentará el tamaño de su aplicación).

+4

El tamaño de la aplicación se puede mantener bajo control utilizando ProGuard. – missingfaktor

+0

@missingfaktor de acuerdo, la diferencia final en el tamaño de la aplicación puede ser tan baja como ~ 500Kb –

1

This link tiene algunos detalles sobre cómo obtener las aplicaciones scala que funcionan en android. Estoy seguro de que puedes hacer algo similar para clojure u otros lenguajes de jvm.

Ruboto tiene el objetivo de poner en JRuby.

9

¿Hay alguna posibilidad de que me falta?

Tons of 'em!

Clojure parece funcionar exactamente en los problemas que he ilustrado arriba con Dalvik

No estoy al tanto de esto. Cualquier lenguaje JVM que sea un compilador anticipado (es decir, genera bytecode Java en la PC desarrolladora) debería funcionar con Dalvik.

pero como el AppInventor se basa en Kawa puede haber esperanza de un Lisp en la plataforma móvil

yo sepa, App Inventor es sólo con Kawa para la generación de código.

¿Qué otros idiomas ya son utilizables o dar pasos hacia eso?

Bueno, existe HTML5 (Javascript), que funciona bien en modo fuera de línea.

O bien, hay PhoneGap (HTML + CSS + Javascript).

O bien, hay Rhodes (aplicaciones Rails-esque en Ruby en el dispositivo).

O bien, Titanium Appcelerator Mobile (HTML + Javascript, pero con ganchos de Javascript para renderizar widgets UI nativos).

O, hay Flash, al menos para Android 2.2+.

O bien, hay AIRE ... bueno, está bien, todavía está en lanzamiento previo.

Como Elfred notó mientras escribía esto, está JRuby con Ruboto.

Hay Bedrock, Corona, DroidScript, Flixel, MobiForms, MonoDroid, MoSync, Squeak y SuperWaba.

Hay C/C++ a través del NDK, aunque es principalmente para agregar bibliotecas de extensión a una aplicación Java más que para escribir aplicaciones de código nativo completo.

There's SL4A (anteriormente el entorno de secuencias de comandos de Android o ASE), que es su puerta de entrada a Python, Perl, Lua y otros lenguajes de scripting. A partir de este momento, no puede empaquetar estos scripts como APK, pero están trabajando en eso.

Ahora, ninguno de estos le dará exactamente el aspecto de una aplicación de Android "normal". Para ellos, necesitas un lenguaje JVM con compilación anticipada. Y no hay duda de que las aplicaciones de Android Java estándar de pantano son por lejos las más numerosas. Pero a diferencia de algunos sistemas operativos con sabor a fruta que bloquean este tipo de cosas, tiene muchos lugares para experimentar con alternativas a la codificación Java tradicional con Android.

Algunos balding guy está escribiendo un libro que va a revisar todas estas opciones, pero que está parcialmente listo ahora.

+2

En este momento, estoy buscando principalmente aplicaciones "nativas". Y mi información sobre Clojure podría ser un poco vieja, pero recuerdo algo en la lista de correo hace un par de meses donde los tiempos de inicio eran bastante prohibitivos. Solo obtener algo para ejecutar en Dalvik/Android no es difícil, pero es difícil vender algo que tiene un rendimiento dramáticamente inferior. – mhd

+1

"Clojure parece funcionar exactamente en los problemas que he ilustrado anteriormente con Dalvik" Los problemas con Clojure tienen más que ver con tiempos de arranque pésimos, gran cantidad de tamaño y un compilador JIT pobre (en comparación con Hotspot). La naturaleza funcional de Clojure también significa que depende mucho del recolector de basura, otra área en la que Dalvik está muy atrás de Hotspot. – technomancy

11

¿Has mirado en Mirah? Te da una sintaxis similar a Ruby y se compila en Java. Ha sido etiquetado como CoffeeScript de Java.

+1

Mirah es ideal ya que agrega funciones más modernas como inferencia de tipo y cierres, pero agrega una sobrecarga de tiempo de ejecución cero. Eche un vistazo a Pindah: https://github.com/mirah/pindah, una pequeña herramienta para ayudar con la construcción de las aplicaciones de Mirah para Android. El Dr. Dobbs tiene una buena descripción general del lenguaje: http://drdobbs.com/java/229400307 – technomancy

+0

@technomancy, ¿correcto, pero cómo se obtiene soporte de IDE para esto? – Pacerier

0

Xamarin Studio te permite construir en C#/Mono y crear aplicaciones para Android y iOS. Ahora las capas de presentación deben implementarse de manera diferente en ambas plataformas, pero para la capacidad de usar C#, es una gran ganancia.

1

DroidScript es probablemente una de las herramientas de desarrollo más fáciles de usar para el desarrollo de Android. Al igual que Cordova, utiliza JavaScript, pero a diferencia de Cordova, tiene la opción de utilizar las GUI nativas de Android o HTML5 para construir las interfaces de la aplicación.

También tiene acceso a todos los sensores/hardware de dispositivos sin tener que importar montones de complementos complicados. Además, obtienes la ventaja de poder desarrollar realmente en tu dispositivo móvil si es necesario (incluso puedes crear APK y publicarlas desde tu dispositivo).

Diría que es muy bueno para principiantes o prototipos, pero tal vez no lo suficientemente flexible para desarrolladores experimentados.

0

Nunca lo he usado, pero Kotlin es un nuevo lenguaje que se ejecuta en la JVM desarrollada por JetBrains (el creador de Android Studio) que merece una mención. El sitio web de Kotlin afirma que el lenguaje es 100% interoperable con Java y tiene un tutorial para Getting started with Android and Kotlin y Android Studio ahora viene con el soporte de Kotlin.