Depende de la plataforma
Android - JAVA, C # (a través de MonoDroid)
IPhone - Objetivo C, C # (a través de MonoTouch)
Windows Phone - C # (Silverlight)
Meego - C ++ (QT)
Symbian - C ++, JAVA
Creo que Symbian será descartado por la mayoría de las compañías. Los teléfonos inteligentes son el futuro. Y para cada tipo de sistema operativo de teléfonos inteligentes, C # / mono estará disponible (tiene que pagar extra, pero la usabilidad lo vale) junto con el idioma nativo de la plataforma. Entonces, puedes ir por C #.
Es posible que no se logre la verdadera independencia de la plataforma, pero si usa C # en todas partes, podrá usar las mismas bibliotecas centrales y ajustar la interfaz de usuario para la plataforma.
Pero para teléfonos de bajo costo, C # no funcionará. Tienes que ir por JAVA.
No puedo hablar específicamente sobre Motorolla o Nokia, pero debe tener en cuenta cuál es la plataforma que admiten estos teléfonos. Sería mejor desarrollar en Java, ya que es una plataforma más popular y no necesita depender solo de los móviles con Windows. Una cosa más que C # es tan descaradamente cercana a Java que un compilador cruzado hace el truco para las aplicaciones de escritorio puede ser que esto también se aplique a las aplicaciones móviles.
fuente
Si desea desarrollar para Windows Phone 7, C # es perfecto (VB.NET estará disponible próximamente). También puede aprovechar cualquier conocimiento de Silverlight o XNA que tenga. No tengo idea de si la plataforma tendrá éxito, pero ¿por qué no refinar su aplicación usando un idioma que conozca y luego transferirlo a otros idiomas una vez que esté seguro de su experiencia de usuario, lógica, cálculos, etc.? Aparentemente, el emulador es muy bueno y puede complementarse con acelerómetro-emulador y gps-emulator para hacer todo, excepto hacer una llamada telefónica. (Y realmente, ¿quién usa los teléfonos inteligentes para hacer llamadas?)
fuente
Comencé a escribir aplicaciones de Android en Java con experiencia previa en C #. Descubrí que muchos conceptos fundamentales del lenguaje son similares, por lo que era simplemente una cuestión de aprender las pocas diferencias, especialmente con las bibliotecas. Si puedes aprender, codificar en el otro sería muy simple (según mi experiencia).
Yo recomendaría comenzar con Java. Android está en camino de convertirse en el sistema operativo móvil más popular, por lo que sabe que definitivamente existirá por un tiempo. Además, Java es más antiguo, por lo que hay innumerables bibliotecas y tutoriales disponibles para su uso y aprendizaje. Una vez que comprenda los conceptos básicos de Java, aprender C # debería ser muy fácil, y realmente apreciará algunas de las características (como los atributos y LINQ) que C # tiene para ofrecer.
Descargo de responsabilidad: comencé con C # (principalmente para el desarrollo web ASP.NET MVC) y luego aprendí Java para escribir aplicaciones de Android. No he hecho ninguna programación móvil con C #, así que no puedo decirte cómo es.
fuente
Quizás archive esto bajo "pensamiento lateral", pero si tiene habilidades decentes en tecnologías web "puras" - HTML, JavaScript, CSS - y dependiendo de lo que esté tratando de lograr, consulte algo como PhoneGap (http: // www .phonegap.com / acerca de). Además de la compatibilidad con dispositivos iOS (iPhone, iPad) y Android, también tienen cierta compatibilidad con Symbian. Sin embargo, generalmente necesitará las herramientas "nativas" para construir sus aplicaciones binarias nativas. Por ejemplo, si quieres hacer iPhone dev, necesitarás el iPhone sdk, XCode y estarás ejecutando OSX.
fuente