Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Sr_Malweriks en 17 Julio 2015, 01:19 am



Título: ¿Java o C# para aplicaciones Android?
Publicado por: Sr_Malweriks en 17 Julio 2015, 01:19 am
Buenas gente, como ya pregunto en el Asunto, para programar aplicaciones Android, ¿cual es mejor? ( en el sentido de complejidad, utilidades, etc)
Yo de momento estoy aprendiendo Java para Android y me está gustando, sin embargo leo a mucha gente que prefiere programar en C#.

¿Alguien sabe la diferencia?

Saludos.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: OLM en 17 Julio 2015, 02:09 am
Hola amigo,

Yo diría que ninguno es mejor que otro, ¿sabes programar en C#?
Quizas es mas recomendable si estas aprendiendo que empieces en Java con Android Studio.

Saludos.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: daryo en 17 Julio 2015, 05:53 am
¿cual es mejor¿. Depende , pero en este caso  gana java , las herramientas de android estan hechas para este lenguaje en especifico e igual que la mayoria de la documentacion.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: Sr_Malweriks en 28 Julio 2015, 21:44 pm
Gracias por las repsuestas!

Yo llevo ya un buen tiempo programando en Java en Android Studio y estoy aprendiendo bastante y como consecuencia ye me he habituado a este lenguaje.

Respecto a C#, algo he tocado, no mucho pero si algo...

Básicamente he creado este tema por mi duda, ya que como he comentado anteriormente, me he encontrado con la sorpresa de que hay desarrolladores que informan de que algunas app para Android están hechas en C#, incluso hay convertidores o "adaptadores" que ingresas el código de tu aplicación hechas en Java y automaticamente te la convierte a C# (algo que a simple vista parece complejo de hacer...) de ahí mi duda de por qué la gente programa apps en C#, si había alguna diferencia o algo...


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: crack81 en 28 Julio 2015, 21:56 pm
La gran diferiencia es que muchos proyectos android-c# se hacen con xamarin el cual te da la ventaja de que con la misma base de codigo puedes crear aplicaciones tanto para cualquier plataforma

Personalmente el mejor IDE de desarrollo multiplataforma y multidispositivo es Delphi xe7

Te permite generar codigo tanto para windows,mac, android,iOS
personalmente siempre se me ha hecho muy cansado el desarrollo en android utilizando java por eso yo lo hago en Delphi.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: Sr_Malweriks en 29 Julio 2015, 00:09 am
Ya bueno pero Delphi es un programa para escribir codigo, Java es un lenguaje.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: crack81 en 29 Julio 2015, 00:49 am
Igual que android estudio, pero dada la importancia de Delphi si es considerado un lenguaje ya que el nombre correcto "objeto pascal" nunca ha sido conocido.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: Sr_Malweriks en 29 Julio 2015, 01:33 am
Entendido.

Resumiendo: sigo con Java y Android y Studio?


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: crack81 en 29 Julio 2015, 05:54 am
Si sabes programar en java seria lo ideal


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: Eleкtro en 29 Julio 2015, 13:31 pm
Yo llevo ya un buen tiempo programando en Java en Android Studio y estoy aprendiendo bastante y como consecuencia ye me he habituado a este lenguaje.

Respecto a C#, algo he tocado, no mucho pero si algo...

Entonces tu pregunta queda respondida con tus preferencias, sigue con Java, a menos que te guste mucho más utilizar C# para programar.



Citar
Básicamente he creado este tema por mi duda, ya que como he comentado anteriormente, me he encontrado con la sorpresa de que hay desarrolladores que informan de que algunas app para Android están hechas en C#

Claro que si, las hay en C#, y en VB.Net (e incluso escritas en otros lenguajes menores derivados de BASIC también, con basic4android, pero no merece la pena mencionar esa basura de IDE).

Si te gusta la programación con C#, y si le sabes sacar partido a la mejor IDE existente (indiferentemente de los lenguajes soportados), es decir, Microsoft Visual Studio, entonces si que deberías considerar darle una opción al desarrollo bajo la plataforma .Net, ya que tienes una excelente herramienta de desarrollo para Android bajo C# (y parcialmente VB.Net) con integración para Visual Studio:
Xamarin For Visual Studio (http://xamarin.com/visual-studio)

También tienes la versión standalone, Xamarin Studio:
Xamarin Studio (http://xamarin.com/studio)

Y también tienes a tu disposición una infinidad de herramientas profesionales como por ejemplo el set de controles RAD de Telerik para Xamarin Studio/Xamarin For Visual Studio.



Citar
incluso hay convertidores o "adaptadores" que ingresas el código de tu aplicación hechas en Java y automaticamente te la convierte a C# (algo que a simple vista parece complejo de hacer...)

Por supuesto, pero ese tipo de conversiones encuentran complicaciones en códigos complejos, no esperes que siempre sean capaces de realizar una traducción 100% idéntica y funcional. como tu has dicho es dificil.

Las aplicaciones de Tangible son de lo mejorcito que existe para este tipo de conversiones, y aun así no es nada perfecto:
Tangible Code Converters (http://www.tangiblesoftwaresolutions.com/Product_Details/Products.html)



Citar
de ahí mi duda de por qué la gente programa apps en C#, si había alguna diferencia o algo...

¿Diferencia entre...?, ¿entre desarrollar una app en C# o en Java?, ¿diferencias de que tipo exactamente?, las diferencias visuales depende del framework que utilices para construir la UI claro está, y sobre las diferencias internas pues...:

Sobre Android internamente no se mucho, pero por como trabaja el compilador de Xamarin deduzco que apenas debe existir alguna ínfima diferencia de rendimiento, hoy en día la gente dice "Virtual Machine" y se echan las manos a la cabeza como si fuera algo terrible que se deba evitar, pero bueno, así es como creo que trabaja más o menos Xamarin:

Compilación:
- El compilador que se utiliza es Mono.
- El código C#/VB.Net se compila a código máquina (machine code).

Ejecución:
- Para la ejecución del código máquina no se utiliza el JIT de .Net, sino AOT.
- El runtime y VM de android (ART) automaticamente genera unas classes de Java conocidas como Android Callable Wrappers (ACW)
   lo que sirve para que el runtime y VM de Mono se comunique de ida y vuelta con ART, y vice versa,
   esa es la base de la interoperabilidad entre Mono y Android:

(http://developer.xamarin.com/guides/android/under_the_hood/architecture/Images/architecture1.png)

Aquí tienes algo más de información general:
Part 1 – Understanding the Xamarin Mobile Platform - Xamarin (http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_1_-_understanding_the_xamarin_mobile_platform/)

Aquí tienes un ejemplo más claro de lo que sucede internamente en la ejecución del código nativo compilado y empacado en la .app:
Android Callable Wrappers. Implementation Details - Xamarin (http://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/android_callable_wrappers/)

Aparte de eso, Xamarin tiene algunas limitaciones:
Limitations  - Xamarin (http://developer.xamarin.com/guides/android/advanced_topics/limitations/)



Yo jamás utilizaría Java para desarrollar una app de Android (ni una app de nada), no por que sea malo obviamente sería la opción más natural usar Java para una app de Android, pero es que mi entorno de desarrollo es otro, es .Net, y aquí ya existen herramientas maravillosas que sacan todo el beneficio a mi calidad y experiencia de programación, cosa que en Java sería todo lo contrario ya que acabaría disminuyendo mi rendimiento de trabajo en todos los aspectos al ser un mundo un poco desconocido en el que empezar desde Cero.

Por eso te digo, que deberías basar tu elección entre C# o Java según las comodidades que encuentes al usar las IDEs y herramientas que existen para ambos lenguajes, tan simple como eso, no hay que fijarse en nada más, ni si uno es mejor que el otro o blah blah blah, ambos son lenguajes excelentes y con herramientas excelentes, basa tu elección en otros factores, si te gusta java y lo ves cómodo entonces no cambies por que no te hace falta.

Un saludo.


Título: Re: ¿Java o C# para aplicaciones Android?
Publicado por: Sr_Malweriks en 1 Agosto 2015, 12:26 pm
Gracias Elektro por tu respuesta! te lo has currado... aun que aquí ya me pierdo un poco...
Citar
Compilación:
- El compilador que se utiliza es Mono.
- El código C#/VB.Net se compila a código máquina (machine code), no byte-code, no IL code.

Ejecución:
- Para la ejecución del código máquina no se utiliza el JIT de .Net, sino AOT.
- El runtime y VM de android (ART) automaticamente genera unas classes de Java conocidas como Android Callable Wrappers (ACW)
   lo que sirve para que el runtime y VM de Mono se comunique de ida y vuelta con ART, y vice versa,
   esa es la base de la interoperabilidad entre Mono y Android:

(http://developer.xamarin.com/guides/android/under_the_hood/architecture/Images/architecture1.png)

Aquí tienes algo más de información general:
Part 1 – Understanding the Xamarin Mobile Platform - Xamarin (http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_1_-_understanding_the_xamarin_mobile_platform/)

Aquí tienes un ejemplo más claro de lo que sucede internamente en la ejecución del código nativo compilado y empacado en la .app:
Android Callable Wrappers. Implementation Details - Xamarin (http://developer.xamarin.com/guides/android/advanced_topics/java_integration_overview/android_callable_wrappers/)

Aparte de eso, Xamarin tiene algunas limitaciones:
Limitations  - Xamarin (http://developer.xamarin.com/guides/android/advanced_topics/limitations/)