La evolución de los dispositivos móviles en los últimos años es un claro ejemplo de que la evolución de las tecnologías está directamente ligada a la adopción masiva de la misma. Las innovaciones tecnológicas no suelen tener un éxito asegurado a menos que vayan acompañadas de una maduración de los aspectos técnicos, económicos y sociológicos. Esta maduración es la que se ha conseguido con los dispositivos móviles en los últimos diez años y ha cambiado la forma de pensar de la gente. Antes una persona con teléfono móvil de última generación, o era un “geek” o tenía dinero; Ahora una persona sin teléfono móvil con conexión a Internet o sin una cuenta en Facebook puede resultarnos un poco extraño. Esta adopción masiva de las nuevas tecnologías generan un efecto de “el pez que se muerde la cola”, ya que al haber mayor demanda hay una mayor oferta y conlleva al incremento de la producción y de la investigación de nuevas tecnologías con el fin de diferenciarse en el mercado.
En líder y pionero indiscutible en estos cambios en la forma de pensar acerca de los dispositivos móviles es Apple con su iPhone. Este fenómeno ha conseguido que todos los fabricantes se suban al tren de la guerra de Sistemas Operativos para móviles, que según mi opinión personal, acaba de empezar.
Existen miles de opiniones y de especulaciones acerca de quién será el líder del mercado de los dispositivos móviles en el futuro. En este artículo no me voy a basar en dichas especulaciones y voy a tratar de ser lo más realista posible con datos estadísticos hasta la fecha y con las ventajas de cada uno de los Sistemas Operativos desde el punto de vista del desarrollador.
Evolución venta SmartPhones 2009 – 2010
Fuente Gartner Nov 2010
En el gráfico anterior podemos observar datos reales de ventas mundiales de SmartPhones por Sistema Operativo durante el 2009 y 2010 con el fin de que los lectores del artículo puedan obtener sus propias conclusiones. Lo que más llama la atención del gráfico es sin duda el crecimiento de ventas de dispositivos Android del 2009 al 2010 superando las ventas del iOS y que las ventas de Windows Mobile van decreciendo. Symbian OS en cambio, tiene unas cifras muy altas debido a que es el Sistema Operativo usado por todos los dispositivos Nokia, Sony-Ericsson, Panasonic y Siemens. No obstante, Nokia ha anunciado un acuerdo con Microsoft por el cual todos sus dispositivos de alta gama vendrán con el Sistema Operativo Windows Phone 7, por lo que Symbian OS irá desapareciendo poco a poco en los dispositivos de gama media y baja.
Una vez visto los datos por encima del mercado actual, quiero hacer hincapié en una serie de ventajas y desventajas de cada uno de los Sistemas Operativos desde el punto de vista del desarrollador. Obviamente, dichas ventajas y desventajas de cada uno de ellos se basan en mi opinión personal, la cual puede cambiar en función de la experiencia y conocimiento por lenguaje de programación.
El cuanto al iOS, no he tenido la oportunidad de desarrollar nada aún para iPhone, más que nada porque no dispongo de un iPhone, un MAC o una cuenta de desarrollador de Apple, los cuales son requisitos fundamentales para desarrollar aplicaciones para iPhone/iPad. El éxito de este Sistema Operativo se fundamenta en el éxito de la experiencia de usuario conseguida con unas directrices estrictas de Apple a la hora de subir aplicaciones al AppleStore. En cuanto al entorno de desarrollo de iOS, deberemos interactuar con los métodos nativos del teléfono con el framework de Cocoa Touch construido en Objective-C. Este lenguaje de programación requiere bastante experiencia en programación C y un buen manejo de punteros y memoria, lo cual se hace complicado para desarrolladores sin cierta experiencia. Por otro lado, Apple cuenta con la herramienta XCode, la cual permite realizar interfaces de usuario realmente espectaculares de una forma relativamente sencilla.
Android, el Sistema Operativo de Google, viene pisando fuerte este último año gracias a su filosofía de código abierto basado en Linux. El éxito de Android se basa principalmente en su sencillez a la hora de desarrollar aplicaciones con su framework construido en Java, el cuál es muy intuitivo para los desarrolladores abstrayendo de forma sencilla todas las funcionalidades nativas de los dispositivos. El principal problema de Android a la hora de desarrollar es su poca flexibilidad en el momento de querer diseñar interfaces. Dichas interfaces deben crearse a mano mediante XML y en tiempo de ejecución con las librerías de Android. No obstante, Android tiene un puesto asegurado en los líderes de Sistemas Operativos ya que los fabricantes de dispositivos pueden ahorrarse costes en lugar de desarrollar sus propios Sistemas Operativos, aparte de que Android es multitarea y que está totalmente integrado con los servicios online de Google, como Gmail, GoogleMaps, etc. lo cual ofrece muchísimas ventajas desde el punto de vista del usuario final.
Microsoft es el más veterano en el desarrollo de Sistemas Operativos para dispositivos móviles con su Windows Mobile. Aún así, no han conseguido la penetración de mercado que ha conseguido Apple con su iOS y por ello, este año Microsoft nos sorprenderá con su Windows Phone 7 el cual soporta HTML5, es multitarea, viene integrado con todos los programas de Microsoft Office, lo cual será un valor añadido para los usuarios finales. Además, creo que una de las armas secretas de este Sistema Operativo será la integración completa con la XBox Kinect y todos sus servicios, llegando a poder interactuar con la consola desde el dispositivo móvil. En cuanto al entorno de desarrollo, opino que es el mejor conseguido por su facilidad de uso a nivel gráfico e interfaz, llegando a poder diseñar un interfaz con animaciones en apenas unos minutos con su Expression Blend con novedades como pantallas panorámicas y efectos parallax scrolling, cuando en cambio, esta misma interfaz podría llevarnos más de un día de desarrollo en un entorno Android. En cuanto al lenguaje de programación, podremos seguir programando en C-sharp, con la desventaja de que no podremos modificar la interfaz del Sistema Operativo y tampoco podemos acceder a los métodos nativos del teléfono de forma directa, los cuales serán tratados a partir de unas clases de Microsoft llamadas Choosers. Por ejemplo, todas las notificaciones que queramos realizar sobre nuestras aplicaciones se deberán realizar a partir de un push desde un servicio de Microsoft. Con esto Microsoft consigue una cierta homogeneidad en todas sus aplicaciones. Para el desarrollo de juegos para móviles, Microsoft ha hecho un excelente trabajo con sus plataformas XNA 2D y XNA 3D directamente pensadas para el desarrollo de videojuegos con el que podremos desarrollar nuestro propio “Angry Birds”en apenas unas horas mediante sus Starter kits.
El resto de Sistemas Operativos, como RIM, Symbian, etc. usan el lenguaje de programación J2ME. Con este lenguaje de programación ocurrirá lo mismo que ha ocurrido con COBOL y los Bancos, los cuales tienen todos sus sistemas desarrollados en un lenguaje de programación antiguo basado en COBOL debido a que cambiar todos sus sistemas a nuevas tecnologías supondría un coste gigantesco e innecesario y este hecho ha conseguido que el COBOL siga vivo, y que incluso se haya perfeccionado el lenguaje llegando a convertirse en un lenguaje orientado a objetos. El hecho de que J2ME está presente en la mayoría de dispositivos móviles de gama media y baja, supondrá que la gente siga desarrollando en dicho lenguaje y que incluso siga evolucionando pero en un segundo plano.
En conclusión, como he comentado a lo largo de este artículo, los dispositivos móviles han comenzado su transformación en entornos de ejecución abiertos, acortando la distancia que los separa de los PCs. En un futuro próximo, esta tendencia se acentuará, aunque todavía está por decidir quién va a ganar esta guerra de Sistemas Operativospara móviles que acaba de empezar. iOS ya conseguido una cuota de mercado y se encuentra muy bien posicionado en la batalla, mientras que el éxito de Android dependerá de la creatividad de los dispositivos que se construyan sobre él ya que el diseño en Android es mucho más claro y limpio que en otras plataformas más antiguas como Symbian. Esto es un reto para Microsoft y sobre todo para Symbian, que vienen luchando por lograr que los desarrolladores trabajen con sus APIs nativas tan complicadas. No obstante, nadie puede contradecir el poder que tiene Microsoft en el mercado y que el camino de esta batalla puede cambiar a golpe de armas secretas, como el acuerdo que ha hecho Microsoft con Nokia, lo cual supone la perdición de Symbian, o incluso la imposición del SO a base de talonario, lo cual es indiferente para el usuario final, el cual estaría satisfecho de poder interactuar con aplicaciones que usa y conoce de su PC como el pack de Office o Hotmail. Por otro lado, la plataforma J2ME, debido a su independencia de la plataforma hardware y a los escasos recursos que necesita, se convierta en la plataforma estándar de los dispositivos de gama media y baja.
Si eres emprendedor y/o desarrollador y te estás haciendo las preguntas que todos hemos hecho: ¿en qué plataforma desarrollo? y aún no tienes claro en cuál hacerla aún así viendo las cuotas de mercado y sabiendo tu público objetivo, mi recomendación es que desarrolles tus aplicaciones en Android, iOS y si tienes tiempo, te recomiendo que pruebes también en WP7 por si acaso el mercado gira bruscamente como suele ocurrir en estas batallas.