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:
- Un conjunto de herramientas para generar bibliotecas que corren en forma nativa a partir de código fuente en C y C++.
- Una forma de integrar las bibliotecas nativas en paquetes distribuibles para dispositivos Android (.apks).
- Un conjunto de bibliotecas que serán soportadas en todos los siguientes releases de Android, comenzando por la versión 1.5.
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:
- La interfaz JNI para usar el código nativo desde Java (Java Native Interface)
- libc : Biblioteca estándar de C
- libm : Biblioteca estándar para operaciones matemática.
- libz : Biblioteca de compresión Zlib
- liblog : Acceso al subsistema de registro (logging)
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.
Bonus Track : Soporte de lenguajes interpretados
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:
- Iniciar actividades.
- Enviar mensajes de texto.
- Usar la información de los sensores o de ubicación.
- Usar text-to-speech, etc.
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.
Fuente: fayerwayer.com
Tags: android, Android Native Development Kit, Android NDK, beanshell, c/c++, Google, java, javascript, json, jython, lua, python, ruby
![Validate my RSS feed [Valid RSS]](http://validator.w3.org/feed/images/valid-rss.png)
Hola a tod@s!
Aquà dejo un par de aportes más de python para Android:
http://www.talkandroid.com/1225-android-scripting-environment/
http://www.damonkohler.com/2008/12/python-on-android.html
Un saludo!