Cuando uno piensa en un smartphone o una tablet, seguramente la imagen que rápidamente parezca en su mente sea la de un terminal Android o un iPhone. Realmente no le falta razón, y es que entre ambos se reparten la práctica totalidad de pastel que representa el 100% de usuarios de teléfonos inteligentes. La decisión principal que debemos tomar a la hora de desarrollar nuestra aplicación es sencilla… ¿Android, iOS o ambas a la vez? Sin duda dependerá de varios factores que condicionan nuestro proyecto, como nuestros activos humanos, sus conocimientos, o simplemente si disponemos de material de desarrollo para llevarlo a cabo (el desarrollo iOS requiere un Mac con sistema OS X para firmar el código con Xcode).

El desarrollo Android ha evolucionado muy favorablemente con el tiempo, mejorando su rendimiento y las herramientas para trabajar en sus proyectos. Nos referimos sin duda a AndroidStudio, el entorno de desarrollo dedicado que Android necesitaba con urgencia, ya que anteriormente había que apoyarse en entornos existentes a los que instalar su SDK, una solución que en ocasiones se antojaba tortuosa, por aquello de no ser algo dedicado específicamente a esta tecnología. El lenguaje principal de desarrollo es Java, pero no es en único, ni cierra la puerta a otros conocidos como C++. Este último es un lenguaje más antiguo, pero de contrastado buen funcionamiento en cualquier plataforma. Java sin embargo, cuenta con un mayor alcance de desarrolladores, puesto que es una tecnología más extendida y que facilita el desarrollo con gestión automática de memoria, evitando el uso manual de punteros.

Android-IOSLa estructura de Android ha pasado por muchas etapas, pero algo común a todas ellas es la multitud de capas que lo forman, con una máquina virtual Java como último nivel previo al kernel del sistema, que ha sido objeto de críticas y culpada del bajo rendimiento de Android frente a iOS desde siempre. Los esfuerzos de Google por solventar el problema, llevo a cambiar este máquina por ART, que entraba en el sistema Android 5.0 Lollipop, y que venía a sustituir a la antigua Dalvik, que ha sido la JVM Ade Android desde su aparición hasta hoy.

La necesidad de estas máquinas virtuales y por ende, las capas del sistema operativo, tienen que ver directamente con el lenguaje elegido, ya que Android es un sistema basado en Linux, cuyo kernel está programado en C, por lo que Java queda en situación de “no nativo” para el sistema, y por tanto necesita una capa traductora para compilarlo en el kernel.

Otro mundo distinto habita en el mundo Apple y el desarrollo en iOS, desde la peculiaridad del sistema basado en UNIX, hasta una mejor elección en los componentes del sistema. El lenguaje de desarrollo históricamente predominante en iOS es Objetive-C, un derivado directo del lenguaje LISP, que fue el precursor de otros como C++. No hace falta comentar, que este lenguaje es nativo para el kernel del sistema iOS, por lo que sobra decir que, junto a un gran trabajo de optimización y diseño de software ajustado para el hardware, consiguen un funcionamiento limpio y fluido, al que sin embargo, cabe mencionar, Android se acerca cada vez más hasta situaciones de solapamiento con el sistema del robot verde.

El principal problema del desarrollo iOS, es la necesidad de material que de entrada es caro. Tendremos que contar con un Mac, ya sea MacBook, Mino, iMac o cualquier modelo en definitiva que lleve OSX instalado. El motivo real, es que para desarrollar iOS, debemos hacerlo en Xcode, el entorno de desarrollo por excelencia de Apple, y herramienta necesaria si queremos publicar una aplicación en su AppStore, ya que tendremos que firmar el código con dicho entorno.

Una curiosa circunstancia, es la no necesidad estricta de un iPhone para probar los desarrollos, ya que solo desde la actualización Xcode 7.1, permite probar el trabajo en muestro iPhon o iPad, sin necesidad de pagar la cuota de desarrollador, la cual asciende a 99$ anuales. Bajo nuestra opinión, no hay nada como probar los desarrollos en un dispositivo real, por linaje casi se hace necesario contar con un iPhone si quieres emplearte en la programación de apps para el sistema de la manzana.

Actualmente,  hay soluciones intermedias que están proliferando, y que sirven de ayuda en cuanto a tiempo en el desarrollo de aplicaciones que funcionan indistintamente en todos los sistemas operativos disponibles (Android, iOS o Windows Phone principalmente), haciendo uso de lenguajes nativos comunes a todas las tecnologías, ahorrando y proporcionando la creación simultánea de apps para las principales plataformas del mercado. Uno de los más interesantes es Xamarin, la tecnología global que es capaz de realzar lo descrito de forma eficiente, aunque requiera de solventar detalles específicos para cada plataforma a la hora de generar nuestra aplicación (como se ha comentado, firmar el código en el caso de iOS).

Existen otras posibilidades para el desarrollo de aplicaciones multiplataforma utilizando HTML5 y otras tecnologías orientadas a la web. Estas aplicaciones se denominan “híbridas” o Webapps, pero tienen como principales problemas el rendimiento en comparación con aplicaciones convencionales, y la ausente experiencia nativa de la misma.

Es por todo lo anterior, por lo que contar con un equipo de trabajo instruido en las recientes tecnologías y con conocimientos del panorama actual es clave para el desarrollo y futuro de un proyecto.