domingo, 29 de octubre de 2017

Java vs C#





¿Cual lenguaje de programación orientado a objetos y de propósito general es mejor para usted? 
Ambos tienen bibliotecas extensas que se pueden usar para crear aplicaciones de escritorio, la web, dispositivos móviles y otras plataformas. Ambos tienen grandes comunidades de fanáticos entusiastas y mucho apoyo en línea.

Con tanto en común, seleccionar el idioma correcto requiere un enfoque más profundo, echemos un vistazo más de cerca a las similitudes y diferencias entre C# y Java.

Principales Similitudes
Los orígenes de Java y C# están estrechamente ligados a la transición de los lenguajes de programación de bajo nivel como C++, puesto que los lenguajes de programación de alto nivel que se compilan en código de bytes se pueden ejecutar en una máquina virtual. Esto viene con una serie de beneficios, más notablemente la capacidad de escribir código legible por el hombre, una vez que se puede ejecutar en cualquier arquitectura de hardware que tiene la máquina virtual instalada en él. Estas son algunas de las principales similitudes entre C# y Java:

  • Tipo seguro. Si se produce un error de tipo cuando el tipo de datos de un objeto se asigna por error a otro objeto, creando efectos secundarios no deseados. Tanto C # como Java hacen un buen esfuerzo para garantizar que los lanzamientos ilegales se capturen en tiempo de compilación y se expulsarán excepciones en el tiempo de ejecución si un lanzamiento no se puede convertir a un nuevo tipo.
  • Garbage Collection. En lenguajes de bajo nivel, la gestión de memoria puede ser tedioso porque hay que recordar eliminar adecuadamente los nuevos objetos para liberar recursos. Ese no es el caso en C# y Java, donde la recolección de basura incorporada ayuda a prevenir pérdidas de memoria mediante la eliminación de objetos que ya no están siendo utilizados por la aplicación.
  • Herencia. Tanto C# y Java soportan una sola sola ruta de herencia de cualquier clase base a cualquiera de sus clases derivadas. Esto limita los efectos secundarios no deseados que pueden ocurrir cuando existen varias rutas entre múltiples clases base y clases derivadas.
  • Interfaces. Una interfaz es una clase abstracta en donde todos los métodos son abstractos. Un método abstracto es uno que se declara pero que no contiene los detalles de su implementación. El código de administración de todos los métodos o propiedades definidas por la interfaz debe ser suministrado por la clase que lo implementa.
Principales Diferencias 

Existen muchas similitudes entre ambos lenguajes de programación pero es importante recordar que C # tiene su origen en el deseo de Microsoft de tener un lenguaje propietario “similar a Java” para su propia la plataforma .NET. Al mismo tiempo, la comunidad de código abierto de Java continuó creciendo, y hay una carrera de armas técnica desarrollada entre los dos lenguajes de programación.  Estas son algunas de las principales diferencias entre C# y Java. 
  • Enumeraciones: en C #, las enumeraciones son listas simples de constantes con nombre donde el tipo subyacente debe ser integral. Java lleva la enumeración más allá tratándola como una instancia nombrada de un tipo, lo que hace que sea más fácil agregar un comportamiento personalizado a las enumeraciones individuales.
  • Excepciones contraladas. Java distingue entre dos tipos de excepciones-marcado y sin marcar. C# eligió un enfoque más minimalista tan solo por tener un tipo de excepción. Mientras que la capacidad de capturar las excepciones puede ser útil, también puede tener un efecto adverso sobre el control de la escalabilidad y la versión.
  • Polimorfismo. C# y Java tienen enfoques muy diferentes de polimorfismo. Mientras que Java permite el polimorfismo de forma predeterminada, C # debe invocar la palabra clave “virtual” en una clase base y la palabra clave “override” en una clase derivada.
  • Soporte para Delegados. C # tiene delegados que esencialmente sirven como métodos que pueden invocarse sin conocimiento del objeto de destino. Para lograr la misma funcionalidad en Java, necesita usar una interfaz con un único método o alguna otra solución que puede requerir una cantidad no trivial de código adicional, dependiendo de la aplicación.
¿Cuándo se debe usar C# o Java?
Con tanto en común entre ambos lenguajes de programación, final la decisión será tuya, dependiendo en gran medida de la plataforma que elijas para tu proyecto. C# se utiliza principalmente en las implementaciones de .NET Framework, Mono, y Portable.NET de CLI. Si tu software o aplicación web se está construyendo para Windows, C# funciona mejor con la suite de tecnologías de .NET.

Basados en lo anterior, si deseas desarrollar para Unix, Linux u otras plataformas que no son Microsoft, Java es la mejor opción. La comunidad Open Source está en constante creación de nuevas bibliotecas y herramientas. Hay que recordar también que Java es el lenguaje principal utilizado por Google para desarrollar Android, que es actualmente el mayor sistema operativo para dispositivos móviles.

Ten en cuenta que las ventajas mencionadas anteriormente son leves, ni uno ni otro lenguaje de programación es probable que desaparezcan en el corto plazo. Ambos lenguajes han existido el tiempo suficiente como para que realmente no haya nada que no se puede construir en uno que no se pueda construir en el otro. En pocas palabras: Elije el lenguaje de programación que mejor se adapte a tu proyecto o plataforma de elección.

Tú puedes dar tu punto de vista sobre este debate en los comentarios. Me sentiré muy agradecido si compartes este artículo en las redes sociales.




No hay comentarios:

Publicar un comentario