Episode

Obstáculos en el desarrollo de aplicaciones multiplataforma

Important

This content is not available in English. The original version can be found in Spanish here.

Existen 4 obstáculos principales a los que los desarrolladores de aplicaciones multiplataforma deben enfrentarse:

  1. Diferentes paradigmas de Interfaz de Usuario.
  2. Diferentes ambientes de desarrollo.
  3. Diferentes interfaces de programación.
  4. Diferentes lenguajes de programación.

Diferentes paradigmas de Interfaz de Usuario

Las 3 plataformas incorporan formas similares de representar la interfaz de usuario gráfica (Graphical User Interface - GUI) y la interacción con el dispositivo a través de la característica multitáctil, sin embargo, existen algunas diferencias entre ellas.

Cada plataforma tiene diferentes maneras de navegar entre aplicaciones y páginas, diferentes convenciones para la representación de datos, diferentes formas de invocar y desplegar menús, e incluso, diferentes enfoques del uso la característica táctil.

Los usuarios están acostumbrados a interactuar con aplicaciones sobre una plataforma particular y también esperan aprovechar ese conocimiento con nuevas aplicaciones. Cada plataforma adquiere su propia cultura y esas convenciones culturales tienen que ser consideradas por los desarrolladores.

Diferentes ambientes de desarrollo

Actualmente los programadores están acostumbrados a trabajar en ambientes de desarrollo integrado (IDEs) sofisticados. Existen IDEs en las tres plataformas, pero cada uno diferente de los otros:

  • Para el desarrollo iOS existe Xcode sobre Mac.
  • Para el desarrollo Android existe Android Studio sobre una variedad de plataformas.
  • Para el desarrollo Windows existe Visual Studio sobre PC.

Diferentes interfaces de programación

Las 3 plataformas están basadas en diferentes sistemas operativos con diferentes APIs. En la mayoría de los casos, las 3 plataformas implementan tipos similares de objetos para la interfaz de usuario con diferentes nombres. Por ejemplo, las 3 plataformas tienen "algo" que permite al usuario seleccionar un valor booleano:

  • En iPhone o iPad se tiene un "view" llamado UISwitch.
  • En dispositivos Android se tiene un "widget" llamado Switch.
  • En la API Windows Runtime se tiene un "control" llamado ToggleSwitch.

Por supuesto, más allá de los simples nombres, las diferencias se encuentran en las interfaces de programación mismas.

Diferentes lenguajes de programación

Los desarrolladores tienen un poco de flexibilidad para seleccionar un lenguaje de programación para cada una de las 3 plataformas, pero, en general, cada plataforma está asociada con un lenguaje de programación particular:

  • Objective-C para iPhone y iPad.
  • Java para dispositivos Android.
  • C# para Windows.

Objective-C, Java y C# son parecidos debido a que todos ellos son lenguajes orientados a objetos descendientes de C, sin embargo, las características particulares de cada lenguaje, hacen que sean como primos lejanos.

Por estas razones, una empresa que quisiera desarrollar para las tres plataformas podría emplear tres diferentes equipos de programadores, cada uno de ellos calificado y especializado en un lenguaje y API particular.

Este problema de lenguaje, es el problema más importante a resolver. Si pudiéramos utilizar el mismo lenguaje de programación para estas tres plataformas, podríamos al menos compartir algo de código entre ellas. Este código compartido no podría ser de la interfaz de usuario debido a que cada plataforma tiene diferentes APIs, sin embargo, podría ser código de la aplicación que no tenga que ver del todo con la interfaz de usuario, por ejemplo, el código que implemente la lógica de negocios de la aplicación.

Un simple lenguaje para estas tres plataformas podría ser conveniente, pero, ¿Qué lenguaje podría ser ese?

Xamarin
C#