En primer lugar...

Puedes realizar un cuestionario para saber cual es el entorno recomendado para ti.

A traves de unas simples preguntas, podras saber de una forma sencilla cual es el entorno de desarrollo que se adapta a tus necesidades .

Empezar Cuestionario
video

chat
Analizaremos los principales entornos de desarrolllo

Un extenso analisis te permitira saber las caracteristicas de cada uno.

chat
Rendimiento

Se comparara el rendimiento de las aplicaciones realizadas con cada uno de ellos.

image
chat
Facilidad de uso

Cuanto tiempo sera necesario para empezar a programar aplicaciones.

chat
Cuanto tiempo se tarda en desarrolar una App

Tiempo medio dependiendo de la plataforma.

Tipos de aplicaciones

Exiten 3 tipos diferentes de aplicaciones

- 2 - Introducción y justificación

- Motivos de su elección

He elegido este tema para mi proyecto debido a la gran cantidad de entornos, plataformas y lenguajes de programación que existen para desarrollar aplicaciones tanto para Android como para IOS, de modo que, cualquier persona pueda hacerse una idea de que plataforma es la mas recomendada dependiendo del tipo de aplicación que se quiera desarrollar.

- A quien va dirigido

Va dirigido a cualquier persona que quiera desarrollar una aplicación móvil, tengan o no experiencia y conocimientos de programación.
Para usuarios que ya sepan programar, les será útil para identificar rápidamente que plataforma utilizar para su aplicación y por que.
Para usuarios que no sepan programar, puede ser útil para de forma sencilla, puedan elegir una plataforma con la que sea sencillo empezar a desarrollar una aplicación e ir aprendiendo sobre la marcha.
Para usuarios que sepan programar, este análisis les servirá para elegir la mejor la mejor plataforma para poder desarrollar su aplicación dependiendo de sus necesidades.

- 3 - Objetivo del proyecto

- Qué se pretende conseguir

Se pretende guiar al usuario, para que de una forma simple y concisa, pueda elegir que plataforma es la mas recomendada para desarrollar su aplicación y por que, explicando detalladamente que ventajas e inconvenientes tendría sobre cualquier otra plataforma.

- Cómo se va a conseguir

Se analizaran detalladamente las principales plataforma y entornos de desarrollo para Android e IOS, y se expondrán los resultados de manera clara y concisa, además se compararan entre ellos para asesorar al usuario que plataforma le conviene mas según el tipo de aplicación.

- Qué novedades aporta

Actualmente no existe una forma sencilla de saber que plataforma de desarrollo en la mas adecuada para cada tipo de aplicación, teniendo que comparar una tras otra que ventajas e inconvenientes tiene cada una. Mi proyecto serviría de guía a nuevos usuario que quieran desarrollar una aplicación, facilitando que plataforma deberían usar y como utilizarla para desarrollar su aplicación.

- Plan de trabajo

- Pasos a seguir para la construcción del proyecto

- Planteamiento del proyecto.
- Crear la documentación.
- Búsqueda de información sobre las diferentes plataformas.
- Búsqueda de información sobre los lenguajes de cada plataforma.
- Comparación de las diferentes plataformas.
- Comparación de resultados.
- Resultados finales.
- Crear Presentación.
- Crear pagina web

- Tareas/horas

Estadisticas de horas

Diagrama de Gantt

- 5 - Metodología del proyecto

- Análisis

El desarrollo de aplicaciones móviles es el proceso por el cual se desarrolla un software para dispositivos móviles (como Smartphone o Tablet). La distribución de estas aplicaciones puede variar, las aplicaciones pueden venir preinstaladas en los teléfonos o pueden ser descargadas por los usuarios desde las tiendas de aplicaciones y otras plataformas de distribución de software.
Basándome en la cuota de mercado de cada ecosistema (Android e iOS), voy a centrar el estudio en Aplicaciones para Android, dada su solida dominación en el mercado. Android tiene la mayor cuota de mercado en todo el mundo, a excepción de Estados Unidos donde la cuota de mercado esta repartida entre ellos a partes iguales.
Como podemos ver es este grafico, proporcionado por “statcounter” y “PCWorld” a fecha de febrero de 2019 la cuota de mercado global de Android es de 74,45%
En Europa la cifra es similar con una cuota del 70,91% para Android.
El único país donde Android no tiene la mayor cuota de mercado es en Estados Unidos, donde esta igualado al ecosistema de Apple. Es España la cuota de mercado de Android es aun superior a la global, situándose en casi un 80%
Por ello vamos a centrar el estudio en Android, aunque también se hará referencia a las plataformas para ios. Vamos a dividir los entornos en 4 apartados, según el tipo de aplicaciones que permiten desarrollar:

1 Para desarrollar aplicaciones nativas:

La aplicación nativa está desarrollada y optimizada específicamente para el sistema operativo determinado y la plataforma de desarrollo del fabricante (Android, iOS, etc). Este tipo de aplicaciones se adapta al 100% con las funcionalidades y características del dispositivo obteniendo así una mejor experiencia de uso. Sin embargo, el desarrollo de una aplicación nativo comporta un mayor coste, puesto que si se desea realizar una aplicación multiplataforma se ha de realizar una nueva versión para cada sistema operativo, multiplicando así los costes de desarrollo.

2 Para desarrollar aplicaciones web

La aplicación web es la opción más sencilla y económica de crear aplicaciones, puesto que al desarrollar una única aplicación se reducen al máximo los costes de desarrollo. Asimismo, en este tipo de aplicaciones, puede utilizarse el “responsive web design”, creando así una única aplicación adaptada para todo tipo de dispositivos. Por el contrario, la aplicación web ofrece una peor experiencia de uso, puesto que ignora las características del dispositivo y una menor seguridad ya que depende de la seguridad que ofrezca el propio navegador.

3 Para desarrollar aplicaciones híbridas

Este tipo de aplicación aprovecha al máximo la versatilidad de un desarrollo web y tiene la capacidad de adaptación al dispositivo como una app nativa. Permite utilizar los estándares de desarrollo web (HTML5) y aprovechar las funcionalidades del dispositivo tales como la cámara, el GPS o los contactos. Además, comporta un menor coste que una aplicación nativa y una mejor experiencia de uso que una aplicación web. Sin embargo, tiene un rendimiento ligeramente inferior al de una aplicación nativa debido a que dependiendo del lenguaje en el que se programe, y en el que sea compilado, puede influir en su rendimiento.

4 Para desarrollar videojuegos.

Los videojuegos suponen una parte muy importante en los dispositivos móviles, por ello analizaremos las diferentes plataformas disponibles para poder desarrollarlos.

- Información de principales entornos para desarrollar aplicaciones

* Para el desarrollo de apps nativas:

- Android Studio

Es el entorno de desarrollo integrado oficial para la plataforma Android. Fue anunciado el 16 de mayo de 2013 en la conferencia Google I/O, y reemplazó a Eclipse como el IDE oficial para el desarrollo de aplicaciones para Android. La primera versión estable fue publicada en diciembre de 2014. Esta basado en IntelliJ IDEA y es multiplataforma. Para su uso es necesario tener instalado en nuestro sistema el SDK de Java. Android Studio ofrece aún más funciones que aumentan la productividad durante la compilación de apps para Android, como las siguientes:
•Un sistema de compilación basado en Gradle flexible
•Un emulador rápido con varias funciones
•Un entorno unificado en el que puedes realizar desarrollos para todos los dispositivos Android
•Instant Run para aplicar cambios mientras tu app se ejecuta sin la necesidad de compilar un nuevo APK
•Integración de plantillas de código y GitHub para ayudarte a compilar funciones comunes de las apps e importar ejemplos de código
•Gran cantidad de herramientas y frameworks de prueba
•Herramientas Lint para detectar problemas de rendimiento, usabilidad, compatibilidad de versión, etc.
Los requisitos mínimos para funcionar correctamente son:
-2 GB de RAM (4 GB recomendados)
-400 MB de espacio en disco
-1 GB para Android SDK
-Monitor de 1280x800
-Java Development Kit 7

* Para el desarrollo de apps hibridas:

- Appcelerator Titanium

Titanium es un programa desarrollado por la plataforma Appcelerator que sirve para crear aplicaciones móviles, al igual que otros software de función similar existentes en el mercado. Lo que marca la diferencia y hace destacar a Titanium sobre otros programas es que posibilita la creación aplicaciones nativas adaptables a los sistemas operativos más comunes de Smartphone y tablets.
Hasta ahora, únicamente las Web APP permitían un diseño adaptable a todos los dispositivos. Pero gracias a Titanium ya es posible hacer los mismo con las aplicaciones nativas, caracterizadas por su mayor calidad, precisión, rendimiento y acabado estético.
Las aplicaciones nativas están enfocadas y planificadas para ser usadas directamente en Smartphones y tablets, sin tener que conectarse a través de un navegador.
Su principal inconveniente era que tenían que programarse versiones diferentes para cada sistema operativo (iOS, Android, Blackberry), lo que hacía mucho más trabajoso, complejo y caro su desarrollo. Este hándicap ha sido eliminado de raíz gracias al programa Appcelerator Titanium.

¿Principales características de Appcelerator Titanium?

Las características más importantes de este programa se encuentran en sus funcionalidades o, dicho de otro modo, lo que permite hacer y la forma de hacerlo:

• Con Titanium se pueden crear aplicaciones nativas de gran calidad, válidas y adaptables en una única versión para los principales sistemas operativos de móviles y tablets.

• Se trata de una plataforma en constante desarrollo, lo que hace que sus posibilidades vayan en aumento. Por ejemplo, en sus inicios sólo permitía crear aplicaciones para los dispositivos de Apple y Android, extendiéndose después al sistema Blackberry.

• Utiliza el lenguaje de programación JavaScript, que es el propio de las páginas web, y posteriormente traduce al sistema nativo de cada aplicación.
• El interfaz o entorno de programación está basado en Eclipse (Aptana Studio) y es muy fácil, visual e intuitivo, por lo que no es necesarios tener conocimientos de programación.

• Tienen una extensibilidad ilimitada del propio framework Titanium, lo que permite que constantemente se añadan nuevos módulos con más posibilidades y recursos.

• Máxima interconexión con servicios en la nube, lográndose altísimos niveles de capacidad y rendimiento en la aplicación.

- Xamarin

Xamarin es una herramienta para los desarrolladores de aplicaciones móviles, y la novedad de esta herramienta es la capacidad que tiene para que el desarrollador escriba su app en lenguaje C# y el mismo código sea traducido para ejecutarse en iOS, Android y Windows Phone.
Es propiedad de Microsoft, por lo que cuenta con mucho apoyo por parte de grandes compañías, así como de una gran comunidad de desarrolladores.
Vamos ver cómo esta herramienta nos puede ayudar a la hora de desarrollar aplicaciones móviles:

C# es uno de los lenguajes preferidos de Microsoft, lo que hace que sea bastante popular dentro de los programadores .NET. Debemos saber que existe una gran desventaja cuando se crean aplicaciones móviles.
Cuando se crean aplicaciones iOS es preciso escribir código en Objetive-C y si queremos crear Apps Android debemos conocer Java. Xamarin lo que hace es unificar estas diferencias con el IDE Xamarin Studio, ya que solo se necesita dominar C# a la hora de crear aplicaciones iOS, Android y Windows Phone.

- Xamarin Studio

Como ya hemos mencionado Xamarin Studio (XS) aporta el entorno de desarrollo perfecto para que los programadores que dominan C# tengan las herramientas disponibles para migrar sus aplicaciones a iOS, Android y Windows Phone. Hasta el 1 de abril de 2016, Xamarin Studio era una plataforma de pago, pero despues de la adquisicion por parte de Microsoft, Xamarin es completamente gratuito y Open Source, algo muy a tener en cuenta.

Xamarin es una compañía que se estableció en mayo de 2011, por los mismos ingenieros que crearon el proyecto Mono, consistente en una implementación libre de la plataforma de desarrollo .NET para dispositivos Android, iOS y GNU/Linux. Es decir, con Xamarin podríamos evitar tener que utilizar Java para desarrollar una aplicación para Android. Anteriormente, este proyecto se llamaba MonoTouch y MonoDroid.

Ventajas

Xamarin nos permitirá generar nuestra aplicación para iOS (.APP) y para Android (.APK), la cual ya sí correrá de forma nativa. Gracias a esto, surge una de las grandes ventajas de Xamarin: la reutilización de código.
En cualquier aplicación multiplataforma que hayamos desarrollado, Pero en este caso, al desarrollar todas las plataformas en la misma tecnología, no es necesario reescribir el código, al poder reutilizar módulos ya implementados.
La cosa no queda ahí, pues al poder desarrollar aplicaciones nativas para Windows Phone, Windows 8 y web en C# y .NET, resulta que la reutilización del código la estamos exportando a aún más plataformas que iOS o Android. Según Xamarin, deberíamos poder reutilizar el 90% del código aproximadamente.
Otra de las ventajas de la plataforma es que dispone de tantas librerías de terceros como el código nativo: hay una gran comunidad detrás. Pero uno de los detalles más importantes es que Xamarin nos proporciona acceso total a la API estándar de Android.

Inconvenientes

El código relacionado con manejo de interfaces gráficas no será reutilizable. Por eso, es nuestra misión extraer de forma totalmente independiente toda la funcionalidad posible. Para conseguir esto, podemos utilizar técnicas como la inversión de control (IoC) para aumentar el código compartido. La pega es que si nuestra aplicación tiene mucho código relacionado con la interfaz gráfica, menos será el código que tenemos que reutilizar. Y es cierto que toda la lógica para la interfaz gráfica (gestión de eventos, escuchadores…) al final resulta ser bastante código.

Otro inconveniente es que cualquier aplicación en Xamarin ocupa más espacio que una nativa, afectando al tiempo de descarga y al almacenamiento. Hablamos de que mínimo ocupará unos cuantos megas y puede crecer proporcionalmente con el código si éste utiliza más características de la API. Esto se debe a cómo se ensambla el código desde .NET para convertirlo a código nativo. Esto también provoca, en el caso de Android, un retardo inicial al abrir la aplicación para el caso de Xamarin. Es cierto que la compañía trabaja en reducir todo esto y está consiguiendo avances, pero aún es un detalle a tener en cuenta.

- React Native

React Native es una de las tecnologías más de moda en este momento, y nadie puede negar que está revolucionando el desarrollo móvil. En este análisis vamos a resumir cuáles son sus características principales y sus ventajas sobre los competidores actuales.
Hasta hace bien poco, había dos enfoques muy diferentes para desarrollar apps y poder publicarlas en las tiendas oficiales:

Cada enfoque tiene sus ventajas e inconvenientes, y dependiendo del proyecto, podría ser más beneficioso utilizar uno u otro. Las apps nativas tienen un aspecto profesional y su rendimiento es considerable, pero es necesario conocer cada plataforma a fondo y son propensas a tener una infinidad de bugs (y sus inevitables retrasos en la entrega). Otro aspecto a tener en cuenta es que al desarrollar en nativo, se tiene la sensación de estar repitiendo el trabajo una y otra vez en cada plataforma.
Al desarrollar una app en React Native, la mayor parte del código que escribimos (en muchas ocasiones todo) es el mismo para las versiones de Android e iOS. Sólo nos tenemos que preocupar de la lógica de negocio y de maquetar una única vez.
Otra de las maravillas que ofrece esta plataforma es el Hot Reload. Tradicionalmente en los desarrollos nativos hay que compilar una y otra vez para ver los cambios, por muy pequeños que sean. Esto hace el desarrollo nativo lento y tedioso (sobre todo al maquetar). Con React Native compilas una vez y a trabajar. Puedes ir viendo cómo afectan los cambios según los vas haciendo (LiveReload). Android Studio dispone de una herramienta similar, pero no termina de funcionar del todo bien.
La API de React Native nos ofrece acceso a un gran número de funcionalidades nativas, y en Facebook están trabajando muy duro para ampliar cada vez más este abanico de posibilidades, pero puede darse el caso de que necesites añadir código nativo a tu desarrollo que todavía no esté accesible (o incluir alguna librería de terceros por ejemplo). Puedes comunicar tu código JavaScript con código nativo mediante ‘envoltorios’, teniendo acceso total al hardware y a los APIs nativos.
Como hemos comentado, la principal ventaja que tiene React Native frente a sus competidores Web App es la experiencia de usuario nativa. Esta experiencia nativa se consigue principalmente utilizando componentes visuales nativos y mediante las animaciones.

Lo primero que se podría suponer es que React Native compila código JavaScript en el correspondiente código nativo directamente. Pero esa tarea es bastante dura de realizar, ya que Java y Objective C/Swift son lenguajes fuertemente tipados mientras que JavaScript no lo es. En lugar de eso, React Native hace algo más inteligente: React Native es, en esencia, un conjunto de componentes React, donde cada uno de ellos tiene su correspondiente equivalente en views y componentes nativos. Es decir React Native incorpora dentro del código JavaScript los componentes React, en lugar de mezclar código, de esta manera se consigue un código mucho mas limpio y sencillo de desarrollar.

- Phonegap

Es un paquete de librerías que permite empaquetar aplicaciones HTML5 de manera que puedan ser usadas como apps para móviles o Web Apps. Es una solución muy versátil, que nos permitirá dar el salto fácilmente al desarrollo de aplicaciones multidispositivo, aunque no podemos olvidar que también tiene sus limitaciones.

PhoneGap es una solución de Adobe que nos permite llevar el desarrollo para la web al mundo de los dispositivos. Se basa en una “envoltura” que nos permite ejecutar aplicaciones desarrolladas con HTML, CSS y JavaScript como si fueran aplicaciones nativas para los teléfonos móviles o tablets.

Las aplicaciones que podemos desarrollar con PhoneGap se pueden publicar en las conocidas tiendas de aplicaciones (Google Play, Windows Store o App Store de Apple) y, al igual que las aplicaciones nativas, también son capaces de acceder a los periféricos de los dispositivos como la cámara, acelerómetro, etc. Lo mejor de PhoneGap es que permite escribir una única vez el código de la aplicación, con tecnologías HTML5, y publicarlo en cualquier plataforma móvil dentro de las más conocidas. Así que, o bien desarrollas tu aplicación en nativo para cada uno de los sistemas operativos, con el consiguiente trabajo que ello conlleva, o la programas una única vez usando alguna plataforma como PhoneGap.

- jQuery Mobile

JQuery Mobile es un Framework optimizado para dispositivos táctiles (también conocido como Framework móvil) que está siendo desarrollado actualmente por el equipo de proyectos de jQuery.

El desarrollo se centra en la creación de un Framework compatible con la gran variedad de Smartphones y tablets, algo necesario en el creciente y heterogéneo mercado de tablets y Smartphone. El Framework de jQuery Mobile es compatible con otros frameworks móviles y plataformas como PhoneGap y Worklight entre otros.

Todos los proyectos que utilizan jQuery Mobile utilizan más o menos el mismo código. Es importante enlazar las librerías JavaScript de jQuery y jQuery Mobile, así como sus hojas de estilo (estos archivos pueden descargarse y utilizarse localmente, pero se recomienda enlazarlos desde el CDN de jQuery).

Desde el punto de vista del diseño y desarrollo de aplicaciones web, jQuery proporciona dos métodos de creación de páginas: Método tradicional donde cada página está en un fichero HTML y se enlazan unas a otras. Un único fichero HTML que contiene todas las páginas con enlaces internos entre ellas.

jQuery Mobile utiliza por defecto llamadas AJAX en todos los enlaces y llamadas dentro de una página. Cuando no es posible hacerlas (por ejemplo en llamadas a otros dominios) se realizan con una petición http normal.

Cada vez que se pulsa en un enlace o se envía un formulario se envía una solicitud AJAX basada en la acción href o el botón submit del formulario. Mientras que se la respuesta AJAX, se muestra una ventana con el mensaje de “Cargando página”.
Conforme el usuario va navegando por las páginas de la aplicación, estas se van añadiendo al DOM lo que puede repercutir en el rendimiento de la aplicación. Para solucionar esto jQuery Mobile añade un flag a las páginas ya visitadas de forma que cuando se vuelven a visitar se intenta cargar primero de la Caché, y en caso de no existir se vuelve a solicitar al servidor.

- Ionic

Ionic ha sido, desde su publicación en 2013, el gran abanderado del desarrollo hibrido, construido sobre dos pilares solidos: Angular JS y Cordova.
En 2013 se publica la primera versión de Ionic, construida sobre AngularJS y Cordova. Al estar construido sobre AngularJS hereda las virtudes y defectos de este framework. Por otro lado, gracias a Cordova disponía del wrapeo nativo y su multitud de plugins para proveer de ciertas funcionalidades nativas.
Ionic es una revolución en su momento, permitiendo de forma fácil lo que el mercado buscaba: una manera sencilla de crear aplicaciones hibridas.

La revolución del mundo híbrido

Desde que en 2013 fuera publicado Ionic, el mundo hibrido ha vivido ciertos cambios:

• Las WPA: la aparición de las WPA, aplicaciones web que se pueden instalar directamente en el dispositivo sin necesidad de distribución en tienda, ha provocado que el wrapeo no sea la única manera de publicación de apps web.

• La madurez de los estándares web: ciertas funcionalidades que antes solo estaban disponibles en aplicaciones híbridas, como notificaciones PUSH, uso de la cámara o geolocalización, están ya disponibles en el estándar web y cualquier web sin necesidad de ser instalada como app puede utilizarlas.

• Frameworks realmente híbridos: aparecen una serie de frameworks como React Native y Native Script, que cambian el concepto de app hibridas. En lugar de ofrecer componentes visualmente nativos, estos frameworks lo que hacen es identificar ciertos componentes HTML que pueden ser sustituidos por componentes nativos.

El ejemplo más típico son las listas, en lugar de emular en web una lista nativa, estos frameworks construyen una lista nativa con el contenido web, pero el usuario interacciona con una lista nativa.

• Unificación de diseño en las plataformas: cada vez es más común que una app iOS y Android sean visualmente idénticas, provocando que la funcionalidad base de Ionic: componentes visualmente nativos alineados con cada plataforma, quede en un segundo lugar.

Que aporta Ionic:

• Funcionalidades nativas: en muchos casos con el uso de los estándares web ha dejado de ser necesario el uso de plugins de Cordova, pero aun en el caso de que se necesiten siempre se puede integrar directamente con ellos, sin necesidad de pasar por Ionic.

Por lo tanto, podríamos decir que el valor que Ionic provee es muy variable, siendo en muchos casos únicamente la facilidad de uso su virtud. A esto hay que sumar el hecho de que la dependencia completa con Angular cierra otras puertas a Ionic, ya sea el uso independiente o con otros frameworks. Por este motivo, desde Ionic se ha decidido con la próxima versión realizar una revolución en todos los sentidos.

* Para el desarrollo de videojuegos:

- Unity

Es una de las plataformas para crear juegos para móviles que más repercusión y éxito está teniendo entre los desarrolladores que, o bien se inician con su plan gratuito o la emplean para desarrollar sus videojuegos móviles desde una perspectiva profesional.

- Unreal Engine

Unreal Engine (Epic Games) es una plataforma para crear juegos para móviles y otras plataformas que nació en el año 1998 y que ha ido sumando funcionalidades y posibilidades para los desarrolladores. En la actualidad, permite crear juegos para Android e iOS, así como para videoconsolas y ordenadores.

- BuildBox

Buildbox es una buena opción para crear juegos para móviles ya que te ofrece los escenarios y personajes que necesitas para poner en marcha una aventura gráfica que puedes desarrollar para móviles Android.

- Construct 3

En esta plataforma puedes desarrollar juegos para móviles Android e iOS y, aunque es de pago, cuenta con una importante comunidad de expertos que te ayudarán a conocer la herramienta. Tiene muchos tutoriales.

- GameMaker Studio

Al igual que el resto de opciones que te ofrecemos en esta recopilación, GameMaker Studio (Yoyo Games) te permite crear juegos para móviles en 2D sin necesidad de tener excesivos conocimientos de programación.

- GDevelop:

Una plataforma de código abierto en la que, sin necesidad de tener conocimientos avanzados de programación, puedes dar tus primeros pasos a través de la opción de crear un juego online

- Comparativas

Debido a la gran cantidad de plataformas de desarrollo disponibles y la cantidad de información disponible, el análisis y comparación de todos ellos supondría invertir una gran cantidad de tiempo que supera ampliamente lo previsto para este proyecto, por lo tanto me he visto obligado a reducir la comparativa a las plataformas mas utilizadas por los desarrolladores, obviando las plataformas que apenas se utilizan u su uso esta limitado a un sector concreto.

Además basándome en la cuota de mercado de cada ecosistema (Android e iOS), voy a centrar la comparativa en Aplicaciones para Android. Únicamente vamos a comparar entre ellos los siguientes entornos:

-Android Studio para Aplicaciones nativas.

-Xamarin para aplicaciones Híbridas.

-Ionic y ReactNative para aplicaciones Web.


- Aplicaciones Nativas vs Aplicaciones Hibridas

Las aplicaciones nativas nos permiten aprovechar todas las funcionalidades de la plataforma en la que se ejecuten, y aprovechan el rendimiento del dispositivo al máximo.
Se evitan muchos errores y la compatibilidad es del 100% con la plataforma. Requiere mucho tiempo para su desarrollo, y todo debe ser programado manualmente.

Las aplicaciones híbridas por el contrario, no permiten usar todas las funcionalidades del dispositivo, y su rendimiento baja mucho. Se generan líneas de código en exceso, debido a la utilización de componentes y funciones ya programadas.

Estas aplicaciones ocupan mas espacio en el dispositivo. Pero estas aplicaciones son mucho mas fáciles de desarrollar, sus entornos de programación están diseñados para ser lo mas sencillos e intuitivos posible. Han avanzado mucho con el tiempo lo que permite utilizar gran cantidad de las funcionalidades del dispositivo y mejorado su rendimiento.
Con un solo desarrollo, se pueden crear aplicaciones para varias plataformas.
Con esta pequeña comparativa podemos destacar que desarrollar una App híbrida es conveniente cuando se quiere realizar una aplicación rápidamente, y no es necesario un gran rendimiento para que funcione correctamente. Es ideal para pequeñas empresas o autónomos que están empezando a desarrollar aplicaciones.
Una App nativa es recomendable cuando la aplicación tiene un volumen de uso muy alto y se requiere de un gran rendimiento.

- Comparación entre Xamarin, Ionic y React Native

Para empezar la diferencia fundamental entre estas tres plataformas es el tipo de aplicación que vamos a crear. Ionic Crea un sitio Web en HTML y CSS y luego lo integra en una aplicación móvil, proporcionando una experiencia de usuario similar a la nativa.
En cuanto a ReactNative y Xamarin, las aplicaciones se desarrollan para ser compatibles con cualquier plataforma móvil, se escribe un código y después se compila para varias plataformas. La diferencia con Ionic es que los componentes nativos de estas plataformas se incorporan en la aplicación, lo que le permite acceder a las funcionalidades del dispositivo, lo que hace que la experiencia de usuario sea cercana a la nativa.

Rendimiento

Lo mas destacable en este apartado es el bajo rendimiento de las aplicaciones desarrolladas con Ionic, debido a ser una web incrustada en una App. Ionic puede tener problemas de rendimiento y problemas con los gráficos que se muestran por pantalla.

Tanto React Native como Xamarin tienen un rendimiento similar en la ejecución de las aplicaciones en dispositivos móviles Android, ya que ambas utilizan el mismo procedimiento para compilar la aplicación incluyendo todos los componentes disponibles del sistema operativo.

React Native utiliza JavaScript como lenguaje y Xamarin C#, esto puede suponer una ligera ventaja en el rendimiento para ReactNative, ya que JavaScript es un lenguaje de tipo dinámico, y dependiendo del modo de compilación puede beneficiarse de un mejor rendimiento, sobre todo en compilación JIT(Just-In-Time).

Facilidad de uso

Ionic es la mas sencilla de utilizar, debido a que con conocimientos de Web básicos (HTML y CSS), es suficiente para desarrollar una aplicación en este entorno. Permite utilizar cualquier entorno de desarrollo compatible, por lo que tiene la facilidad de que se adapta al entorno de desarrollo al que estés habituado, el mas recomendable es Visual Studio Code.

Xamarin requiere conocimientos avanzados de C#, si se tiene experiencia con ese lenguaje, desarrollar aplicaciones con esta plataforma es muy sencillo, en caso contrario, no es la plataforma ideal para empezar a desarrollar aplicaciones. Utiliza su propio entorno de desarrollo Xamarin Studio, es bastante sencillo de utilizar, el requerir un conocimiento amplio de C# puede dificultar el desarrollo.

ReactNative utiliza JavaScript, React y Redux como lenguajes, esta basado en componentes, y su uso puede ser algo complejo al principio, pero su curva de aprendizaje es rápida. Se puede utilizar en cualquier entorno de desarrollo compatible, el mas recomendado es Visual Studio Code.

Comunidad de desarrolladores

Algo muy importante a la hora de elegir una plataforma para nuestra aplicación es la comunidad de desarrolladores que tiene dicha plataforma.
Esto implica directamente en las actualizaciones de la plataforma, así como en el soporte y en la cantidad de módulos desarrollados que podemos utilizar y en caso necesario la ayuda por parte de otros desarrolladores.
Todos las plataformas que estoy analizando en este proyecto cuentan con una comunidad que las apoya y mantiene, por ello este dato no se puede comparar fácilmente, por lo que vamos a comparar dichas comunidades de desarrolladores en función de diversas estadísticas proporcionadas por las grandes comunidades y foros de desarrolladores.

En primer lugar, vamos a basarnos en el numero de desarrolladores que actualmente programa en cada lenguaje. Estas estadísticas estas sacadas de las encuestas anuales que realiza StackOverflow, en este caso la de 2019.


https://insights.stackoverflow.com/survey/2019

Basándonos en estos datos, podemos observar que JavaScript es el lenguaje mas utilizado por los desarrolladores, por lo que en un principio ReactNative tendrá una buena comunidad de desarrolladores.
El segundo puesto es para HTML/CSS, por lo que Ionic también debería tener una buena comunidad de desarrolladores.
C# se queda en el séptimo puesto, por lo que la cantidad de desarrolladores que utilicen este lenguaje es menor.

Estos datos solo muestran los lenguajes mas utilizados, por lo que por si solo no nos sirve para poder comparar las comunidades de desarrolladores y lo utilizadas que son las plataformas, pero es un punto de partida para ir comparando todas las plataformas.
Un dato muy relevante a tener en cuenta para apoyar los resultados de la encuesta anterior, es el interés que genera cada plataforma y el numero de búsquedas que tiene. En este caso vamos a utilizar Google Trends, que nos provee estadísticas de las búsquedas en Google.

Comparamos las tres plataformas en Google Trends, con las estadísticas de los últimos 5 años y estos son los datos que obtenemos:

https://trends.google.com/trends/ explore?cat=31&date=today%205-y&q=react%20native,xamarin,ionic

Como podemos observar, Xamarin fue de los primeros en salir al mercado, por ello su interés y numero de buscas en mayor. Ionic se mantiene constante en el tiempo, con una ligera reducción del interés. Mientras que ReactNative, a aumentado drásticamente con el tiempo, y actualmente es el que mas interés genera de los tres.

Como dato adicional vamos a añadir Android Studio a la comparativa y analizamos los resultados.

https://trends.google.com/trends/explore?cat=31&date=today%205-y&q=react%20native,xamarin,ionic,android%20studio

Sorprendentemente React Native es el mas buscado y el que mas interés genera de los cuatro actualmente, superando incluso al entorno oficial de Android, y el utilizado para crear aplicaciones nativas.

Podemos ver una semejanza muy grande entre Android Studio y Xamarin en el tiempo, y la caída en popularidad de ambas actualmente.
Esto refuerza los datos obtenidos en la primera estadística, React Native al parecer es el mas usado de los entornos con diferencia.

Vamos a ver ahora el numero de descargas de los diferentes entornos de programación.
Desgraciadamente únicamente ionic y react native proporcionan su numero de descargas.

https://www.npmtrends.com/react-native-vs-ionic

Aquí podemos observar el numero de descargas en los últimos 6 meses. React Native tiene unas 250.000 descargas semanales, mientras que Ionic solamente 50.000.

Por ultimo vamos a comparar el numero de empresas que buscan trabajadores de cada plataforma, para ello buscaremos en infojobs el numero de ofertas en toda España de las diferentes plataformas.

https://www.infojobs.net/

Estos datos son cambian constantemente pero nos sirven para verificar todas las estadísticas anteriores.
Android Studio es el mas utilizado actualmente, seguido muy de cerca por React Native. Xamarin y Ionic son mucho menos utilizados a día de hoy.

En cuanto a las actualizaciones, tanto Xamarin como React native ofrecen un soporte lento y a menudo tardío. Depende del equipo de desarrolladores, se necesita algun tiempo para implementar las nuevas funciones y cambios que ofrecen las nuevas versiones de los sistemas operativos. En el caso de Ionic ocurre lo mismo, sin embargo puede tardar algo mas de tiempo implementar estas características y es probable que no funcionen correctamente, o que ni siquiera estén implementadas, ya que Ionic no permite usar todas las características del sistema operativo.

La comunidad de Android y Android Studio es inmensa, y aunque el interés actual este en las aplicaciones híbridas, y sus comunidades este en pleno crecimiento, aun no se acercan a la gran comunidad de Android.

- Encuestas

Uno de los objetivos de este proyecto era realizar encuestas a varios desarrolladores de aplicaciones móviles, para ver que plataforma usaban para crear aplicaciones. Pero por la gran magnitud del proyecto no ha sido posible, en su lugar este estudio se ha basado es estadísticas de diferentes fuentes de información. Para poder realizar las encuesta se estima que harían falta 2 personas para realizarlas a un mínimo de 5 desarrolladores por cada plataforma.

- Recursos materiales y humanos

Para poder realizar este proyecto completo, incluyendo todas las encuestas a desarrolladores, analizar y comparar todas las plataformas serian necesarias un mínimo de 2 personas, y se estima que llevaría unas 100 horas totales, 50 horas por cada persona. La opción de incluir a una segunda persona seria recomendable para poder realizar entrevistas simultáneamente y obtener otro punto de vista distinto en la comparación de resultados.

- Presupuesto

Como la estimación es de 100 horas, se calcula un precio de 10€ brutos hora, por lo que el presupuesto para el proyecto completo seria de 1000€.
Como el proyecto ha resultado ser demasiado amplio para poder realizarlo completamente una sola persona en un tiempo estimado de 30 horas, el proyecto se ha reducido a comparar los principales entornos de desarrollo exclusivamente, por lo que el tiempo total empleado es de 35 horas, a un precio de 10€ hora, el presupuesto del proyecto reducido es de 350€.

6 - Uso de la TIC en el proyecto

- Tecnologías utilizadas, software, hardware

Para desarrollar este proyecto se han utilizado las siguientes tecnologías:

• Microsoft Word 2013

• Microsoft Excel 2013

• GanttProyect 2.8.10

• Google Trends

• Xamarin Studio 3

• Visual Studio Code 2019

• Android Studio 3.2.1

• Canva.com para el diseño de las tablas comparativas

• Para la pagina Web: HTML5, CSS3, PHP

7 - Desarrollo del proyecto

- Cómo se ha desarrollado el proyecto

El proyecto se ha desarrollado de la siguiente manera:

• Planificando como llevar a cabo las comparativas de las diferentes plataformas de desarrollo.

• Buscando la información relativa a cada plataforma en diferentes medios, principalmente Internet.

• Guardando toda la información necesaria en un documento de Word, para luego poder introducirla en la documentación final.

• Comparando dichos entornos de desarrollo, utilizando varias estadísticas y datos de uso para ello.

• Finalizar la documentación y exponer los resultados.

- Problemas/soluciones

El principal problema de este proyecto ha sido su gran dimensión y el poco tiempo disponible para poder realizarlo. Por ello la solución que me ha parecido mas correcta ha sido reducir el proyecto, a solamente una comparativa de los 4 principales y mas usados entornos de desarrollo en especial para Android. Suprimiendo también las encuestas por estadísticas de uso de desarrolladores proporcionadas por diferentes medios.

8 - Conclusiones del proyecto (logros alcanzados)

- Presentación de los resultados de las investigaciones

Los resultados finales han sido:

Para programar aplicaciones móviles, disponemos de 3 tipos de enfoques:

• Aplicaciones Nativas: Las que mejor rendimiento, opciones y funciones nos ofrecen, pero requieren una gran inversión de tiempo y aprendizaje, que su uso es complicado y requiere de mucha formación. Es recomendable una aplicación nativa cuando necesitamos una aplicación que no tenga ningún fallo y su rendimiento sea optimo, por ejemplo para grandes empresas y aplicaciones con mucho éxito.

• Aplicaciones Web: Son básicamente Webs introducidas en un marco para poder ser ejecutadas como aplicaciones, su desarrollo es muy sencillo, pero están muy limitadas en cuanto a rendimiento y poder utilizar las funciones del sistema operativo. Recomendada para gente inexperta.

• Aplicaciones Hibridas: Son aplicaciones desarrolladas en diferentes lenguajes, pero que se compilan para que sean ejecutadas como nativas, de este modo es posible crear aplicaciones multiplataforma muy fácilmente y pudiendo utilizar la mayoría de funciones del sistema. Recomendada para gente que sepa programar, pero que no requiera una aplicación de muy alto rendimiento, es perfecta para la mayoría de la gente y empresas pequeñas sin mucho presupuesto.

Hemos comparado un entorno de programación nativo: Android Studio, dos entornos híbridos: Xamarin y React Native y un entorno Web: Ionic.

Si se busca un desarrollo sencillo y no es importante ni el rendimiento ni los gráficos, ni usar funciones del SO, recomiendo usar Ionic como entorno de desarrollo, dada su facilidad y rapidez a la hora de realizar aplicaciones multiplataforma. Si lo que se busca es un desarrollo profesional o semiprofesional, que permita usar las funciones del sistema operativo(cámara, gps, giroscopio, etc), que tenga un buen rendimiento, y sea fácil de desarrollar, recomiendo usar React Native.

Si por el contrario se busca desarrollar una aplicación en la que se priorice el rendimiento, sin importar el precio y el tiempo necesitados, recomiendo usar Android Studio, sobretodo si se tienen conocimientos amplios de Java, si no se tienen conocimientos de Java pero aun así se requiere hacer una aplicación con Android Studio recomiendo utilizar Kotlin como lenguaje nativo, ya que cada vez esta siendo mas utilizado y permite reducir hasta un 40% las líneas de código necesario.

Si se tienen amplios conocimientos de C#, y no importa gastarse una pequeña cantidad de dinero, recomiendo usar Xamarin, aunque cada vez es menos utilizado y tiene la desventaja de ser de pago.
El mas recomendado en términos generales es React Native, cada vez esta siendo mas utilizado, y con mucha razón, es un framework muy potente, que permite desarrollar aplicaciones multiplataforma con la mayoría de funciones del sistema operativo, con un rendimiento superior al resto y con un corto aprendizaje, ya que se utiliza JavaScript como lenguaje base. Además cuenta con una gran comunidad de usuarios, muchos módulos y componentes ya programados que facilitan el desarrollo, y cuenta con actualizaciones cada dos semanas, lo que proporciona seguridad y tener siempre disponible las ultimas novedades.

- Conclusiones basadas en los resultados

No he podido encontrar un claro ganador entre los entornos de desarrollo analizados, todos destacan en algún apartado, por lo que dependerá del tipo de aplicación que queramos desarrollar o del tipo de lenguaje que dominemos que sea mas recomendable usar un entorno de desarrollo u otro. Aunque ninguno es el mas recomendado en cualquier caso, si que hay uno que destaca ligeramente en la mayoría de escenarios propuestos, pero no es una solución tan valida como para descartar al resto de plataformas. Lo que si esta claro después de este analisis, es que el futuro de la programación móvil será hibrida y multiplataforma, en cuanto se termine de mejorar dicha tecnología no habrá razón para desarrollar una aplicación nativa.

9 - Bibliografía, webgrafía

La información para el analisis y las comparaciones ha sido obtenida de las siguientes webs:

https://es.statcounter.com/

https://www.pcworld.es/articulos/smartphones/iphone-vs-android-cuota-de-mercado-3692825/

https://developer.android.com/studio/intro?hl=es-419

https://www.deustoformacion.com/blog/desarrollo-apps/descubriendo-appcelerator-titanium-i-definicion-caracteristicas-basicas

https://okdiario.com/tecnologia/que-xamarin-2022974

https://elandroidelibre.elespanol.com/2014/05/xamarin-la-api-para-crear-aplicaciones-multiplataforma-en-c-net.html

https://clouddistrict.com/que-es-react-native/

https://www.paradigmadigital.com/dev/desarrollando-aplicaciones-moviles-nativas-con-react-native/

http://www.reactnative.com/

https://cuatroochenta.com/que-es-react-native-el-modo-de-desarrollar-apps-esta-cambiando/

https://www.arsys.es/blog/programacion/diseno-web/que-es-phonegap/ https://es.wikipedia.org/wiki/PhoneGap

https://www.genbeta.com/desarrollo/phonegap

https://es.wikipedia.org/wiki/JQuery_Mobile

http://www.antoniocampos.es/como-funciona-jquery-mobile/

https://www2.deloitte.com/es/es/pages/technology/articles/Ionic-principales-framework-visuales.html

https://medium.com/learn-ionic-framework/ionic-4-vs-ionic-3-todo-lo-que-necesitas-saber-sobre-ionic-4-5235927c6dd9

https://insights.stackoverflow.com/survey/2019

https://trends.google.com/trends/explore?cat=31&date=today%205-y&q=react%20native,xamarin,ionic

https://trends.google.com/trends/explore?cat=31&date=today%205-y&q=react%20native,xamarin,ionic,android%20studio

https://www.npmtrends.com/react-native-vs-ionic

https://www.youtube.com/watch?v=5sWJlGkUPsA

https://www.youtube.com/watch?v=hScR513gvNo

https://www.youtube.com/watch?v=o3VCZjlIdAw

https://www.infojobs.net/

https://stackoverflow.com/

-

Send a Message

Sed diam nonummy nibh euismod tincidunt ut laoreet dolore magnais.