¿Qué es mejor: Xamarin Android o desarrollo normal basado en Java? ¿Cuál es la tendencia actual de la industria?

Desarrollando aplicaciones de Android usando Xamarin Vs Native android

¡Depende completamente de en qué consiste su experiencia! Aquí está el enlace a un artículo en un foro que describe todos sus matices … Ambas son plataformas increíbles

¡Aquí hay unas pequeñas características comparativas entre dos!
Ventajas de Xamarin –

  1. Xamarin tiene TestCloud que le permite probar sus aplicaciones automáticamente.
  2. Soporte para LINQ (facilidad para acceder a la entidad DB).
  3. Proporciona un 100% de reutilización de código con Xamarin. Desarrollo de IU de formularios utilizando lógica y base de código compartido . Esto ahorra mucho tiempo y recursos.
  4. Admite patrones como MVC y MVVM.
  5. Xamarin.Android es compatible con dispositivos Google Glass, Android Wear y Firephone.
  6. La curva de aprendizaje es relativa. Si su equipo conoce C #, es relativamente fácil comenzar con Xamarin.

Xamarin es el más adecuado si –

  • ya eres programador de C # y no quieres aprender ningún otro lenguaje de programación solo por el desarrollo de aplicaciones móviles.
  • está utilizando Visual Stdio y aún desea mantener el mejor IDE del mundo para desarrollar aplicaciones móviles, aplicaciones web, aplicaciones de Windows, etc.
  • No desea aprender más de una tecnología para desarrollar aplicaciones de Android, IOS y Windows.
  • Si eres fanático de los Productos y Tecnologías de Microsoft.
  • Está familiarizado con dot net y desea volver a utilizar la biblioteca dot net en Xamarin.

Ventajas de Android:

  • Realmente fácil de configurar y codificar
  • Puede desarrollarse en cualquier sistema operativo
  • Java es un lenguaje bastante simple de aprender y los IDEs para Java son más fáciles de usar que los del Objetivo C
  • Android es una plataforma muy popular, es una base de usuarios masiva
  • La documentación es estructurada y fácil de encontrar.
  • El lanzamiento de una aplicación es extremadamente eficiente gracias a Google

Desventajas de Android:

  • Android tiene un mercado mucho más competitivo para aplicaciones
  • Tienes que probar tu aplicación para una variedad mucho mayor de dispositivos. Solo tengo un dispositivo Android, pero tengo que emular al menos 10 más para verificar la compatibilidad.

Mejor es subjetivo, pero voy a ponerme nervioso y decir desarrollo basado en Java. Oh, soy independiente y me financio, no tengo inversores. ¿Por qué basado en Java? Debido a que obtienes una de las “características” más importantes con las que viene: soporte de Google y asistencia completa cuando las cosas se vuelven problemáticas. Esa es la razón principal por la que elegí quedarme con Java a pesar de que mi lenguaje favorito es C #.

Xamarin es excelente porque funciona, puedes apuntar a todas las plataformas principales a la vez y ahorra mucho tiempo. Sin embargo:

  1. AOT compilación. Eso es un factor decisivo para mí.
  2. Limita su código: base en Xamarin a Xamarin solo.
  3. Crear interfaces de usuario con un factor sorpresa requiere demasiado trabajo.
  4. El tamaño final de la aplicación aumenta en más del 1,000%. Un apk de 200 kb hecho en Java tiene un equivalente de Xamarin de 3 MB.
  5. Todo lo de las capas de aplicaciones no lo hace por mí.
  6. Ese problema de soporte significa que las actualizaciones son un poco más lentas para la plataforma.

Al final del día no hay una respuesta en blanco y negro. Creo que el factor más importante es qué tipo de aplicación está creando y a quién va dirigida. El mejor caso de uso que veo son las soluciones empresariales empresariales. En tal escenario, los aspectos negativos de Xamarin son solo daños colaterales en comparación con los beneficios.

He desarrollado para Android usando Xamarin (no formularios; mi respuesta no se aplica necesariamente a esto) y Java normal con Android Studio. Además de Xamarin, también he tenido algo de experiencia usando Appcelerator’s Titanium (un marco híbrido multiplataforma donde puedes escribir aplicaciones en Javascript).

Para ser franco, dada cualquiera de las aplicaciones más simples, no usaría otra cosa que Java + Android Studio / Swift + Xcode dada la opción. Si ni siquiera está considerando el iPhone, entonces, sin ninguna duda, elegiría Java. ¿Por qué? Porque todo ese ‘Escribir código una vez para ambas plataformas’ suena muy agradable en teoría, pero viene con muchos problemas que se encuentran en el camino.

En primer lugar, y muy importante, es la gran disponibilidad de bibliotecas que tiene a su disposición. Agregar cualquiera de las miles de bibliotecas, así como la administración de dependencias, generalmente es tan simple como agregar una sola línea en su archivo build.gradle y sincronizar. Claro, con Xamarin se han portado algunos de los más populares, y puede usar enlaces (EgorBo / Xamarin.GradleBindings), pero está lejos de ser un proceso 100% garantizado para trabajar, y cuando una biblioteca se actualiza, gana ‘ t sea tan simple como actualizar un número en un archivo. Nunca subestimes la cantidad de tiempo y dolores de cabeza que esto puede salvarte.

Luego, nos metemos en una gran cantidad de problemas de soporte y compatibilidad cada vez que desee hacer algo como actualizar sus herramientas de Android SDK y apuntar a una plataforma que acaba de salir. En teoría, Xamarin actualiza su soporte relativamente rápido. Pero no hace mucho tiempo, salió una nueva versión de Xamarin.Android, y tan pronto como la actualicé tan bien como Xamarin Studio, el IDE simplemente se negó a abrir mi proyecto. Se bloqueaba cada vez que intentaba abrirlo. Una desinstalación y reinstalación completas no hicieron nada. Paso muchas, muchas horas tratando de identificar el problema y, finalmente, después de mirar varios foros en línea, lo único que funcionó fue descargar por separado las versiones antiguas de Xamarin.Android + Xamarin Studio e instalarlas en su lugar.

Esto sucedió no una vez, sino DOS VECES, con diferentes versiones, y estuve a punto de tirar mi computadora por la ventana. Nunca obtendrá este tipo de problemas con Android Studio, y si lo hace, Google ENCONTRARÁ rápidamente una solución, y el nivel de soporte que tiene está en otra liga. También puede darse el lujo de apuntar a las plataformas más recientes y usar los últimos SDK tan pronto como salgan, sabiendo que se han probado exhaustivamente y que es extremadamente fácil usar una versión anterior en el peor de los casos.

Luego llegamos al tema completo de la documentación. Xamarin tiene buena documentación, claro; Pero debido a que la cantidad de usuarios que se desarrollan en Java es mucho mayor que la de los usuarios de Xamarin, la documentación y la información general (StackOverflow) que encuentra también son mucho mayores. Cualquier cosa que pueda buscar en Google, y es muy probable que descubra que su problema ya se ha resuelto. Confía en mí, eventualmente llegarás a perderte esto, y con Xamarin a veces tendrás que depurar muchos problemas por tu cuenta.

Finalmente llegamos a la calidad de los IDE. Android Studio es, a pasos agigantados, mucho, mucho mejor que Xamarin Studio para Android. Es mas rapido. Siempre está actualizado. El editor gráfico es mucho más confiable y completo. Es mucho más estable y la refactorización y autocompletado es mucho más inteligente (he tenido un bloqueo de Xamarin Studio al MENOS una vez al día, lo que se vuelve muy molesto, especialmente cuando pierdes tu historial de Ctrl-Z), y para colmo , compilar lleva menos tiempo.

La única ventaja que puedo encontrar para Xamarin es usar C #, que sí, en mi opinión, es un lenguaje mucho más agradable que Java (aunque solo sea para cosas como LINQ, genéricos y propiedades adecuados), pero esto de ninguna manera compensa todo El resto de los factores.

De hecho, he descubierto que incluso si está desarrollando tanto para Android como para iOS, al final, el tiempo que ahorra usando una solución multiplataforma termina siendo más costoso para el mantenimiento y los problemas que terminará teniendo . En esencia, estás tomando prestado tiempo del futuro con interés. Es por eso que prefiero tener el soporte garantizado de Google / Apple, y la lista completa de beneficios que viene con esto, y sugiero lo mismo para otros.

Otros pueden, por supuesto, haber tenido una experiencia diferente, y no soy el dueño de la verdad. Pero sí sugiero, al menos, que intentes desarrollar algunas aplicaciones simples en ambos para ver la diferencia.

Xamarin proporciona herramientas de desarrollo de software comercial que permiten a los desarrolladores desarrollar aplicaciones para Android, iOS y Windows utilizando el lenguaje C # y el marco .NET. Xamarin se basa en .NET Framework. Permite escribir código una vez y ejecutarlo en múltiples plataformas.

Sin embargo, Xamarin sigue la escritura una vez y se ejecuta en cualquier lugar, recomendaría comenzar con Android nativo en lugar de Xamarine si desea desarrollar aplicaciones de Android en particular. Como lo ayudará a comprender los conocimientos básicos de Android que se requieren para el desarrollo de cualquier aplicación de Android, de lo contrario, puede verse atrapado en algunos problemas relacionados con la plataforma subyacente.

Java tendrá un soporte mucho mejor, directamente desde Google. También hacer que xamarin interactúe con bibliotecas nativas o basadas en Java no es exactamente fácil.

Dicho esto, hay una razón muy convincente para usar Xamarin: puede escribir su aplicación usando Xamarin y puede ejecutarse tanto en iOS como en Android. Entonces, una sola base de código y apuntas a las dos principales plataformas móviles.

Teniendo en cuenta la industria, el desarrollo basado en Java es la tendencia. Si observa las ofertas de trabajo, verá que Xamarin Android Development tiene una clasificación realmente baja en comparación con el desarrollo nativo de Android.

Esto se debe a que una empresa que está adecuadamente financiada no necesita una solución multiplataforma. Cuando digo ‘no necesita’ me refiero a que tienen codificadores que también pueden codificar para otras plataformas.

La única área donde esto es bastante rentable es en el caso de nuevas empresas. Es muy probable que no tengan fondos suficientes y tienden a buscar soluciones multiplataforma.