Bueno, eso es un poco insultante para mí. ¿Crees que yo, y la mayoría de los desarrolladores de plataformas nativas, simplemente no sabemos nada mejor?
Te diré por qué.
- Actuación. Las aplicaciones nativas se desempeñan mejor y tienen una mejor apariencia que los híbridos. Los híbridos están basados en la web, por lo que son naturalmente más lentos y dependen de una conexión a Internet. Las aplicaciones nativas son más confiables.
- Limitaciones de la API. Sí, en mi trabajo, usamos la oscura función Bluetooth LE, y apenas podemos arreglárnoslas con las API oficiales y su documentación de mierda. Imagina tratar de hacer esto en una plataforma híbrida. ¿Crees que Xamarin me permitirá manipular BLE mejor que las API nativas? De Verdad?
- Como corolario, ¿cómo usaría un híbrido el MetalKit de Apple, un motor de computación de gráficos de bajo nivel? ¿O el NDK de Google, con funcionalidad de bajo nivel Vulkan / OpenSL? ¿Cómo utilizarías las unidades de audio de Apple, su API de audio de nivel más bajo? Las personas que hacen un trabajo serio necesitan acceso a estas cosas.
- Seguridad. La seguridad es primordial en mi dominio. Supremo. Seriamente. Es un dispositivo médico. La seguridad es obviamente mejor en las versiones nativas.
- Limitaciones de hardware. Las aplicaciones híbridas no tienen el mismo acceso al hardware que las plataformas nativas. Si su aplicación requiere GPS, acelerómetro, Bluetooth, etc … buena suerte con un híbrido.
- Como corolario (y este plaga mi trabajo todos los días), la pila Bluetooth LE difiere entre los teléfonos. El iPhone 5S no es lo mismo que el Samsung Galaxy S6 stack. Cada uno tiene sus defectos respectivos que debemos tratar. ¿Cómo diablos es posible que un híbrido adapte su código para implementar las soluciones deseadas para cada plataforma? ¡Eso ni siquiera es posible!
- Apoyo. La documentación puede ser suficientemente mala en las plataformas nativas. El soporte para BLE es inexistente. Nadie en StackOverflow tiene los problemas de software que tenemos que resolver. Nadie. Este es un territorio desconocido en algunos aspectos. Solo es sensato mantenernos lo más cerca posible de las API oficiales, para que podamos obtener, al menos, un poco de soporte de Google / Apple / Nordic. Usar un híbrido haría las cosas aún más difíciles.
- Como corolario, todas las bibliotecas de terceros que utilizo en el trabajo o para proyectos personales, como cifrado, gráficas, procesamiento de audio … ¿honestamente crees que existe un puerto Xamarin para todos esos? La mayoría de las dependencias solo están diseñadas para la plataforma nativa.
Claro, si todo lo que haces es escribir aplicaciones que no necesitan ninguna funcionalidad real de hardware / bajo nivel, entonces hazlo. Incluso entonces, su rendimiento se verá afectado, por lo que si planea realizar cualquier tipo de almacenamiento de datos significativo, procesamiento de números o multimedia, entonces olvídelo. Native es tu única opción.
Tenga en cuenta que las únicas razones para utilizar híbridos son el código base singular. Eso es. Piénsalo. Nadie que favorezca algo como Xamarin tiene otra razón para usarlo que no sea el código base singular. Nativo es mejor en cualquier otra forma.
- ¿Algunas personas superan las cosas demasiado fácilmente para ser normales?
- ¿Por qué algunas personas aman estar en peligro?
- ¿Por qué parece que la mayoría de las personas no pueden tener una discusión calmada y razonable sobre política?
- ¿Por qué los chicos siguen buscando una cara bonita, no una actitud?
- ¿Las personas solitarias suelen ser agresivas?
Los defensores de los híbridos a menudo dicen tener solo un desarrollador en una plataforma, en lugar de dos equipos en dos plataformas, pero esto no es un problema falso. Estamos hablando de software de calidad aquí. Contrata a ingenieros nativos por separado o contrata a alguien como yo que pueda hacer ambas cosas y le paga mucho dinero. Si no puede permitirse el lujo de tener desarrolladores nativos, no inicie un negocio en el que se requieran compilaciones nativas.
Por cierto, no sé por qué mencionaste los idiomas en absoluto. Los desarrolladores actuales no se preocupan por los idiomas. El lenguaje es el menor de nuestros problemas. Tenemos que aprender nuestro dominio, aprender las API móviles gigantes y los conjuntos de herramientas complejas, y resolver problemas de software. El lenguaje es probablemente la parte menos importante de todo esto.
En general, su premisa es falsa. De hecho, es bastante risible. Si crees que puedes crear la misma aplicación utilizando un marco híbrido en lugar de compilaciones nativas, entonces estás muy equivocado.
Buena suerte desarrollando software de síntesis de audio usando Xamarin 😉