iOS vs Android ¿Por dónde empiezo?

Vamos a continuar con el enfrentamiento entre ambos sistemas operativos móviles, lo hemos visto desde distintas perspectivas, esta vez lo haremos desde el punto de vista del desarrollador.

Lo primero es analiza cada uno de los entornos y estudiar los pros y contras. Para decidir atenderemos criterios personales ¿Quiero ganar la máxima cantidad de dinero? ¿Quiero llegar a un mayor número de personas? ¿Programar en una gran comunidad? ¿Tener éxito con las chicas? (Deja tu ordenador y vete al gimnasio).

Intentaré ser lo más neutral posible, por una parte me encantan los dispositivos Android, subir tu aplicación y tenerla disponible para millones de personas en cuestión de segundos es simplemente genial. Por otra parte, tenemos los dispositivos móviles de Apple, con un diseño espectacular, una buena respuesta y que podría utilizar mi abuela en pocas horas de aprendizaje.

Evaluaremos las siguientes secciones: Accesibilidad, Aprendizaje, gestión de la memoria, documentación, XCode && Eclipse, interface de presentación, emulador/simulador, Otras cuestiones.

 

Round 1. Accesibilidad.

 

En este punto tenemos un claro ganador: Android. Para escribir una linea en iOS y que sirva para algo, hace falta un Mac. Una vez que tienes un Mac…si tienes la última versión de Mac Os, podrás descargarte el último Xcode. En caso contrario, tendrás que pagar. Sin embargo, Eclipse está disponible en Mac, Linux y Windows y  se puede instalar la SDK en cualquiera de esas plataformas.

Por otra parte, iOS está ligada a los dispositivos de Apple, Android es adaptable por los fabricantes y por lo tanto accesible a través de una amplia gama de dispositivos y precios. IOS no está disponible en todas las compañías, además, no todo el mundo puede permitirse el lujo de desembolsar el dinero para adquirir un iPhone o iPad. Android está orientado un público masivo.

Android Win (0-1)

 

Round 2: Curva de aprendizaje: Java vs Objective-C.

 

Java es un lenguaje de programación muy conocido, por lo tanto en Android se puede tener una base ya adquirida.

Android , entre los desarrolladores, es más competitivo, ya que se pueden extrapolar los conocimientos rápidamente. Cuando hay mucho de algo ocurre que baja su valor y tiene salarios más bajos. A menos que hayas hecho algún desarrollo de Mac o iOS, no sabes Objective-C, por lo que la curva de aprendizaje para iOS es mayor en gran parte de los casos.

Superficialmente, Objective C y Java tienen un cierto parecido. Ambos lenguajes tienen una sintaxis inspirada en C , y los dos lenguajes comparten la mayoría de los tipos primitivos. Sin embargo, Objective C y Java tienen diferencias fundamentales:

 

– La comunidad Java es grande. Por ejemplo, hay muchos libros sobre Java.

 

– Java usa static typing, mientras que Objective-C promociona el dynamic typing.

 

– Objective-C tiene todas las características de bajo nivel de C

 

En resumen, mientras que Objective-C tiene sus ventajas, las ventajas culturales y prácticas de Java son mayores.

Android Win (0-2) 

Round 3. Gestión de la memoria.

 

Muchos desarrolladores de Android afirman que la gestión de memoria en IOS consume mucho tiempo por la «recolección de basura» manual. Android te dice : «Ehh tio, no te preocupes por la basura, yo la saco».

Las tornas cambiaron en el iOS 5 (existían otras soluciones poco eficientes previamente),tiene algo mucho mejor que un recolector de basura: tiene un Automatic Reference Counting (ARC) .  El recolector de basura utiliza algunos de los recursos de hardware. ARC, por otro lado, es una característica del compilador LLVM . Con ARC activado, el compilador utiliza las reglas para insertar la lógica de gestión de memoria en el código de la app durante la compilación. El concepto detrás de ARC es que los desarrolladores escriben menos código sin sacrificar el rendimiento.

Los recursos de hardware (memoria, espacio en el disco, potencia de la CPU) en los dispositivos móviles siempre han sido limitados.Yo personalmente prefiero la gestión manual de recursos y en Objetive-C es muy fácil, por tanto diría que iOS gana en este aspecto.

iOS Win (1-2)

Documentación.

 

Google y Apple han llegado con documentación ideal para sus plataformas. Sin embargo, a veces parece que las colecciones de código de ejemplo son insuficientes para ambos sistemas operativos. Personalmente no tengo ninguna queja grandes acerca de la documentación para cualquiera de los sistemas operativos. Para iOS es muy dificil encontrar algo cuando quieres ir un poco más allá. Android tiene mayor cantidad de código de ejemplo que iOS. Seguramente tiene que ver con la filosofía del sistema y por extensión de su desarrolladores.

Android Win (1-3)

Diseño Interface: XML vs xib.

 

Tanto Android y iOS tienen editores visuales de diseño. En Android estos diseños son esencialmente escritos en XML, mientras que en iOS son los archivos. Xib. El editor de diseño en xCode es mucho más suave que el editor de diseño para Android. Lo bueno de los diseños de XML en Android es que hacen que sea fácil de reutilizar el código (copiar y pegar). También es cierto que la maquetación en Android es bastante más complicada ya que debe ser adaptable para los distintos tipos de resolución. No hay un claro ganador en este aspecto.

(1-3)

IDE : XCode vs Eclipse

 

Eclipse gana en una y sólo una manera: es compatible con Linux y Windows (que ya hemos cubierto en accesibilidad). Para utilizar XCode, necesita un Mac.

Eclipse consume demasiada memoria. Esto me parece muy difícil de dejar atrás. Eclipse es un IDE para Java, principalmente, y si hablamos de desarrollos para java ganaría de calle, pero al comparar el desarrollo de Objective-C en Xcode, este último es mucho mejor. He visto como Eclipse se quedaba sin memoria tratando de abrir un archivo XML. Me he pasado demasiado tiempo mirando la rueda de colorines giratoria, mientras que Eclipse está bloqueado.

A parte de ser lento, necesita desesperadamente un nuevo diseño. Hay algunas otras cosas interesantes en Eclipse que debería ser más accesible. Además,  no quiero tener que cambiar de ventana para «depurar perspectiva» cada vez que estoy tratando de depurar mi aplicación. Quiero ser capaz de desarrollar y depurar rápidamente y no quiero que mi ventana cambie entre la codificación y pruebas.

iOS Win(2-3)

Emulador/Simulador

 

Una de las grandes características tanto del Android y de la experiencia de desarrollo de iOS es que no necesitas poseer un dispositivo para desarrollar una aplicación (aunque es altamente recomendable). Gracias al emulador puedes probar el código mientras estás desarrollando. Tener que instalar y desinstalar quita mucho tiempo al desarrollo.

El SDK de iOS cuenta con un simulador de dispositivo y el SDK de Android cuenta con un emulador de dispositivos. Entonces, ¿cuál es la diferencia?

El emulador de Android imita tanto el software como el hardware de un dispositivo. Puedes configurar un dispositivo de emulación de nuevo con los parámetros específicos de hardware (es decir, la cantidad de RAM disponible en el dispositivo). El simulador de iOS sólo imita el software del dispositivo y que, teóricamente, puede acceder a cualquier recurso del ordenador. En este punto podríamos pensar que es mucho más lógico el simulador de Android que el simulador de iOS, ya que puede igualar el rendimiento real de un dispositivo. La respuesta es un rotundo NO. Es una mala idea que el rendimiento de la CPU sea el del dispositivo. Esto lo hace extremadamente lento. Si con el emulador quiero evitar instalar la app, me resulta molesto tener que esperar un tiempo similar. Dos consejos en Android: No cerrar la consola del emulador en cada prueba, y seleccionar el dispositivo más avanzado de la lista para hacer las pruebas.

iOS Win(3-3) 

Otros factores

 

Android está fragmentado. Hay muchas versiones del sistema operativo. El desarrollo de Android se parece algo al desarrollo web en que necesitas que la aplicación funcione en muchos sistemas operativos y dispositivos. Con iOS, en el peor de los casos debes de probar la aplicación en cerca de 10 dispositivos (suponiendo que la deseas probar en todas las versiones del iPhone,  y iPad), en comparación con los cerca de 200 dispositivos Android.

 

Conclusión

 

¿Qué plataforma es mejor? Es difícil de decir. Android tiene una cuota mayor del mercado, pero con iOS ganas más dinero y aumenta tus posibilidades de ligar 😛 . Dejo la decisión final en manos del lector.