La plataforma de aplicaciones de Android es una máquina virtual de Java propia de Google, llamada Dalvik, por lo tanto las aplicaciones que corren en esta plataforma se deben escribir en el lenguaje Java de Sun Microsystems.
Para la mayoría de la situaciones, un lenguaje de alto nivel y portable como Java es suficiente, pero hay casos en los que no estaría mal tener la opción de ejecutar código nativo del procesador para implementar funcionalidades muy específicas sin pasar por la máquina virtual.
Este mes, Google ha anunciado el primer release de Android Native Development Kit (NDK). Se trata de un kit de desarrollo para Android que permite usar los lenguajes C y C++ desde aplicaciones en Java.
Android NDK provee:
En este primer release del NDK se da soporte para compilar en código de máquina para ARMv5TE, y se incluyen las siguientes bibliotecas:
El NDK no está pensado para construir aplicaciones completas en C/C++, sino que para escribir aplicaciones en Java como es usual y en casos muy específicos usar bibliotecas en C/C++ que se ejecutan en código de máquina nativo de ARM.
Hay que considerar que no se puede acceder a las API’s de Android a través de código nativo, por lo tanto estas bibliotecas pueden ser usadas para implementar funcionalidades que realizan una función muy acotada. Además que hay un sacrificio respecto a la portabilidad de las aplicaciones, ya que en el caso de Java el código compilado es portable, no así el caso de C/C++.
Por ejemplo, situaciones que ameritan el uso de código nativo son las de procesamiento intensivo de datos como : Simulación de física y procesamiento de señales (DSP), entre otros.
Por si esto fuera poco, también se anunció la disponibilidad de Android Scripting Environment o ASE. Se trata de un mecanismo que proveerá la plataforma necesaria para usar la API de Android desde lenguajes interpretados como Python.
La idea de proveer ASE es permitir a los desarrolladores usar lenguajes sencillos y bastante conocidos para crear aplicaciones o servicios que corren en background. Mediante la API de Android se puede por ejemplo:
En el código publicado hay soporte para Python, Lua y BeanShell. Próximamente habrá soporte para Ruby y JavaScript.
Estos lenguajes no corren necesariamente sobre Dalvik, por ejemplo el soporte de Python no es a través de Jython, sino que el interprete ha sido compilado a código nativo. En el caso de BeanShell se han publicado los servicios de Android a través de una clase que actúa como fachada (Patrón Facade).
Para los lenguajes que no tienen acceso a clases Java como es el caso de Python y Lua se creó una proxy que publica los servicios de la fachada a través de JSON, por lo tanto esto abre la puerta para se vayan integrando nuevos lenguajes con facilidad.
En el anuncio se incluyeron un par de ejemplos que demuestran la facilidad con que se pueden implementar servicios para Android con ASE. El primero que es de sólo 17 líneas de código Lua, desactiva el sonido del teléfono cuando alguien llama si éste se apunta hacia abajo. El segundo es de sólo 32 líneas de código Python que se conecta al servicio de chat para convertir a texto hablado los mensajes que van llegando.
Links:
- Introducing Android 1.5 NDK, Release 1 (Android Developers blog)
- Introducing Android Scripting Environment (Open Source at Google blog)
Publicado por Franco Catrin el 29 de June 2009 en la categoría Software con los tags Android, Open Source, Python. Tiene 17 comentarios.
17 Comentarios
Python, C y otros lenguajes se integran en Android

10Fernando dijo el 29-6-2009 a las 15:44:
Larga vida a Android, que se apega a los estandares actuales, y se nutre de ellos para potenciarse como un plataforma poderosa.
Ver Comentario... Aleksand dijo el 29-6-2009 a las 15:52 ...

-4kotak dijo el 29-6-2009 a las 16:09:
La verdad creo que están tratando de enmendar, el para mí, error de hacer todo dependiente de la maquina virtual, que si bien disminuye la complejidad, no deja de ser un elemento comedor de recursos.
Creo que lo mejor es que se hubieran apegado a un proyecto como MAEMO y dejar que se pueda disminuir la cantidad de recursos usados y dar libertad de desarrollo.

2Ricardo dijo el 29-6-2009 a las 16:40:
mmm interesante…
Pero una maquina virtual java de google, no se… Me gustaria que Sun estuviera tambien en el proyecto.

0Napcaia dijo el 29-6-2009 a las 17:37:
Creo que también se puede correr C# en android gracias a Mono (http://blog.neuronaltraining.net/?p=2734). no le he probado, en estos momentos estoy peleando con Monodevelop para hacer una aplicación que utilice LibUsbDotNet y se comunique por el puerto usb con un pic18f2550, si alguien sabe como hacerlo o tiene algún programa de ejemplo, seria de gran ayuda

4ChristianP dijo el 29-6-2009 a las 18:04:
Si puedo correr aplicaciones con QT, …. estariamos frente a la posible perfeccion….

4The Cellular dijo el 29-6-2009 a las 18:28:
Me parece interesante, así será mucho más estándar en el asunto de instalar y desarrollar aplicaciones, además al incluir el lenguaje C++ lo hace más versátil ya que C++ es un lenguaje estándar y más completo que incluye muchas librerías. Definitivamente Android es un gran Sistema Operativo…
Franco Catrin dijo el 29-6-2009 a las 20:43:
10@The Cellular
incluir el lenguaje C++ lo hace más versátil ya que C++ es un lenguaje estándar y más completo que incluye muchas librerías
Supongo que no lo estás comparando con Java…
Franco Catrin dijo el 29-6-2009 a las 20:45:
11@kotak
La verdad creo que están tratando de enmendar, el para mí, error de hacer todo dependiente de la maquina virtual, que si bien disminuye la complejidad, no deja de ser un elemento comedor de recursos.
Dada la forma en que funcionan las máquinas virtuales hoy en día eso es más un mito que realidad. El cambio que se hizo respecto a JNI es permitir usar código que ya está hecho en C/C++ o bien usarlo en casos muy específicos en donde si podría valer la pena (alguien dijo FFT?).

0C/C++, Python, Lua y BeanShell disponibles para programar en Android | gEEK tHE pLANET dijo el 30-6-2009 a las 00:08:
[...] bien, es un lenguaje de alto nivel con el que se puede hacer casi de todo, pero como explican en Fayerwayer: “…pero hay casos en los que no estaría mal tener la opción de ejecutar código [...]

0nonono dijo el 30-6-2009 a las 09:57:
buena movida, con la cantidad de sw. en C y Python que tienen hecho… se me viene a la cabeza la indexación local que hacia el google desktop

0Android añade lenguajes de programación: Python, C y otros : Blogografia dijo el 8-7-2009 a las 13:40:
[...] Vía | fayerwayer [...]

0The Pirate Bay ha sido vendida a Global Gaming Factory X dijo el 15-7-2009 a las 22:16:
[...] Vía | fayerwayer [...]