En momentos en que Android domina el mercado, Tizen, Ubuntu for phones y Firefox OS son alternativas derivadas pero muy diferentes
Qué lugar ocupa la fragmentación entre las razones técnicas y qué otras motivaciones pueden contribuir a su éxito
Las razones técnicas
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.