Android y iOS son los sistemas operativos móviles más utilizados en todo el mundo, por no decir que los únicos (ya que la cuota de mercado de Windows Phone se acerca, merecidamente, al 0%). Aunque a grandes rasgos ambos sistemas pueden parecer muy similares (ajustes, comparten apps, etc), en realidad las diferencias entre los sistemas de Google y Apple son inmensas, tanto a nivel de funcionamiento, prestaciones y seguridad como, sobre todo, a nivel de rendimiento.
Siempre se ha dicho que Android funcionaba lento, que tenía lag y ralentizaciones, y que los dispositivos no eran fluidos. Esto es cierto «entre comillas», ya que en la mayoría de los casos se estaba comparando un smartphone de gama baja o media con Android con uno, digamos, de gama alta como podría ser un iPhone.
Sin embargo, si conseguidos dos smartphones con idéntico hardware (por ejemplo, el iPhone 8, con 2 GB de RAM, y un smartphone Android también con 2 GB de RAM) y los ponemos a funcionar con ambos sistemas, iOS, el sistema operativo de Apple, funcionará mucho mejor y mucho más fluido que Android. Incluso si cogemos el iPhone 6, con 1 GB de RAM (y que ejecuta iOS 11, la última versión) y lo comparamos con un Android con 3 GB de RAM, el smartphone de Apple seguirá funcionando más fluido que el de Google, ¿por qué?
Android tiene un importante lastre al cuello: Java VM
Mientras que desde los inicios iOS siempre ha compilado y ejecutado el código de forma nativa (debido a que este sistema utiliza siempre un hardware muy concreto), Android fue diseñado para funcionar en prácticamente cualquier tipo de hardware, por lo que, al ser imposible configurar compiladores para cada procesador se tuvo que optar por la peor opción que existía: recurrir a la máquina virtual de Java.
De esta manera, los desarrolladores pueden escribir y compilar una aplicación en Java, y la máquina virtual se encargará directamente en reescribirla para poder ejecutarse en el dispositivo, utiliza el hardware que utilice. Esto, aunque práctico, supone una considerable pérdida de rendimiento, y es que esta VM necesita una gran cantidad de RAM y recursos en general, y además tiene prioridad por encima de todo lo demás, por lo que el resto de elementos de Android, como las aplicaciones y procesos en segundo plano, pierden prioridad a favor de la máquina virtual de Java.
Si además de la máquina virtual tenemos varias aplicaciones abiertas, e incluso aplicaciones que han creado sus propios procesos para notificaciones (WhatsApp, Twitter, Facebook, etc), el gasto de RAM es inmensamente superior. Mientras que con 3 o 4 GB de RAM Android puede tener problemas, iOS 11 puede funcionar, más o menos, con solo 1 GB al no necesitar ninguna máquina virtual y ejecutarse todo directamente en código nativo.
La gestión de la RAM es muy superior también en iOS
Además del lastre que supone la máquina virtual, a la hora de gestionar el uso de la memoria RAM iOS es mucho más eficiente que Android. En el caso del sistema operativo de Google, la RAM la gestiona el propio sistema operativo, dando total libertad a las aplicaciones para que utilicen la RAM que quieran (y, si se quedan sin memoria libre, bloqueándose), en el caso de iOS son las aplicaciones las que reservan X cantidad de memoria y esta queda a total disponibilidad. Cuando se cierra la aplicación, o cuando otra aplicación no tiene espacio suficiente, se libera esta reserva de memoria por completo, siendo esto mucho más eficiente.
Esta es la razón por la que en Android existen «optimizadores de RAM«, unas de las peores aplicaciones que se nos puede pasar por la cabeza instalar, mientras que en iOS no existen (sí existen, pero realmente no hacen nada con la RAM, porque iOS solo les permite tener acceso a sus recursos, no a los de otras aplicaciones).
La verdad es que Google está haciendo muchos esfuerzos para mejorar todo lo relacionado con la RAM de Android, desde el ya obsoleto Project Butter hasta los últimos proyectos como ART, Android One y Android Go. Ahora solo queda esperar a ver si realmente sirven para algo, aunque, mientras Java ronde en este sistema… difícil lo tiene.
¿Crees que Google debería tomar como prioridad optimizar Android para funcionar mejor incluso con menos RAM?