
En
los últimos años, el núcleo Linux de Android se metió en la
mayoría de nuestros bolsillos (hasta el 75%, según algunos
estudios). Sin embargo, el primer mes de 2013 aportó varias
novedades interesantes que abren nuevas oportunidades y opciones a
usuarios, desarrolladores y sistemas móviles basados en Linux.
Es
interesante que al mismo tiempo que Android domina el mercado y
adquiere una calidad y madurez comparable a la de su gran competidor,
el iOS de Apple, aparezcan alternativas derivadas pero tan
diferentes. El argumento de los protagonistas suele ser de índole
técnico: tener sistemas sólo basados en HTML5, más ligeros y con
menos requerimientos de hardware. Pero también se leen y adivinan
otras razones. Aunque el sistema Android es software libre, Google
tiene un gran control sobre el ecosistema: determina las pautas de
desarrollo y lanzamientos, es propietario de la marca y logo de
Android que le permiten establecer condiciones a los fabricantes,
hasta las aplicaciones más usadas son programas -no libres- de
Google: Play, Maps, Gmail, etc.
Las
razones técnicas
Android
Inc. nació en 2003 para desarrollar el sistema Android, luego fue
adquirida por Google en 2005. En 2007 se creó la Open Handset
Alliance para fomentar su desarrollo, y se lanzó el primer
dispositivo con Android en 2008. La pila de software de este sistema
operativo está formada por software libre: Linux, herramientas de
software necesarias, y en la capa más alta la máquina virtual
Dalvik, la responsable de ejecutar el código de las “aplicaciones
nativas” para Android, escritas en Java.
La elección de Java como lenguaje de programación fue criticada desde el principio. A diferencia de iOS, que ejecuta en código nativo del procesador (compilado desde el fuente en Objective C), en este caso la ejecución no es directa, Dalvik es el responsable de ejecutar el código intermedio de Java. El objetivo era la independencia del procesador, aprovechar las librerías existentes, y atraer a la masiva comunidad de programadores Java. Los desarrolladores de Android hicieron un gran esfuerzo en optimizar la ejecución de los programas, Dalvik no es la máquina virtual de Java estándar, sino una específicamente diseñada para dispositivos de poca memoria y potencia, en las últimas versiones incluye optimizaciones tan importante como JIT ( Just In Time compiler).
Las optimizaciones de Java/Dalvik no son las únicas. Android aprovecha las capacidades más avanzadas del Linux para minimizar el uso de memoria mediante una arquitectura muy bien diseñada. Por razones de seguridad, las aplicaciones se deben ejecutar como procesos diferentes (similares a los procesos de cualquier Unix o distribución GNU/Linux), con su propio intérprete y librerías de Java. Para no duplicar el consumo de memoria de cada proceso, se usa de forma muy ingeniosa la técnica Copy On Write (COW) de Linux, que evita duplicar páginas de memoria de sólo lectura o ejecución.
A pesar de las optimizaciones, las críticas continúan justificadamente. Android todavía no ha llegado a la suavidad y uniformidad de tiempos de respuestas del iOS. Incluso en las últimas versiones de 4.2 se observan regresiones importantes en este campo.
Los
tres nuevos sistemas operativos -Tizen, Ubuntu for phones, y
FirefoxOS- están basados, como Android, en el núcleo Linux y
prácticamente sus mismas herramientas, pero los tres eliminan la
capa de Java/Dalvik.
Las
otras motivaciones
El
dominio del mercado de un sistema operativo libre, pero con una
enorme dependencia de Google, no convencía -ni convenía- a muchos
fabricantes, lo que parece haber generado una falta de compromiso con
la marca. Así, la mayoría de los fabricantes no dedicaron recursos
para mantener actualizados sus dispositivos con las innovaciones y
actualizaciones frecuentes, frutos de la rápida evolución de
Android.
Esa
falta de compromiso generó una “fragmentación” por la variedad
de versiones -antiguas y modernas- disponibles simultáneamente. Así,
los desarrolladores deben dedicar más esfuerzos para mantener
compatibilidad con las antiguas versiones y al mismo tiempo
aprovechar las mejoras de las últimas. Una situación no deseada por
nadie. Google hace esfuerzos para evitar esta fragmentación, por
ejemplo, con la Platform Development Kit que facilita el trabajo de
adaptación de Android a los diferentes terminales, pero no
fructificaron lo suficiente todavía, ni siquiera entre las marcas
más importantes.
La
situación tampoco interesa mucho a las operadoras telefónicas. Cada
terminal Android que subsidian significa un mercado aún mayor para
Google, por los nuevos usuarios y el tráfico generado por el
buscador, el navegador Chrome y las demás aplicaciones importantes.
La Fundación Mozilla tampoco estaba en una situación cómoda,
Firefox perdía terreno en los dispositivos móviles, el Webkit es el
motor HTML más usado en Android (Chrome) e iOS (Safari y Chrome), lo
que implica una reducción de la influencia de Mozilla sobre los
estándares web futuros.
Se
daban todas las condiciones para probar nuevas alternativas con una
ventaja adicional, Android y Linux ya les facilitaron el trabajo:
podían utilizar el mismo sistema operativo base, ya adaptado y
funcionando en la mayoría de terminales. Una opción razonable era
construir la última capa del sistema operativo -interfaz de usuario
y soporte de aplicaciones- basadas en HTML5. Ya existían intérpretes
eficientes y libres -Gecko y Webkit-, sólo había que ampliar el API
y preparar los entornos de desarrollo. Además, conseguirían mayor
apoyo de desarrolladores (es un entorno que ya conocen) y una rápida
adaptación de las aplicaciones HTML5 ya existentes.
HTML5
vs aplicaciones nativas
La
popularización de aplicaciones nativas, en detrimento de las
aplicaciones HTML5, significó un retroceso a la situación de
apertura y estándares que se había logrado en la web. Se podían
aprovechar mejor las capacidades del hardware no previstas en HTML5 o
Javascript, pero esto también ocasiona problemas y costes para los
programadores. Hay que desarrollar para diversas plataformas (Apple,
Android, RIM, Windows), o recurrir a sistemas de desarrollos
multiplataformas propietarios y no estandarizados.
Aunque
en los últimos años se lograron grandes avances en la eficiencia de
los motores HTML y Javascript, aún están lejos del rendimiento que
ofrece el código nativo (como el de iPhone), o incluso la máquina
virtual de Dalvik de Android. Además del Javascript, el HTML (y sus
CSS asociados) es un lenguaje complejo que debe interpretarse y crear
el árbol completo (DOM) para que sea accesible y manipulable desde
Javascript. Hacerlo eficientemente exige ingeniería sofisticada, y
requerirá tiempo hasta tener tiempos de ejecución similares a
máquinas virtuales de Java.
Por
ello no es tan simple cumplir con algunas promesas de que las
aplicaciones HTML5 serán más rápidas en las aplicaciones nativas
de Android. Es verdad que al reducir software y librerías necesarias
se ahorra memoria (y por lo tanto hardware más barato) y que la
gestión de la memoria de Linux sufrirá menos “presión”, pero
ello no implica que se obtengan automáticamente mejores “velocidades
de ejecución”. Mientras no se tengan tests objetivos comparando
aplicaciones de complejidad y funcionalidades similares, es más una
expresión de deseos que una realidad probable.
Lo
que puede pasar
Aunque
es lo habitual, no soy tan temerario para pretender que puedo
predecir el futuro. Sin embargo, hay cambios importantes evidentes:
los nuevos sistemas operativos tienen un claro posicionamiento a
favor de HTML5. Aunque será complicado que a corto plazo compitan
con aplicaciones nativas equivalentes, es una buena iniciativa, su
influencia nos acercará nuevamente a las ventajas -ya demostradas
durante la última década- de desarrollar sobre estándares web.
FirefoxOS
es una apuesta muy importante para Mozilla y cuenta con el apoyo de
Telefónica (una de las operadoras más grandes del mundo), que
distribuirá los teléfonos Geekphone en los países donde tiene
mayor presencia, especialmente Sudamérica. Samsung ha alcanzado una
posición dominante con sus teléfonos Android, por lo que no se
espera que abandone la plataforma en el futuro próximo, pero su
compromiso de lanzar dispositivos con Tizen será un gran empuje a
ese sistema operativo y el desarrollo HTML5 en general, lo que
redundará también en beneficios para FirefoxOS y WebOS.
Es
un poco más arriesgada la apuesta de Ubuntu, situada a medio camino
entre una elección por HTML5 y aplicaciones nativas más eficientes
-en principio- que las programadas en Java. Se juega su futuro en la
adopción de su sistema de desarrollo para aplicaciones nativas, más
cercano al iOS de Apple.
Ninguna
lo tiene fácil para quitarle mercado a Android. Aunque aumente la
tendencia de desarrollar aplicaciones HTML5, Android está preparado
para ejecutar esas aplicaciones desde su navegador, o desde “vistas”
en aplicaciones nativas, además se beneficiará del desarrollo y
mejoras del Webkit en Tizen (eventualmente, también Apple).
Como
dije al principio, no será el año que Linux domine el mercado de
los teléfonos móviles, ya lo hizo. Pero sí un año interesante por
la aparición de estos sistemas operativos basados en Linux y de
estándares HTML5, útiles para todas las plataformas.
Desde
una perspectiva global, y analizando la historia de la informática
de los últimos 30 años, estamos comprobando otra vez cómo, con el
tiempo suficiente, las plataformas basadas en software libre
facilitan la prueba y error necesarios para innovar, y terminan
dominando el mercado en áreas fundamentales. Eso sí, por donde
menos lo esperaban hasta los mejores expertos, por eso es mejor no
hacer predicciones.