Desarrollo de aplicaciones móviles
El desarrollo de aplicaciones móviles es el proceso de creación de aplicaciones de software que se ejecutan en un dispositivo móvil, y una aplicación móvil típica utiliza una conexión de red para trabajar con recursos informáticos remotos. Por lo tanto, el proceso de desarrollo móvil implica crear paquetes de software instalables (código, binarios, activos, etc.) , implementar servicios backend como el acceso a datos con una API y probar la aplicación en los dispositivos de destino.
El desarrollo de aplicaciones móviles es el proceso de creación de aplicaciones de software que se ejecutan en un dispositivo móvil, y una aplicación móvil típica utiliza una conexión de red para trabajar con recursos informáticos remotos. Por lo tanto, el proceso de desarrollo móvil implica crear paquetes de software instalables (código, binarios, activos, etc.) , implementar servicios backend como el acceso a datos con una API y probar la aplicación en los dispositivos de destino.
El desarrollo de aplicaciones móviles es el proceso de creación de aplicaciones de software que se ejecutan en un dispositivo móvil, y una aplicación móvil típica utiliza una conexión de red para trabajar con recursos informáticos remotos. Por lo tanto, el proceso de desarrollo móvil implica crear paquetes de software instalables (código, binarios, activos, etc.) , implementar servicios backend como el acceso a datos con una API y probar la aplicación en los dispositivos de destino.
El desarrollo de aplicaciones móviles es el proceso de creación de aplicaciones de software que se ejecutan en un dispositivo móvil, y una aplicación móvil típica utiliza una conexión de red para trabajar con recursos informáticos remotos. Por lo tanto, el proceso de desarrollo móvil implica crear paquetes de software instalables (código, binarios, activos, etc.) , implementar servicios backend como el acceso a datos con una API y probar la aplicación en los dispositivos de destino.
Aplicaciones móviles y plataformas de dispositivos
Hay dos plataformas dominantes en el mercado moderno de los teléfonos inteligentes. Una es la plataforma iOS de Apple Inc. La plataforma iOS es el sistema operativo que impulsa la popular línea de teléfonos inteligentes iPhone de Apple. La segunda es Android, de Google. El sistema operativo Android es utilizado no sólo por los dispositivos de Google, sino también por muchos otros fabricantes de equipos originales para construir sus propios teléfonos inteligentes y otros dispositivos inteligentes.
Aunque existen algunas similitudes entre estas dos plataformas a la hora de crear aplicaciones, desarrollar para iOS frente a desarrollar para Android implica utilizar diferentes kits de desarrollo de software (SDK) y diferentes cadenas de herramientas de desarrollo. Mientras que Apple utiliza iOS exclusivamente para sus propios dispositivos, Google pone Android a disposición de otras empresas siempre que cumplan requisitos específicos, como incluir determinadas aplicaciones de Google en los dispositivos que distribuyen. Los desarrolladores pueden crear aplicaciones para cientos de millones de dispositivos dirigiéndose a estas dos plataformas.

Alternativas para crear aplicaciones móviles
Existen cuatro enfoques de desarrollo principales a la hora de crear aplicaciones móviles
- Aplicaciones móviles nativas
- Aplicaciones móviles nativas multiplataforma
- Aplicaciones móviles híbridas
- Aplicaciones web progresivas
Cada uno de estos enfoques para desarrollar aplicaciones móviles tiene sus propias ventajas e inconvenientes. A la hora de elegir el enfoque de desarrollo adecuado para sus proyectos, los desarrolladores tienen en cuenta la experiencia de usuario deseada, los recursos informáticos y las características nativas que requiere la aplicación, el presupuesto de desarrollo, los objetivos de tiempo y los recursos disponibles para mantener la aplicación.
Aplicaciones nativas
Las aplicaciones móviles nativas están escritas en el lenguaje de programación y los marcos proporcionados por el propietario de la plataforma y se ejecutan directamente en el sistema operativo del dispositivo, como por ejemplo iOS y Android.
Aplicaciones multiplataforma
Las aplicaciones móviles nativas multiplataforma pueden escribirse en distintos lenguajes y marcos de programación, pero se compilan en una aplicación nativa que se ejecuta directamente en el sistema operativo del dispositivo.
Aplicaciones web híbridas
Las aplicaciones móviles híbridas se crean con tecnologías web estándar, como JavaScript, CSS y HTML5, y se incluyen en paquetes de instalación de aplicaciones. A diferencia de las aplicaciones nativas, las híbridas funcionan en un "contenedor web" que proporciona un tiempo de ejecución en el navegador y un puente para las API nativas del dispositivo a través de Apache Cordova.
Aplicaciones web progresivas
Las PWA ofrecen un enfoque alternativo al desarrollo tradicional de aplicaciones móviles, ya que se saltan la entrega en la tienda de aplicaciones y la instalación de aplicaciones. Las PWA son aplicaciones web que utilizan un conjunto de capacidades del navegador -como trabajar sin conexión, ejecutar un proceso en segundo plano y añadir un enlace a la pantalla de inicio del dispositivo- para ofrecer una experiencia de usuario "similar a la de una app".
Pros | |||
+ Mejor rendimiento en tiempo de ejecución | + Código base único para múltiples plataformas | + Código base compartido entre aplicaciones web y móviles | + La misma aplicación está disponible tanto para web como para móvil |
+ Acceso directo a las API de los dispositivos | + Facilidad para crear y mantener su aplicación | + Utilización de los conocimientos de desarrollo web para crear aplicaciones móviles | + No requiere instalación, accesible a través de una URL |
Contras | |||
- Mayores costes de creación y mantenimiento de la aplicación | - Depende de puentes y bibliotecas para funciones nativas del dispositivo | - Menor rendimiento en comparación con las aplicaciones nativas | - Compatibilidad limitada con funciones nativas del dispositivo |
- Múltiples bases de código para cada plataforma | - Limitaciones de rendimiento debidas a los puentes | - Compatibilidad limitada con funciones nativas del dispositivo | - Las funciones de la aplicación dependen del navegador utilizado |
Comparación entre aplicaciones nativas e híbridas
En el nivel más alto, hay cuatro formas principales en que las aplicaciones nativas difieren de las híbridas, como se ilustra en la siguiente tabla.
Nativo | Híbrido |
---|---|
Plataforma específica | Plataforma cruzada |
Lenguaje compilado | Scripting / Compilado |
Acceso al hardware del dispositivo | Plugins / Módulos nativos |
Marcos de plataformas | Marcos web |
¿Por qué elegir el enfoque híbrido/plataforma cruzada?
Uno de los problemas del desarrollo de aplicaciones móviles nativas es que requiere un conjunto de conocimientos muy especializados. Aunque existen grandes y dinámicas comunidades de desarrolladores de C y Java -las familias de lenguajes que más se utilizan para el desarrollo nativo-, hay menos desarrolladores que conozcan las versiones específicas para plataformas de esos lenguajes y sus respectivos IDE. De hecho, la demanda de desarrolladores de aplicaciones nativas cualificados es tal que muchas empresas tienen dificultades para contratarlos y mantenerlos en plantilla, por lo que a menudo tienen que recurrir a empresas externas de diseño y desarrollo para que les creen sus aplicaciones.
¿Cómo funcionan los marcos híbridos y multiplataforma?
Las aplicaciones híbridas permiten a los desarrolladores utilizar tecnologías web de HTML5/CSS/JavaScript y luego encapsular esas aplicaciones web en un contenedor que permite a la aplicación web actuar como una aplicación nativa en el dispositivo. Dado que las aplicaciones móviles híbridas no son más que aplicaciones web que se ejecutan en un entorno de navegador integrado, la mayor parte del código de una aplicación web puede utilizarse para crear una aplicación móvil. Dado que el rendimiento de renderizado y ejecución de los navegadores móviles es cada vez mayor, el desarrollo híbrido es una alternativa viable para los desarrolladores web que quieren crear aplicaciones móviles rápidamente.
Del mismo modo, las PWA se escriben utilizando tecnologías tradicionales de programación de aplicaciones web que suelen incluir alguna variante de JavaScript, HTML5 y CSS, y a las que se accede inicialmente a través de un navegador en el dispositivo u ordenador.
La mayoría de los frameworks multiplataforma como - React Native y Native Script - proporcionan componentes nativos para trabajar con el código multiplataforma, mientras que algunos otros como Flutter y Xamarin compilan el código multiplataforma al código nativo para un mejor rendimiento.
El ciclo de vida del desarrollo de aplicaciones móviles
Una aplicación móvil tiene dos componentes básicos interrelacionados: 1) la aplicación móvil "Front-End" que reside en el dispositivo móvil, y 2) los servicios "Back-End" que dan soporte al front-end móvil.

Front-end vs. Back-end
En los inicios de la era moderna de las aplicaciones para teléfonos inteligentes, las aplicaciones móviles experimentaron una evolución similar a la de los primeros sitios web. Al principio, las aplicaciones y los sitios estaban totalmente contenidos en sí mismos y actuaban como poco más que anuncios estáticos de la marca, la empresa, el producto o el servicio.
Sin embargo, a medida que mejoraban la conectividad y las capacidades de la red, las aplicaciones se conectaban cada vez más a fuentes de datos e información que vivían fuera de la propia aplicación, y las aplicaciones se volvían cada vez más dinámicas al poder actualizar su interfaz de usuario y su contenido con los datos recibidos a través de la red mediante consultas a fuentes de datos.
Como resultado, las aplicaciones frontales móviles dependen cada vez más de servicios back-end que proporcionan datos para ser consumidos a través del front-end móvil y se integran con ellos. Estos datos pueden incluir, por ejemplo, información sobre productos para aplicaciones de comercio electrónico o información sobre vuelos para aplicaciones de viajes y reservas. Para un juego móvil, los datos pueden incluir nuevos niveles o retos y puntuaciones o avatares de otros jugadores.
¿Cómo "habla" el front-end con el back-end?
El front-end móvil obtiene los datos del back-end a través de una serie de llamadas a servicios como las API. En algunos casos, estas API pueden ser propiedad y estar gestionadas por la misma entidad que desarrolla la aplicación móvil. En otros casos, la API puede estar controlada por un tercero y el acceso se concede a la aplicación móvil a través de un acuerdo comercial.
Por ejemplo, un desarrollador puede obtener contenidos de medios sociales o publicidad realizando llamadas a servicios de medios de comunicación o empresas de publicidad. En este caso, un desarrollador puede tener que firmar un contrato para obtener credenciales y una clave que le conceda acceso a la API y rija cómo puede utilizarla ese desarrollador, cuánto le costará, o con qué frecuencia se puede llamar, o cuántos datos se pueden solicitar durante qué periodo de tiempo.
¿Por qué los desarrolladores utilizan un backend en la nube?
En la mayoría de las aplicaciones, los desarrolladores móviles son responsables de crear y gestionar los servicios de back-end para su aplicación. El desarrollador móvil puede no ser un experto o incluso no estar particularmente capacitado para poner en marcha y ejecutar una infraestructura de back-end.
En tal caso, los desarrolladores pueden preferir recurrir a un proveedor de servicios en la nube -un proveedor de backend como servicio- que se encargue de todo el trabajo pesado de gestionar las capacidades de back-end, para que los desarrolladores puedan centrarse exclusivamente en las características y funcionalidades que están creando en su aplicación, sin tener que preocuparse por la escalabilidad, la seguridad y la fiabilidad.
El front-end de la aplicación móvil
El front-end móvil es la parte visual e interactiva de la aplicación que experimenta el usuario. Suele residir en el dispositivo, o al menos hay un icono que representa la aplicación visible en la pantalla de inicio o anclado en el catálogo de aplicaciones del dispositivo. La aplicación puede descargarse de la tienda de aplicaciones de la plataforma, cargarse directamente en el dispositivo o accederse a ella a través del navegador, como en el caso de las PWA.
¿Cómo es un flujo de trabajo de desarrollo front-end?
Cuando un desarrollador dice que es programador de aplicaciones móviles, suele referirse a la parte frontal de la aplicación, y es experto en los lenguajes y tecnologías que se utilizan para crear esta aplicación frontal.
Dependiendo del tamaño del equipo que produzca la aplicación, puede haber muchas personas diferentes implicadas en el diseño y desarrollo del front-end de la aplicación móvil. El tamaño del equipo puede variar desde un único desarrollador que hace todo lo relacionado con la creación de la aplicación, hasta decenas, cientos y más personas con conocimientos especializados.
Por ejemplo, puede haber diseñadores creativos/gráficos que se encarguen de crear los elementos visuales de las aplicaciones, como iconos, fondos, colores, temas y otras partes de la aplicación. El equipo también puede tener diseñadores de experiencia de usuario y de interfaz de usuario que trabajan en la disposición de los componentes, cómo interactúan entre sí y con el usuario. En el caso de ciertos tipos de juegos, un equipo puede incluir desarrolladores de gráficos en movimiento e incluso ingenieros que desarrollan motores que gobiernan la física de cómo se mueven los componentes en la aplicación, como un coche en un juego de carreras.
¿Cómo se integran las aplicaciones móviles con el backend?
Independientemente del tamaño del equipo, un elemento crítico del esfuerzo de desarrollo es construir la lógica de la aplicación que es responsable de realizar llamadas de red a los servicios back-end, recuperar datos y actualizar los datos en los sistemas back-end con la nueva información generada desde la aplicación.
Normalmente se accede a estos servicios de back-end a través de una variedad de interfaces de programación de aplicaciones, más comúnmente conocidas como API. Existen diferentes tipos de API, como REST y GraphQL, y también hay una gran variedad de medios y estilos para acceder a ellas. Mientras que algunas API de servicios back-end están disponibles directamente para la aplicación a través de llamadas en la propia plataforma, muchos de los servicios especializados tienen que integrarse en la aplicación a través de un kit de desarrollo de software, comúnmente conocido como SDK. Una vez que el SDK se ha añadido a la aplicación a través del entorno de desarrollo, la aplicación puede hacer uso de las API definidas en el SDK.
¿Cómo interactuar con los datos del backend?
Un ejemplo de servicio back-end para un front-end móvil podría ser una base de datos que contenga información utilizada en la aplicación. Para acceder directamente a la base de datos, el desarrollador tendría que conocer su ubicación en la red, el protocolo de acceso, las credenciales para autenticar y autorizar el acceso a los datos y los comandos específicos de la base de datos necesarios para extraer la información requerida.
Como alternativa, el desarrollador puede utilizar una API especializada al interactuar con la base de datos; puede que el desarrollador sólo tenga que conocer los parámetros necesarios en una llamada a un método para obtener o actualizar la información necesaria. En algunos casos, el desarrollador móvil puede desarrollar estas API por sí mismo o utilizar la definición de API que le proporciona el propietario/operador del recurso back-end.
Normalmente, una API REST se utiliza para interactuar con fuentes de datos en la nube, como una base de datos en la nube. Una API GraphQL también es otra opción para los desarrolladores, ya que facilita el trabajo con datos backend en una aplicación móvil. GraphQL proporciona soporte de consulta a través de un único punto final de API, y un esquema de datos que se puede utilizar para construir y ampliar fácilmente los modelos de datos que se utilizan en la aplicación.
El back-end de las aplicaciones móviles
Independientemente de la plataforma de front-end o de la metodología de desarrollo que se utilice, la entrega de aplicaciones móviles de alta calidad que deleiten y retengan a los usuarios requiere servicios de back-end fiables.
Dada la importancia crítica de los servicios back-end para el éxito de la aplicación móvil, los desarrolladores deben tomar varias decisiones arquitectónicas importantes. Estas decisiones incluyen qué servicios deben construir ellos mismos y qué servicios de terceros deben aprovechar, y luego deben ejecutar y mantener sus propios servicios o deben aprovechar los servicios de terceros.
La respuesta es cada vez más clara: para mejorar la productividad y la eficiencia de los desarrolladores, los programadores de aplicaciones móviles sólo deberían crear sus propios servicios si son muy específicos para el dominio de la aplicación e incorporan una propiedad intelectual única. Además, incluso para los servicios que construyen ellos mismos, casi siempre deben aprovechar los servicios basados en la nube para construir y mantener su infraestructura backend.
Servicios clave de aplicaciones móviles
Hay cientos de servicios en la nube y de terceros que los desarrolladores de aplicaciones móviles pueden aprovechar para acelerar el desarrollo y la entrega de sus aplicaciones. Sin embargo, es poco probable que un desarrollador sea capaz de convertirse en un experto en cada uno de estos servicios individuales.
En su lugar, los desarrolladores móviles deben buscar un entorno de desarrollo que les facilite la integración, el uso y el consumo de las capacidades más comúnmente requeridas en su aplicación de forma rápida y sencilla, al tiempo que conservan la libertad de aprovechar los numerosos servicios individuales disponibles.
Esencial
- Registro y gestión de usuarios
- Inicio de sesión social (inicio de sesión en Facebook, inicio de sesión en Twitter, etc.)
- Análisis y participación de los usuarios
- Notificaciones Push
- Pruebas con dispositivos reales
Servicios de datos
- Almacenamiento en la nube
- Datos en tiempo real y fuera de línea
- Lógica de aplicaciones/funciones en la nube
Aprendizaje automático
- Bots conversacionales
- Reconocimiento de imágenes y vídeos
- Reconocimiento de voz