¿Xamarin, la mejor solución del desarrollo de aplicaciones móviles para ti? (Parte 2)

Los invito a ver mi opinión sobre si “Xamarin es la mejor solución del desarrollo de aplicaciones móviles para ti” en esta segunda parte. Si todavía no has visto la primera parte, la puedes ver aquí.

En la primera parte los puse en contexto, para los mas nuevos, con algunas de las definiciones básicas dentro del desarrollo móvil. Les hablé de lo sucedido en los últimos años con el desarrollo de aplicaciones móviles; las críticas y como fueron mis inicios con esta herramienta. Esta vez les expondré los pros, contras y paradigmas; entre otras cosas. Con esto tendrán un conocimiento general al respecto. Así si hay una necesidad de elegir entre las herramientas, podrán saber si Xamarin tiene lo que están buscando.

Entonces, comencemos…

¿Por qué Xamarin?

XAMARIN  es un conjunto de herramientas que cubre diferentes plataformas (Android, iOS y WindowsPhone) desde un único código base .NET creando aplicaciones completamente nativas.

Cuando comencé en el mundo del desarrollo, comencé con las tecnologías .NET con Windows Forms gracias a un profesor de matemáticas a principios de mi carrera universitaria. Tratando de seguir “el camino correcto” (los empleos más solicitados) empecé con el desarrollo web con HTML, Css y JavaScript. Cuando dominaba estas tecnologías de desarrollo web empecé a trabajar con MVC y otras herramientas más.

super xamarin by luis matos

A donde quiero llegar es que cuando se me pidió investigar las herramientas de desarrollo móvil para elegir una; fue un poco complicado, yo tenía lo mejor de ambos mundos (C Sharp – JavaScript). Al final termine eligiendo XAMARIN porque me sentía más identificado con las tecnologías .NET ya que tenía mayor experiencia.

La verdad

La verdad es que tenía un poco de miedo. Aunque había trabajado con JavaScript, no había tenido la oportunidad de incursionar en uno sus frameworks; yo lo traducía como más trabajo por parte del aprendizaje eligiendo una herramienta bajada en JS para el desarrollo móvil.

Creo que si hubiera tenido más experiencia con algún framework JS que con .NET hubiera elegido una herramienta basada en JS. No porque estas sean mejores, sino porque la línea de aprendizaje seria menos dolorosa. Pensé que podría sacarle más provecho a la plataforma en un menor tiempo, y no me equivoque.

Claro, sé que muchos no están en la misma situación que yo estuve. Investiguen más a fondo las herramientas que ustedes creen que cumplen sus expectativas, hagan un análisis para elegir una.Un consejo: “Cuando vayan a analizar una herramienta, traten de analizar su futura trayectoria”, es aquí donde todo cobra sentido.

Lo malo                                     

developer burning at work

Por más bonitas y novedosas que sean las herramientas siempre nos encontraremos con pros y contras, esto es normal. En el caso de herramientas muy buenas, solo nos encontraremos con contras muy específicas; estas solo es posible detectar si trabajas con ella día a día. Es por eso que en este caso solo les mencionare algunas de las cosas que creo que son las que se podrían mejorar. Quizás hayan mas pero estas son las que vienen a mí en este momento.

Xamarin Live Player

Muchas personas se quejaron porque no había una forma de poder visualizar tu UI sin compilar la aplicación. Es aquí donde nace esta maravillosa herramienta. Esta hace que podamos visualizar nuestros diseños de interfaz de usuario con Xamarin.Forms en tiempo real. El problema aquí es aunque es muy maravillosa tiene muchas limitaciones que para los desarrolladores avanzados pueden molestar un poco.

Estas limitaciones son:

  • Los Custom Renderers no son compatibles.
  • Los Efectos no son compatibles.
  • Los Controles Personalizados con propiedades personalizables personalizadas no son compatibles.
  • Los Recursos Incrustados no son compatibles (es decir, incrustación de imágenes u otros recursos en una PCL).
  • Los marcos MVVM de terceros no son compatibles (es decir, Prism, Mvvm Cross, Mvvm Light, etc.).
  • El Asset Catalogs en iOS no es compatible.

La única manera de yo poder utilizar esta herramienta ha sido crear un proyecto aparte. Crear mis diseños con controles normales para después pasarlos al proyecto y utilizar los controles necesarios. Algunas veces este puede ser un proceso tedioso mayormente cuando tienes que hacer una actualización.

Para ver más acerca de este tema, visitar la página oficial aquí.

Excepciones no controladas

Para los que son un poco más experimentados con XAMARIN  saben que muchas veces nuestra aplicación no compilaba por este tipo de excepciones, mayormente relacionadas con el XAML y en otros casos pocos comunes con cosas específicas.  

Muchas veces nuestras aplicaciones no podían compilar, quizás por un error de sintaxis en nuestro XAML, algo que fue motivo de crítica durante un tiempo para Xamarin. Estas críticas se redujeron bastante con la introducción del  XamlCompilation. Este permite una comprobación en tiempo de compilación de XAML que nos notifica cuando hay errores. Hasta aquí todo muy bien, lo malo es que cuando trabajas con controles personalizados y UI un poco complejas seguimos teniendo algunos problemas como antes, en menor medida claro.

Algunas veces también suelen aparecer algunas Excepciones no controladas y que por más que depures tu código línea por línea (Como hacia yo) no encontraras el problema ya que la excepción tampoco te da mucha información que digamos. En estos casos algo que me ayudó mucho, aunque con un poco de trabajo, fue el manejo de excepciones globales dentro de cada plataforma. Si bien es un poco tedioso, es mejor que tener que lidiar con el código línea por línea.

Para ver más sobre el XamlCompilation, visitar la página oficial aquí. Para el manejo de errores globales, puedes ver algunos ejemplos aquí.

Controles incompletos

Aunque XAMARIN  posee todos los controles necesarios para construir un modelo de aplicación estable, la verdad es que hay algunos pocos controles que dan la sensación de estar incompletos. Esto solo lo puedes percibir si has trabajado mucho con Xamarin.

Algunos de estos controles son SwichCell que no soporta DataBinding, ViewCell que no soporta Commands, el NavigationPage que no detecta cuando el usuario navega hacia atrás, entre otros. Aunque esto no es el fin del mundo porque con estos controles tendrás que hacer una implementación propia para actualizar tus datos cuando este cambie de valor o hacer alguna llamada a un método en tu ViewModel, etc. la verdad es que fuera más sencillo para los desarrolladores si estas funciones fueran soportadas por los controles como lo hacen los otros.

En este caso ya es mas es una opinión personal, sé que hay un equipo trabaja duro para tengamos las mejores características dentro de la plataforma.

Lo bueno     

developer-feliz-trabajo

Xamarin al igual que otras herramientas, tiene múltiples beneficios por el simple hecho de que está enfocado el desarrollo multiplataforma. En este apartado no hablaremos de los beneficios del desarrollo multiplataforma, ni de comunidades, herramientas, ni cosas de ese estilo.

Lo que si hare a continuación es mostrarles un poco sobre los aspectos más importantes , en mi opinión. Estos son los que hacen toda la magia posible con Xamarin.

Tecnología .NET

tecnologies

Xamarin usa un solo lenguaje (C#) para crear aplicaciones nativas para todas las plataformas. C # es un lenguaje maduro fuertemente tipado con seguridad que evita que el código tenga un comportamiento inesperado. Como C# es uno de los lenguajes de .NET framework, se puede usar varias funciones .NET útiles como Lambdas, LINQ, programación asincrónica, etc.

Para los desarrolladores que no tienen experiencia en el desarrollo móvil, pero dominan estas tecnologías .NET; tienen la posibilidad de adaptarse fácilmente al entorno de desarrollo de aplicaciones móviles con Xamarin. Más si usan Xamarin.Forms para compartir las vistas y lógica de la aplicación.

Para ver más acerca de .NET, visite la página oficial aquí. Por otro lado si quieres saber más sobre C#, puedes empezar por aquí.

Múltiples plataformas

En un principio, los desarrolladores se sorprendieron un poco al escuchar que Xamarin se puede usar para desarrollar aplicaciones móviles para iOS, Windows y Android. Esto porque Windows Phone solo admitía el lenguaje C#. Las herramientas que habían solo podían crear aplicaciones para iOS y Android.

cross-platform-development

Con Xamarin podemos crear aplicaciones con una interfaz de usuario totalmente nativa. No solo cumpliendo los estándares, sino también el comportamiento que se espera de cada plataforma. Por otro lado también tenemos acceso a toda la API nativa de cada plataforma; con lo cual podemos acceder a todas las funcionalidades que expone el dispositivo. Todo esto aprovechando la aceleración de hardware de la plataforma específica para compilar las aplicaciones y tener un rendimiento nativo.

Si eres desarrollador y no conoces XAMARIN; te sorprenderá saber que con Xamarin también podemos desarrollar aplicaciones de escritorio para macOS y Windows. Esto supone una gran ventaja por encima de la competencia. Más para las empresas y desarrolladores que les gusta trabajar en diferentes plataformas. Y como plus final Xamarin también soporta Relojes Inteligentes.

Para ver más acerca del desarrollo multiplataforma con Xamarin, visite la página oficial aquí.

Dos Enfoques

Dentro de Xamarin podemos desarrollar aplicaciones bajo diferentes enfoques en la arquitectura del proyecto.  Uno de estos enfoques te permite compartir la interfaz de usuario para cada plataforma. El otro te permite compartir la lógica de tu aplicación entre proyectos de cada plataforma.

XamarinTypes

Si queremos una aplicación que comparta los mismos controles de la interfaz de usuario entre plataformas entonces podemos utilizar Xamarin.Forms para el desarrollo de nuestra aplicación. Por otro lado si queremos compartir código común (Recursos) entre plataformas pero no compartir la interfaz de usuario entonces podemos elegir un proyecto con Xamarin Tradicional.

Para ver más acerca de estos enfoques, visite la página oficial aquí.

Xamarin.Forms

Este es el producto diseñado para crear aplicaciones navitas. Este expone un conjunto completo de herramientas de interfaz de usuario multiplataforma para desarrolladores .NET.

Xamarin.Forms es un framework que permite a los desarrolladores crear rápidamente interfaces de usuarios multiplataforma. Esto significa que las aplicaciones pueden compartir una gran parte de su código de interfaz de usuario. Aun así pueden conservar la apariencia nativa de la plataforma objetivo.

Para ver más acerca de Xamarin.Forms, visite la página oficial aquí.

Funcionalidades Personalizadas

Muchas veces necesitamos que un control cumpla con una funcionalidad o apariencia específica. Quizás el control que la plataforma como tal no provee, en ese caso necesitaras personalizar dicho control.  Otras veces lo que necesitamos es acceder a una funcionalidad especifica de la plataforma. Como , por ejemplo, información de la batería o chequear la orientación del dispositivo. Para estos casos específicos Xamarin.Forms provee una abstracción de clases. Con estas puedes acceder a esas funcionalidades y controles nativos de cada plataforma objetivo.

app development

En el caso de los controles se utiliza Custom Renderers.  Estos permiten a los desarrolladores personalizar el aspecto y el comportamiento de los controles de Xamarin.Forms en cada plataforma. Por otro lado tenemos los Effects. Estos permiten que los controles nativos de cada plataforma se personalicen sin tener que recurrir a una implementación de un Custom Renderer.

Por último, Xamarin.Forms permite a los desarrolladores definir el comportamiento en proyectos específicos de la plataforma. Con DependencyService encuentras la implementación correcta de la plataforma, permitiendo que el código compartido acceda a la funcionalidad nativa.

Para ver más acerca de CustomRenderers, Effects, o DependencyService visite la página oficial.

Patrones de arquitectura de software

Mientras las aplicaciones son modificadas, y van creciendo en tamaño, más complejo se vuelve el mantenimiento. Teniendo un patrón que te ayude a separar claramente la interfaz de usuario de la lógica de la aplicación, tu entorno de desarrollo se vuelve más productivo.

Con xamarin es más fácil para los desarrolladores adoptar patrones como MVVM o MVC. Existen algunas librerías Nuget externas para aprovechar estos enfoques con características como DataBinding, Commands, etc. ¿Y por qué no hablar de extensiones para Visual Studio como Prism Template Pack? Esta fantástica librería contiene una colección de snippets, plantillas de elementos (View y ViewModel) y plantillas de proyectos. Estas la puedes usar con WPF y las aplicaciones de Xamarin.Forms utilizando Prism.

Para conocer un poco más sobre el patrón de diseño MVVM, visite la página oficial aquí.

Testing

Una de las grandes ventajas que tiene XAMARIN, frente a otras soluciones, es sin duda todas las herramientas que provee Microsoft para testear nuestra aplicación. Y no solo esto, si no que gracias al patrón de diseño MVVM podemos maximizar nuestro código para implementar pruebas unitarias fácilmente.

Por ejemplo, utilizando Xamarin UITest nosotros podemos automatizar pruebas de nuestra interfaz de usuario en cientos de dispositivos en la nube. Y no solo eso, si no que Microsoft te provee las herramientas para que puedas formar tu propio entorno QA para lanzar aplicaciones con más calidad.

Para ver más acerca de las pruebas automatizadas, visitar la página oficial aquí.

Microsoft power

Sin lugar a duda creo que esta es una de las mayores ventajas que tiene XAMARIN y es que Microsoft no deja de sorprendernos en cada actualización. Una de las cosas más aclamadas por los desarrolladores siempre ha sido el editor de diseño en las plataformas, las que en un principio no existían y que Microsoft ha agregado, y día a día sigue mejorando. Para los tienen VS Preview ya pueden ver indicios del tan aclamado “Drag and Drop” con XAML. ¡Y esto no es todo!

microsoft-love-xamarin

Sin hablar de los destalles de cada actualización que hace Microsoft a Xamarin, hay que mencionar todo el esfuerzo que ha hecho esta compañía para proveer todo un entorno de trabajo con las tecnologías DevOps, integraciones con Azure para crear aplicaciones más complejas, etc. para facilitar la vida a las empresas y desarrolladores. Creo que lo mejor que la ha pasado a Xamarin es que sea parte de Microsoft♥.

Para ver la página oficial de Microsoft, clic aquí.

Paradigmas

Muchos desarrolladores que no conocen o no han trabajo en producción el desarrollo de aplicaciones móviles, tienen un conjunto de conocimientos y creencias basadas en la opinión de otros o en la parte superficial de otras herramientas para formar su propia visión. Esto también aplica para los que utilizan otras herramientas y quieren hacer comparaciones de dos cosas totalmente diferentes sin tomarse el tiempo adecuado de analizar a fondo dicha herramienta.

Estas personas basadas en una teoría de un determinado periodo comparten sus conocimientos para determinar la dirección de una determinada herramienta. En este caso voy a hablarles sobre algunos de los paradigmas más comunes que otros desarrolladores utilizan para criticar XAMARIN.

Escribe una vez, corre en cualquier lugar

Es el lema de Xamarin.Forms. La verdad es que mientras más compleja es tu aplicación más vas a tener que hacer uso de funcionalidades específicas de la plataforma objetivo. Entonces ese 75-90% que se muestra puede variar dependiendo de tu aplicación.

Yo en lo personal he lanzado aplicaciones sin hacer uso de controles personalizados, ni funciones específicas de la plataforma. Lo que si he tenido que trabajar en cada plataforma son los estilos, pantalla de inicio y esas cosas que se deben hacer en casi todas las aplicaciones con Xamarin si eres de los que les pone mucho empeño al UI/UX si no estarás bien.

App Pakage Size

Es cierto que todas herramientas de desarrollo multiplataforma generan archivos de instalación más pesados que las herramientas nativas, en este sentido Xamarin no se queda atrás ya que genera un APK (Android) de 15.8 MB (antes eran más) para un simple “Hello world”.

Package size before linker

Este es una  de las principales críticas que tiene XAMARIN ya que esto se toma como referencia para compararla con otras herramientas. Lo que no saben esos desarrolladores es que es este archivo de instalación es para fines de depuración no de producción o distribución.

Ahora bien, cuando nuestro archivo de instalación no tiene ningún código que no es directamente usado (esto se puede lograr a través del proceso Linking) o que está ocupando espacio entonces nuestro “Hello world” será de 2.9 MB que comparado con otras herramientas multiplataforma el tamaño es menor.

Package size after linker

Para ver más acerca del .apk size en XAMARIN, visita la página oficial aquí.  Para ver algunas comparaciones utilizando diferentes enfoques con Xamarin, ver aquí. Y para ver otras comparaciones con la plataforma nativa y otras herramientas multiplataforma, ver aquí.

Limitaciones de Xamarin.Forms

Sabiendo que Xamarin.Forms soporta alrededor de 40 controles y layouts, es lógico deducir que cuando estás trabajando en un proyecto personalizado vas a necesitar algunas plantillas específicas. Es aquí cuando te preguntas que puedes hacer, y claro la solución a esto es fácil solo habrá que utilizar controles renderizados (Custom Renderers). La verdad es que puede ser un poco difícil diseñar estos controles si no tienes mucha experiencia en cada plataforma objetivo.

Para la suerte de toda la comunidad hay desarrolladores que se dedican a hacer este tipo de controles para nosotros de manera OpenSource. Todos podemos utilizar estos controles, en raras ocasiones no nos encontraremos con controles que otros no hayan diseñado ya.

Pocos controles

Como mencione anteriormente Xamarin.Forms tiene alrededor de 40 controles y layouts, esto se podría traducir como muy pocos para algunos. La verdad es que Xamarin provee los controles necesarios para crear cualquier tipo de aplicación, el desafío está cuando necesitamos algunos controles específicos.

Xamarin recibe muchas críticas por esto y es que muchos desarrolladores, por ejemplo, quieren controles como el FAB (Floating Action Button) en todas sus plataformas. Pero lo que no se dan cuenta es que quizás un control no cumplen con los patrones de diseño de la plataforma objetivo. Este es el caso del FAB, en Android este es un control muy común y recomendado usar en la interfaz de usuario, sin embargo, en iOS no es recomendable utilizar este tipo de controles en la UI ya que no cumple con los estándares de la plataforma. Entonces hay que tener un poco más de conciencia en esta parte.

Para ver todos los controles en Xamarin.Forms, visite la página oficial aquí.

Diseño interactivo (Live previewer)

Antes este era uno de los temas más criticados de Xamarin porque no poseía una forma de poder editar tus diseños en tiempo real. La verdad es que no sigue siendo así, ya que desde que salió el GorillaPlayer, por parte de un tercero, esto cambió. Sin embargo seguía siendo punto de crítica ya que había que recurrir a un tercero para recibir esta funcionalidad.

business-man-happy

Hoy día ya tenemos varias opciones para el diseño en tiempo real, estos son:

  • XAML Previewer. Este te ayuda a ver tus diseños con Xamarin.Forms a medida que escribes tu código.
  • Live Player. Esta ejecuta tu aplicación dentro de una App instalada en tu móvil para ayudarte testear tu aplicación sin necesidad de compilar tu aplicación.
  • Live Reload. Esta es una nueva característica que es similar al Xamarin Live Player pero con funcionalidades extras como depurar tu aplicación y realizar cambios en el XAML que se verán reflejados en vivo (soporta dispositivos físicos).

Tiempo de inicio en la pantalla de bienvenida

Algo que llama la atención de muchos desarrolladores es el tiempo que dura la aplicación para iniciar. Y es que claro tener una aplicación que dura de 8-10 segundos de inicio no es muy bien visto por parte de los usuarios.

administracion del tiempo - xamarin

La verdad es que haciendo uso de las buenas prácticas y optimizando los recursos de la aplicación reducirá el tiempo de inicio de la aplicación, aunque no tanto como quisiéramos. Es aquí donde entra AOT, aun en su versión de prueba, puede reducir mucho el tiempo de inicio de 2-3 segundos. ¿Muy bonito verdad? Pues no lo es, ya que este enfoque multiplica el tamaño de tu aplicación como x6.

Mi opinión personal es que prefiero que el usuario descargue una vez una aplicación de 40-50 MB, en vez de que cada vez que abra la aplicación dure 8-10 segundos en iniciar. Claro si optimizas tus recursos puedes reducir el tiempo considerablemente. Por otro lado, si queremos utilizar otros enfoques y buscar un punto medio puedes ver aquí o aquí.

Para ver algunas técnicas sobre cómo reducir el tiempo de inicio, puede ver aquí. Para ver el promedio de tiempo utilizando uno o varios enfoques, puede ver aquí.

Nunca uses Código detrás (Code Behind)

Si eres nuevo y no sabes que es el código detrás presta mucha atención. Xamarin.Forms utiliza XAMLpara diseñar la interfaz de usuario. Los archivos .xaml (XAML) están enlazados a un archivo .xaml.cs (C Sharp) que es el que maneja los eventos, referencias y funcionalidades especificas. Este segundo archivo es el que hace referencia al código detrás.

Xamarin.Forms con el patrón MVVM divide la interfaz de usuario de la lógica de la aplicación. Entonces, si voy a utilizar MVVM ¿por que usar código detrás? Cuando estas iniciando en el mundo de Xamarin.Form es normal escuchar este tipo de comentarios. Las personas que hacen este tipo de comentarios son personas que tienen poca experiencia con Xamarin. La verdad es que hay varias razones por la cual hay que utilizar code behind pero todo dependerá de lo que se necesite.

Aunque no profundizare en estas razones, les dejo unos ejemplos para que entiendan la idea. Aquí los ejemplos:

  • El SwithCell no permite enlazar propiedades con la ViewModel. En este caso se necesita usar un evento y una referencia de la VM en el code behind para actualizar la propiedad en la VM.
  • Para detectar cuando el usuario presiona el botón de ir hacia atrás deberás implementar el método OnBackButtonPressed en tu CodeBehind.
  • Las animaciones se manejan en el code behind.
  • Etc, etc, etc.

Con esto no mal interpreten. La mejor practica en este caso es no involucrar la lógica de nuestra aplicación en el código detrás. Todo lo que se manejara en el código detrás debe estar relacionado a la interfaz de usuario solamente. Esto asegurara un mejor soporte a largo plazo.

Para ver los primeros pasos con XAML visite la pagina oficial aquí.

Precio

Esta es una de las grandes polémicas cuando se va comparar herramientas. En este sentido anteriormente XAMARIN tenía licencia, ya no. Ahora solo es necesario tener el visual studio con Xamarin para empezar a trabajar. Claro si quieres más funcionalidades para aprovechar todo el entorno de trabajo con XAMARIN querrás actualizar tu suscripción de Visual Studio a Enterprise. Con esto no estoy diciendo que las licencias de VS sean las más baratas del mundo, lo que si pienso es que si eres una empresa no tendrías problemas para obtener estas licencias.

Tanto si eres desarrollador FreeLancer o una empresa, tener la licencia de VS Enterprise es una buena opción porque te da funcionalidades para lanzar aplicaciones con más calidad agilizando tu entorno de trabajo. Si eres de los que está testeando o aprendiendo con XAMARIN entonces creo que no tendrán ningún problema con la versión gratuita de VS.

Para ver una comparación entre las versiones de VS, ver la página oficial aquí. Para ver los precios aquí.

Conclusión

Si estabas esperando que diga que Xamarin es la mejor solución para el desarrollo de aplicaciones móviles entonces lamento decepcionarte. La verdad es que todo va a depender de la situación.

Muchos desarrolladores nativos no le dan la oportunidad a nuevas opciones porque no quieren salir de su área de confort. Esto es entendible en cierto sentido. Antes existía un miedo al pensar que lo que facilita el desarrollo móvil tenía que ser malo. Hoy vemos como las cosas cambian.

Por un lado tenemos el desarrollo multiplataforma que tiene algo que el nativo no tiene: el poder compartir código entre plataformas. Si eres desarrollador web y crees que este es el mejor momento para hacer tu salto a móviles usando todo lo que aprendiste ya sea con React Native, NativeScript, Ionic u otra herramienta que utilice JavaScript, entonces hazlo.

Facebook, Instagram, Uber Eats, son algunas de las aplicaciones que usan millones de usuarios día con día. Estas fueron creadas usando JavaScript como lenguaje y React Native como librería. Esto tiene toda la lógica del mundo. Estas tienen su aplicación web también con JavaScript. En este sentido el soporte y la experiencia de sus desarrolladores es algo que está a su favor.

Visual Studio Tools for Xamarin

Para los desarrolladores que les  gustan las tecnologías de Microsoft. C# ahora te permite llegar a móviles iOS, Android y WindowsPhone gracias a Xamarin. De igual manera si necesitas un proyecto que vas a trabajar con las tecnologías .NET ya sea para crear páginas web, aplicaciones de escritorio o Mac con una aplicación móvil para añadir valor, lo recomendable es utilizar XAMARIN. Así puedes sacar más beneficio a tu equipo de desarrollo y agilizar los procesos compartiendo código para mejorar el soporte multiplataforma.

Casos especiales

Por otro lado, habrá casos en los que no hay otra opción que usar el desarrollo nativo y los lenguajes oficiales. Es la única forma de acceder a cosas a muy bajo nivel y a las últimas APIs del sistema operativo. Pero a nivel de rendimiento o de la percepción de usuarios será muy poca la diferencia contra algo nativo o creado usando algún otro lenguaje.

Claro, estas no son reglas que hay que seguir al pie de la letra. Todo va a depender en cierta medida del proyecto y la compañía o desarrollador que trabaje con estos elementos. Si el desarrollador o compañía solo conocen una única tecnología para el desarrollo móvil sin importar cual fuese; lo recomendable es que utilicen esa por lo menos hasta que tengan experiencia en otras herramientas. Después de un análisis puedan decidir que es mejor para futuros proyectos.

De igual manera no importa si usas Js, .net u otro; si crees que en otra herramienta que utiliza tecnologías diferentes a las que usas puedes obtener más valor; entonces utiliza esa herramienta y sácale el provecho. Aquí yo he hablado que lo mejor sería utilizar la herramienta que tenga las tecnologías que dominas; la verdad es que si tienes el tiempo para incursionar en otra herramienta que crees que tiene futuro a largo plazo, lo puedes hacer. No pasara nada, al contrario estas apostando por el futuro.

He visto desarrolladores con JavaScript que han optado por desarrollar aplicaciones móviles con XAMARIN. Ellos ven un futuro esplendido en esta herramienta al tener soporte de Microsoft;  sabiendo que esta compañía hará lo imposible para esta siga mejorando.

Opinión personal

En mis inicios yo también tenía estas dudas sobre cual herramienta elegir. Para mi fortuna cuento con el apoyo de personas muy valiosas para mí. Personas que están lo suficientemente capacitadas para dar asesoría en ese sentido. A una de estas personas cuando le pregunte acerca de este tema me dijo algo que marco el resto de mi vida. Y que aún sigo creyendo fielmente en lo que me dijo esa persona. Esa persona me dijo lo siguiente “No es la herramienta, es el desarrollador”. Muy similar el refrán que dice “Es el indio, no es la flecha”.

xamarin developer - luis matos

Al final la decisión entre una plataforma u otra debe ser basada en tus capacidades y conocimientos que manejas. Para mí es imposible recomendar XAMARIN para personas que trabajan con React, por ejemplo, sería como empezar de cero. Si tienes un team que usa React para el desarrollo y puedes aprovechar ese talento para desarrollar aplicaciones móviles creo que has elegido la opción correcta.

Ahora bien, cuando la comunidad .net tiene dudas acerca de que herramienta elegir por supuestas dudas. Porque en mayor medida JavaScript está llamando la atención de muchos; yo solo puedo recomendarles Xamarin en base a lo creo que es lo correcto.

Si en tu team tienes desarrolladores que trabajan con JavaScript para trabajar web y otros que trabajan las aplicaciones móviles con Xamarin tampoco pasa nada. Al final es la experiencia del desarrollador y sus capacidades la que determinaran la calidad del producto final.

Entonces, si está buscando referencias, eres nuevo o está tratando de comenzar en el mundo del desarrollo móvil, ahora que conoce la historia detrás de Xamarin,  puedes tomar una decisión. Solo tú sabes si Xamarin es la mejor solución para tus necesidades.

Esto es todo por ahora, hasta la próxima!

Muchas gracias por leer esta publicación! 
¿Xamarin, la mejor solución del desarrollo de aplicaciones móviles para ti? (Parte 2)
5 (100%) 8 votes

Otros

feedback

Te invito a dejar tu opinión en la caja de comentarios. Si quieres que hable de un tema en específico o que detalle un poco más algunos temas, déjame saber. Los temas más interesantes serán agregados en mi lista de publicaciones futuras.

¿Te gustan las publicaciones como esta? Entonces, suscribete y activa las notificaciones push para recibir actualizaciones. Nos vemos en la próxima!

2018-12-06T02:54:47-04:00

6
Dejame tus comentarios

avatar
2 Hilos de comentario
4 Respuestas de hilos
0 Seguidores
 
Comentario más reaccionado
El hilo de comentarios más caliente
3 Comentarios de autores
Luis MatosDanielDaniel Comentarios de autores recientes
  Suscribirte  
Nuevos Viejos Mas votados
Notificar de
Daniel
Invitado
Daniel

Saludos, estoy desarrollando App con Xamarin forms, pero no me agrada Xaml, y utilizo c# hasta para el diseño, es una cuestión de gusto, esta mal?

Daniel
Invitado
Daniel

Buenas,

Primero que nada, muy buen post.

Soy desarrollador web .net y quiero pasar a Mobile.

Me encanta Xamarin, pero me pregunto si puedo llegar a hacer las cosas que tengo pensadas.
Es con respecto a las limitaciones de bajo nivel.
Me gustaría poder crear, por ejemplo, una app que genere una pantalla de bloqueo personalizada.

Es posible esto con Xamarin?