Me recomendaron aprender C # para poder codificar para iOS y Android a través de Xamarin. ¿Es una mejor idea aprender ObjC y Java en su lugar?

1. SIEMPRE se recomienda que conozca Java / Obj-C / Swift si desea crear aplicaciones nativas. Además, los lenguajes en sí mismos no son realmente tan difíciles de aprender, sino los frameworks / API subyacentes para ambos y la experiencia de usarlos.

2. C # / Xamarin simplemente le permitirá crear cosas con un idioma utilizando algunas API y controles nativos y por qué es probablemente una de las mejores opciones si desea crear aplicaciones para Android / iOS utilizando un lenguaje / marco unificado. Es una de las raras soluciones de desarrollo móvil que realmente utiliza las API y controles nativos. Casi todos los demás framework / lenguaje construyen sus propios controles y realmente no utilizan API nativas y eso nunca es bueno.

Aquí hay algo a tener en cuenta. Si bien Xamarin / C # le permitirá construir cosas rápidamente, con controles nativos estándar, aún le dará los más utilizados. Si quieres hacer algo genial, algunas cosas personalizadas de la interfaz de usuario, estás buscando problemas incluso con Xamarin. Sin embargo, para el 90% de las cosas, las cosas de Xamarin cubren la mayoría de los controles nativos estándar, pero en este día de edad con el desarrollo de aplicaciones móviles si su aplicación no tiene una interfaz de usuario atractiva, además de la funcionalidad, tendrá más dificultades para destacar .

Es por eso que dije primero, sabiendo que Java / Obj-C / Swift realmente será recomendable para ti. Aprender a los dos y usar API y controles 100% nativos y la capacidad de crear cosas personalizadas es un gran beneficio.

Después de eso, puede usar C # / Xamarin si desea hacer su vida más fácil y simplemente construir con un lenguaje / marco en lugar de hacer las cosas por separado, pero el conocimiento y la experiencia que obtendrá de los idiomas nativos para cada plataforma aún le permitirán el máximo flexibilidad y tener las actualizaciones absolutas de los SDK y otras cosas que agregan Google / Apple.

He estado usando Xamarin desde la versión beta1 de sus productos ios (2009) y android (2010). Ambos funcionan muy bien. He hecho mucho con ambos productos. Estoy muy feliz con ellos. Mi hallazgo es que los desarrolladores que son:
1. Desarrolladores C # /. NET.
2. Realmente he comprado código compartido para elementos que no son UI.
Hay dos tipos de desarrolladores / empresas que deberían usar Xamarin.

La plataforma “adecuada” para usted depende de su situación. Con Xamarin, debe aprender la plataforma subyacente, sin embargo, debe hacerlo de todos modos con ObjC y Java. Para mí, Xamarin fue la elección correcta, para otros, no lo es. Por ejemplo, solía trabajar en The Coca-Cola Company hace muchos años. Para ellos, se trataba de la eliminación del riesgo en todos los niveles. Percibirían el riesgo al usar Xamarin, así que estoy bastante seguro de que no lo usarían. Para mí, asumiré riesgos si creo que hay un beneficio. Xamarin fue un beneficio, el riesgo fue mínimo, así que lo hice bien. Eres el único que puede responder estas preguntas.

Pss. El beneficio para Xamarin es que no tengo que aprender un nuevo idioma. Puedo usar un idioma en iOS, Android, servidor, etc. No necesito cambiar de contexto entre Java, swift, lado del servidor y demás. Ese es un gran beneficio.

Otra opción a considerar es Codename One ( http://www.codenameone.com ). Similar a Xamarin, pero codifica en Java nativo su aplicación móvil una vez y Codename One CLoud generará una versión nativa en iOS, Andriod, Windows y Blackberry
(Divulgación, estoy afiliado a Codename One)

He creado un par de aplicaciones con Xamarin y definitivamente puedo recomendarlo (aún más ahora que hay Xamarin.Forms).

Sin embargo, requiere que comprenda algo del sistema subyacente. Xamarin te permitirá usar C #, pero aún estás usando las API nativas (aunque estén envueltas). Si bien este no es el caso de Xamarin.Forms, que proporciona una abstracción completamente nueva además de las nativas, pero incluso con Forms, tendrá que hacer algunas cosas utilizando las API nativas.

Mi recomendación es usar Xamarin, al mismo tiempo que aprende las API nativas de la plataforma en la que está trabajando a medida que avanza.

He estado escuchando sobre xamarin cada vez más, pero mi sabiduría aún se apoya en aprender individualmente. Tienen diferentes pautas de ux y ui.

Llevo 5 años codificando Android y todavía tengo mucho que aprender. Y aunque he creado algunas aplicaciones para iOS, prefiero pagarles a mis amigos para que las hagan por mí.

Aunque … para la creación rápida de prototipos, xamarin podría estar en lo cierto. Y comenzar un negocio requiere muchos prototipos.

C # y Xamarin siempre han sido un enfoque interesante para el desarrollo de aplicaciones para mí. Pero entiendo el enfoque de la aplicación Xamarin es que esencialmente se crea la aplicación completa utilizando su tecnología, interfaz de usuario y todo. Hay toneladas de funciones integradas en iOS y Android nativos a las que solo se puede acceder desde sus API nativas y que no podrá usar con Xamarin. Si realmente desea aprovecharlos, le recomendaría compilar las aplicaciones de forma nativa utilizando Obj-C y Java.

Un enfoque interesante a considerar sería crear una biblioteca central común para algunos modelos y quizás controladores (suponiendo que esté creando una aplicación con patrón MVC) con C ++ y luego usar el JNI para transferir la biblioteca a Java. Dado que Obj-C y C ++ son extensiones de C, juegan bien juntos muy fácilmente.

EDITAR: Me equivoqué en mi publicación original aquí. Puede crear aplicaciones de aspecto nativo con Xamarin.

Estoy seguro de que hay muchos programadores aquí que sienten que Xamarin está bien para el desarrollo de iOS. Pero solo soy un tipo de tipo Swifty.

Entonces, en mi humilde opinión, si desea programar para iOS, Swift es el camino a seguir.

Además, un lenguaje de código abierto, creo que también verás oportunidades más allá de iOS que surgen con el tiempo con Swift.

Esta no es exactamente una respuesta a su pregunta, pero debería ser útil de todos modos.

Las diferencias entre C # y Java son pequeñas. Me contrataron para un trabajo en C # cuando solo conocía Java y la compañía no tenía reparos en eso. Aprender uno le dará el 90% del conocimiento que necesita para el otro.

Yo iría con C # / Xamarin. Todavía tiene que aprender las complejidades de cada plataforma, pero solo 1 lenguaje nuevo, a diferencia de la ruta Objective-C Java.