En la etapa inicial de un proyecto en el que sea necesario la implementación de una aplicación móvil se debe realizar un ejercicio que debe ser tomado con calma y éste consiste en seleccionar la tecnología con la que se va a desarrollar. La decisión, desde la experiencia, no debería ser tomada a la ligera bien sea por que el desarrollador solo tenga experiencia en cierta tecnología ni por tendencia de Frameworks que estén en auge. Esta actividad debe ser realizada por un desarrollador que esté enterado de las facilidades que prestan ciertos desarrollos en algunas situaciones, es decir, dependiendo de la complejidad del desarrollo se puede seleccionar un tipo de aplicación móvil que va a ser desarrollada.

El propósito de esta entrada es el de orientar en la toma de decisión de desarrollo del tipo de aplicación móvil que se debe escoger al plantear una solución tecnológica para un proyecto de tecnología. Aquí vamos a orientar los tipos de desarrollo que dominan el mercado de aplicaciones móviles y describir el proceso que cada una sigue hasta la etapa del lanzamiento en tiendas. Finalmente, se relacionan ventajas y desventajas por cada proceso de desarrollo.

¿Influye en el tiempo de desarrollo?

Planteemos el caso hipotético y experimental de realizar la misma aplicación de forma nativa e híbrida, en este escenario vamos a notar que los tiempos de desarrollo son diferentes básicamente porque al hablar de desarrollo nativo necesariamente estamos hablando de dos lenguajes de programación distintos y ni hablar de la diferencia de los entornos de desarrollo (Android Studio y Xcode). Mientras tanto, el desarrollo de una aplicación móvil híbrida se realiza con una sola base de código. Sin embargo, el hecho de hablar de una sola base de código no necesariamente implica un tiempo menor de desarrollo en todas las situaciones. Por este motivo, debemos conocer exactamente cuál va a ser la solución del problema que necesitemos resolver, en estricto sentido conocer los requisitos no funcionales de nuestra aplicación.

Tipos de aplicaciones móviles:

 

Aplicaciones móviles nativas

El desarrollo móvil nativo consiste en implementar en lenguajes de programación específicos a las plataformas Android y iOS. La opción principal para desarrollar en Android es Java y Kotlin. Los lenguajes para desarrollar en iOS son Objective-C y Swift.

Para enfrentar un desarrollo nativo necesitamos a un desarrollador experto en un lenguaje de programación por cada plataforma, es decir, si seleccionamos Java y Swift el desarrollador se debe entender muy bien con ambos proyectos.

Aplicaciones Híbridas

En este caso se recurre al poderoso campo del desarrollo de aplicaciones web con Html5, CSS y JavaScript. Las aplicaciones web que se desarrollen se muestran en un WebView, de manera que se renderizan tal cual como en un navegador web. El acceso a los recursos del sistema depende de la implementación de terceros como por ejemplo el uso de la cámara del dispositivo, si se necesitara una funcionalidad especial del dispositivo, se debe desarrollar una funcionalidad extra que haga eso, sin embargo, necesariamente se debe realizar utilizando un lenguaje nativo.

En este punto se hace una mención a un tipo de desarrollo híbrido especial en donde se desarrolla una sola base de código, pero ésta no se ejecuta sobre una WebView sino que convierte a código nativo, en este sentido el código escrito en JavaScript va a construirse en dos compilaciones nativas acercándose a una experiencia de usuario cercana a los desarrollos nativos.

Proceso de desarrollo de aplicaciones nativas

El proceso de desarrollo de aplicaciones nativas debe dividirse en cada una de las plataformas, es decir dos proyectos en el que las fuentes serán desarrolladas en lenguajes de programación diferentes. El desarrollo nativo tiene completo acceso a los recursos del sistema y prestaciones del sistema operativo Android y iOS. El sitio oficial de desarrollo de Android lo encuentras aquí https://developer.android.com/docs. Además de la documentación oficial para programar en Android nativo vas a encontrar Kotlin que es un lenguaje de programación de tipo estático que https://developer.android.com/kotlin/. Para iOS el desarrollo nativo se utiliza principalmente Swift, en el siguiente enlace encuentras la documentación https://developer.apple.com/swift/ .

Luego de que cada aplicación se ha desarrollado, cada entorno de desarrollo se encarga de automatizar el proceso de empaquetado para subir a las tiendas. Android Studio genera los APK listos para subir a la tienda, mientras que Xcode genera los binarios y los sube directamente a la tienda.

Ventajas:

  • Acceso directo de recursos del dispositivo.
  • La comunidad de desarrollo es de lejos la más amplias

Desventajas

  • Solo se pueden ejecutar para el sistema para la cual fue desarrollada.
  • El proceso de aprobación en tiendas es riguroso.
  • El tiempo de desarrollo se puede aumentar si se desarrolla para cada plataforma.

(Referencia al artículo de http://sunsetswh.com/las-3-tendencias-tecnologicas-que-transformaran-tu-organizacion-en-el-2019/

Proceso de desarrollo de aplicaciones híbridas

Con Ionic Framework, el desarrollo híbrido no es necesario contar con simuladores de dispositivos móviles y tener instalado el entorno de desarrollo de aplicaciones nativas al principio, es necesario un navegador web como Google Chrome. Luego de desarrollar el código base y probarlo con el navegador web, estará preparado para ser construido mediante el CLI de Ionic. Con las configuraciones indicadas la construcción de los paquetes para cada plataforma se puede reducir a un comando. Para el caso de iOS la construcción genera un proyecto que se abre en Xcode y se sigue con el proceso como si fuera una aplicación nativa.

Similar al desarrollo con Ionic una aplicación React Native requiere desarrollar una sola base de código con Javascript, sin embargo, se necesita una configuración de entorno de desarrollo para trabajar con emuladores de dispositivos móviles. Al Finalizar el desarrollo la construcción de los paquetes para cada plataforma también se puede lograr con pocos comandos en consola.

Ventajas

  • Pueden ser ejecutadas en todas las plataformas.
  • Reducción de costos de desarrollo.
  • Aprobación en tiendas es ágil.
  • Todos los beneficios de las aplicaciones HTML5.

Desventajas

  • El acceso a recursos del dispositivo se limita a código de terceros.
  • Compatibilidad restringida con dispositivos anteriores a ciertas versiones.

(Referencia al artículo http://sunsetswh.com/ventajas-ecommerce/).

Conclusiones

  1. Considerar otros tipos de desarrollo que agilicen el tiempo de construcción del proyecto en lugar de las técnicas tradicionales de aplicaciones nativas cuando sea pertinente.
  2. Con el desarrollo de aplicaciones nativas se logra acceder a la totalidad de prestaciones del sistema operativo de cada plataforma.
  3. Considerar desarrollo híbrido cuando el problema a solucionar sea presentar información obtenida desde la web.
  4. El desarrollo de aplicaciones con Frameworks que generan código nativo como React Native se acerca a la experiencia de usuario nativa.
¿Necesitas una aplicación móvil para tu empresa, emprendimiento o proyecto? 

Sunset Software House S.A.S te ofrece el servicio de Fábrica Integral de Software y será tu aliado tecnológico en el desarrollo de la aplicación móvil que deseas.

¡Diligencia el formulario y cuéntanos tu necesidad, nos comunicaremos muy pronto contigo!.

¡Déjanos un mensaje y atenderemos pronto tu solicitud!