Principalmente razones religiosas, que generalmente reducen el pensamiento, la capacidad de comprender a las personas: tecnología en este caso y aquí es donde se detiene la discusión. Y Church-Of-Apple es una raza especial (verifique las respuestas anteriores), aunque mi primer cuadro fue IIe y hoy es MBP, nunca estuve infectado.
Puedo recordar mi primera charla sobre MonoDroid, más tarde Mono para Android, ahora Xamarin.Android en 2011-02. La primera pregunta del desarrollador de Java fue “¿Puedes hacer F5?” (Inicie la aplicación con una sola pulsación de tecla). Podría, pero esto explica la mayoría de los desarrolladores “nativos” y su mentalidad.
¿Por qué “nativo”? Porque se necesita la definición de “nativo” (esto suena como una exageración orgánica o bio-algo). Cuando el desarrollador de Android me dice que Xamarin no es nativo, es fácil demostrar que están equivocados con iOS, es un poco más difícil, pero factible con una discusión más larga.
Conversación habitual con el desarrollador “nativo” de Android, en realidad este es casi un estenograma de la última discusión hace 2 semanas, (AFB, IFB, XFB, Android, ios xamarin fanboy respectivamente XFB – yo / yo / yo)
XFB: “Entonces, ¿desarrollas \” de forma nativa \ “con Java y Android SDK?”
AFB: asiente o dice “Sí”
XFB: “Entonces, ¿para qué sirve NDK?”
AFB: “Esto es para el desarrollo [nativo / c-c ++]”
Los inteligentes usan c-c ++, porque entienden que la pregunta los está conduciendo a hielo delgado, por lo que para ellos necesito más Qs para reducir su quard:
XFB: “Entonces, ¿por qué c-c ++? ¿Para qué se usa c / c ++?”
Hay que esperar la palabra “nativo”, luego se baja la guardia y las manos están cansadas.
XFB: “¿Entonces teóricamente puedo escribir una aplicación de Android perfectamente legal de forma nativa en c / c ++? ¿Por qué necesito Java?”
Por lo tanto, es fácil con los desarrolladores de Android demostrar que su definición de nativo carece de algo. Esto se debe simplemente a la tecnología (VM, bytecode, etc.). Con iOS es un poco diferente porque no hay VM, el objetivo-c es un superconjunto de c y, por lo tanto, está más cerca del metal. Pero preguntas como “¿Qué es más objetivo nativo-c o rápido?” baja la guardia también.
Esos fanáticos religiosos no entienden la tecnología y ese lenguaje de programación es solo un parámetro / variable en este tema complejo y hay mucho más.
En el mundo móvil, personalmente defino nativo como el proveedor de conjunto de herramientas / cadena de herramientas / ecosistema que ha elegido hacer una copia de seguridad del desarrollo en su plataforma, por lo que “native” (llamado-native / fanboy-native) es Java en Android y Objective-C / Swift en iOS
Es posible llamar a java desde c / c ++ escribiendo así la interfaz de usuario de Android en c / c ++. Lo mismo es cierto para iOS con Objective-C ++. ¿Pero es factible? En la mayoría de los casos no.
Por otro lado, intente buscar bibliotecas para VoIP (protocolo SIP) u OCR para iOS y Android o incluso mejor intente implementarlas. No hay bibliotecas nativas de fanboy ampliamente utilizadas, solo aquellas escritas en c / c ++ (SIP -PJSIP, OCR – tesseract). Sí, hay bibliotecas de pila SIP escritas en Java o incluso C #, pero no para usos de la vida real.
Por lo tanto, los casos de uso / requisitos deben definir qué herramientas pueden / deben usarse.
Las implementaciones de teléfonos SIP en Android e iOS llaman nativo (c / c ++) del mundo “nativo” (Objective-c / java) y esto es exactamente lo que hace Xamarin, pero “nativo” es c # / f # y nativo son (c / c ++ libSomething.a o libSomething.so, libSomething.a / framework, jar)
Cómo es nativo o no nativo Xamarin verifica este (con enlaces de actualización 2) hecho por el ex Googler Harry Cheung:
2015-03:
https://medium.com/@harrycheung/ …
2015-02:
https://medium.com/@harrycheung/ …
Para la toma de decisiones basada en el intercambio de código, compartamos el código y reduzcamos el costo leyendo las respuestas sobre un caso de uso:
¿Por qué Trello eligió a Xamarin?
Hoy, incluso Apple está copiando ideas y tecnologías bien probadas para habilitar sus paradigmas multilingües y múltiples plataformas de hardware y sistemas operativos. Mono / .net.java utiliza esas tecnologías (lenguaje intermedio, bytecode, cuasi ensambladores, código máquina de alto nivel) durante 15-20 años.
Nadie está hablando de las principales noticias para desarrolladores de Apple: Bitcode
Aplicación Thinning (iOS, watchOS)
App Thinning es lo que Microsoft ya hace con las aplicaciones de Windows Phone y Windows Store, optimizando el código en la tienda y las optimizaciones finales para el dispositivo y el sistema operativo después de la instalación (descarga desde la tienda) en el dispositivo.
Pero para los desarrolladores que no desean tener aplicaciones de “costo reducido”, esto podría ser difícil de aceptar debido a creencias religiosas.