Saltar la navegación

2. Tecnologías disponibles

¿Qué dispositivo voy a programar?

Cuando vas a desarrollar una aplicación para un dispositivo móvil, algunas de las primeras preguntas que te puedes hacer son:

  • ¿Sobre qué tipos de dispositivos móviles se pueden hacer programas? ¿Sobre qué tipo de hardware se puede programar?
  • ¿Qué sistema operativo puede llevar ese hardware?
  • ¿Qué plataformas de desarrollo existen para desarrollar sobre ese hardware y ese sistema operativo? ¿con qué lenguajes puedo programar? ¿qué herramientas (compiladores, bibliotecas, entornos, etc.) hay disponibles?

Las respuestas a este tipo de preguntas pueden ser múltiples y muy variadas:

  • Respecto al hardware, te puedes encontrar, como has visto ya, con teléfonos móviles (smartPhones), PDA y con otros dispositivos. Entre los principales fabricantes de teléfonos móviles se encuentran Nokia (el mayor proveedor de teléfonos móviles en 2010 con una gran diferencia del segundo, que sería Samsung), Samsung, HTC, Apple, Motorola, LG, Sony Ericsson, Alcatel-Lucent, etc. Entre los principales fabricantes de PDA se encuentran HP, HTC, Palm (adquirida por HP en 2010), Motorola, Samsung o LG. En realidad muchas veces coinciden los proveedores que desarrollan smartPhones con los que fabrican PDA. Por otro lado, ambos tipos de productos están en muchas ocasiones convergiendo hacia un único dispositivo final que cumple las dos funciones (telefonía móvil y asistente personal).
  • En cuanto a los sistemas operativos, dependiendo del hardware habrá sistemas diseñados para unos u otros dispositivos. Los hay basados en Microsoft Windows, en Linux, y en MAC OS X, así como otros totalmente originales y desarrollados específicamente para estos nuevos tipos de dispositivos. Entre los más populares se encuentran Symbian OS, Android, iOS, Blackberry OS y Windows Phone.
  • Si lo que deseas es conocer algo acerca de las plataformas de desarrollo disponibles para cada entorno (hardware y/o sistema operativo), podemos hablar de Java ME, Windows Mobile SDK, Maemo SDK, o bien de IDE como Microsoft Visual Studio, CodeWarrior, Eclipse, Netbeans.
  • Si te refieres a lenguajes de programación, normalmente te encontrarás con lenguajes que son ya viejos conocidos para otras plataformas, como pueden ser las aplicaciones de escritorio para los PCs o las aplicaciones web (Java, C#, C, etc.).

En definitiva puedes observar que en este nuevo mundo del desarrollo para dispositivos móviles te encuentras con una problemática similar a la que te puedes enfrentar con los ordenadores convencionales: distintos tipos de hardware, distintas opciones de sistemas operativos dependiendo del hardware que los soporte, diferentes lenguajes de programación, plataformas, API y bibliotecas, entornos de desarrollo, etc.

En la actualidad

En el desarrollo de aplicaciones móviles, a lo largo de los últimos años han aparecido tecnologías que nos ayudan a la creación de aplicaciones según las necesidades del proyecto que debamos afrontar. Normalmente, los creadores de cada sistema operativo móvil han designado el lenguaje y el entorno de desarrollo que se debe utilizar para la creación de aplicaciones en su plataforma. Por ejemplo, Java era el único estándar para Android hasta que en 2017 Google anunció Kotlin, y el IDE era Eclipse hasta que en el 2013 pasó a ser Android Studio, basado en IntelliJ IDEA de JetBrains. De igual modo, en iOS se programaba en Objective-C hasta que se creó el nuevo lenguaje Swift en sus múltiples versiones, y el entorno de desarrollo es Xcode. Ya apenas hay terminales Windows Phone o Blackberry, pero si necesitásemos desarrollar algo para esas u otras plataformas, tendríamos que saber que cada una de ellas normalmente utilizará un lenguaje y un entorno diferentes.

¿Por qué tanta variedad?

¿Qué interés hay en utilizar otras tecnologías diferentes a las de cada plataforma?

El motivo es ahorrar recursos. Imaginemos una empresa dedicada a programar juegos para Android e iOS. Tiene dos opciones: la primera es contratar un equipo de desarrolladores Android nativos y otro de desarrolladores iOS nativos que paralelamente desarrollen el mismo juego pero en plataformas diferentes, multiplicando por dos el coste en horas; la segunda es utilizar una tecnología híbrida que se programe una vez y funcione igualmente en iOS y Android, con lo que solo se necesita un equipo de desarrollo híbrido.

La última opción parece prometedora, pero conlleva algunos inconvenientes: la mayoría de las tecnologías híbridas están basadas en web, es decir, se crea una especie de aplicación web que se mostrará en el dispositivo como si fuese nativa, utilizando algunas librerías para el acceso al hardware, como la cámara, etcétera. Esto hace que sean aplicaciones menos potentes, que no puedan acceder a ciertos tipos de hardware y que sean más lentas. Quizá por ello, estas tecnologías son populares durante un tiempo y luego dejan de usarse, lo que supone que los programadores tengan que cambiar constantemente de tecnología, impidiendo que ganen experiencia.

Otras tecnologías, como Unity para juegos o Xamarin para aplicaciones, son más potentes. Sin embargo, no son públicas e implican un gasto de licencia.

Otro aspecto para tener en cuenta es que las plataformas móviles evolucionan rápidamente y no tienen ningún interés en ser compatibles con los frameworks híbridos ya existentes. Si eres un programador nativo, podrás adaptarte rápidamente a las nuevas interfaces o funcionalidades, tendrás documentación y ejemplos, pero si utilizas un framework, tendrás que esperar a que los creadores del framework saquen una actualización compatible con la nueva versión del sistema operativo.

Creado con eXeLearning (Ventana nueva)