Android y la fragmentación

Ya os hemos contado que Google tiene la intención de abrir una tienda "on-line" de aplicaciones para el sistema operativo Android. El sistema Android para teléfonos y dispositivos móviles se publicará bajo licencia de código abierto Apache, por lo que cualquiera puede modificar el código y adaptarlo a sus necesidades.

Sobre mi mesa hay dos móviles con la misma versión del sistema Symbian y del mismo fabricante. Uno dispone de teclado "qwerty" y no tiene cámara, el otro usa un teclado normal de móvil, dispone de cámara y tiene diferente resolución de pantalla. La empresa Symbian, cuando vende una licencia a un fabricante para que haga un nuevo teléfono, le obliga a que mande un equipo de técnicos a sus oficinas para controlar como se implementa el sistema operativo. Las aplicaciones Symbian tienen que ir firmadas, se comprueba de esta forma que es lo que realmente hacen y su compatibilidad. Aun así, hay aplicaciones que van correctamente en uno de mis móviles y no en el otro. ¿Como controlará Google si los programas de Android funcionarán en un teléfono o no?

Un vistazo a…
ANDROID 12 YA ESTÁ AQUÍ: NOVEDADES Y FUNCIONES

Según el jefe de proyecto Andy Rubin, Android contará con una tecnología que comprobará que APIs se han implementado en un modelo concreto, un "script" que se ejecuta y nos dice que APIs hay en el terminal. Para un programador, esta no es una solución muy apetecible. Al crear un programa se necesitan saber las APIs del dispositivo para conocer sus capacidades concretas y ha de poder hacerse durante la ejecución, por si se actualiza el software del teléfono. Además, saber que una API no está presente solo nos sirve si creamos un programa que contemple todas las posibilidades en cuanto a capacidades presentes o ausentes.

Aunque todos los fabricantes adoptasen un mínimo de APIs de Android, eso no asegura la compatibilidad entre los móviles Android. Existen unos test de compatibilidad de Sun para comprobar las APIs de Java, las JSR. Consisten en miles de tests muy detallados que comprueban la compatibilidad de la máquina virtual de Java (JVM) en un móvil concreto. Aún así, un programa en Java puede no funcionar en un móvil a pesar de que tenga la misma JVM, según los tests, que otro móvil en que se ejecuta correctamente. Los motivos son que a pesar de los miles de pruebas pueden seguir quedando errores no detectados, que la implementación sea suficiente para los tests pero no completa, o por el propio hardware del dispositivo.

Android permite que el fabricante implemente o no una API, incluso que la modifique a su gusto. Si los programadores no saben si sus creaciones van a funcionar en todos los modelos tendremos la tan temida fragmentación, que ha impedido un mayor éxito de Java en los móviles. Al día de hoy el problema no existe, se programa para un solo emulador y todo funciona de maravilla. Pero cuando empiecen a aparecer terminales con Android, lo mejor que podría pasar es que uno o dos móviles se convirtiesen en superventas y marcasen la pauta para el resto de fabricantes. En caso contrario, mas vale que nos vayamos olvidando de la compatibilidad de los androides.

Vía | Simon Judge Mas información | The Register

Portada de Xataka Móvil