Tecnología

¿C# o Java?

Publicado el

Hola a todos, hoy nos vamos a meter de lleno en una peliaguda disputa entre dos de las comunidades de programadores más grandes que existen en estos tiempos para dar nuestro criterio y responder la pregunta ¿Qué lenguaje de programación es mejor, Java o C#? Nada que espero un motón de comentarios a favor y en contra de lo que voy a escribir.

Los dos lenguajes parten de la premisa de simplificar el trabajo de los programadores haciéndoles la vida más fácil, esa es la principal diferencia con su ancestro común C++; ambos tienen extensas bibliotecas que se pueden utilizar para crear aplicaciones de escritorio, web, dispositivos móviles y otras plataformas. Ambos tienes grandes comunidades de aficionados entusiastas y un sinfín de soporte online.

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

C#

El lenguaje más popular de Microsoft siempre había sido Visual Basic, principalmente con la versión Visual Basic 6, pero Microsoft apostó por crear la plataforma Framework .NET para suplir las carencias y desventajas que tenían con VB6.

Microsoft .NET es la tecnología por la que sigue apostando la compañía actualmente, y se ha transformado en una de las más potentes hoy en día, abarcando diferentes ámbitos en la programación, desde las aplicaciones de escritorio hasta la creación de videojuegos.

Cuando se presentó .NET en el 2003, lo hizo junto a un nuevo lenguaje de programación. Llevaban años desarrollándolo, bajo el nombre de COOL (C Object Oriented Language), pero al final en su presentación cambió de nombre por C Sharp.

El creador principal de C# es Andres Hejlsberg, que participó en la escritura del código de la plataforma .NET, antes había trabajado en el diseño de Turbo Pascal, Delphi (la parte visual de Pascal) y Visual J++.

 Características principales de C#

Veamos algunas de las características del lenguaje C#, y así poder comparar con algunos más parecidos a él como Java o C++.

Estas características pueden verse como una serie de ventajas y desventajas del lenguaje de programación C#.

  1. Sintaxis sencilla. La sintaxis de C# es muy similar a Java, lo que simplifica al desarrollador a la hora de escribir código.
  2. En C# tienes que declarar los tipos de datos con las variables, además que estas variables no pueden ser globales. De esta manera se reducen los errores de compilación. Además, es un lenguaje orientado a objetos, así que obliga que todos los métodos y propiedades estén dentro de una clase.
  3. Orientación a componentes. Además de ser orientado a objetos, como hemos dicho antes, es orientado a componentes. Podemos definir propiedades sin necesidad de crear métodos, como en Java, o usar eventos sin tratar con punteros a funciones. Escribir código en C# es mucho más sencillo y potente que en otros lenguajes de programación.
  4. Sistema de tipos unificado. Todos los tipos de datos sencillos de C# derivan de una clase común llamada System.Object. De esta manera, la conversión de tipos sólo es compatible entre los tipos más cercanos (números enteros con decimales, por ejemplo), además de facilitar la creación de colecciones.
  5. CLR (Common Language Runtime). Es el núcleo de .NET, el motor que ejecuta las aplicaciones programadas en C#, lo que ayuda a la integración del sistema operativo o dlls externas.
  6. Espacio de nombres. Puedes agrupar o aislar código mediante namespaces, parecido al package de Java.
  7. En C++ se permite la herencia múltiple, pero en C# no, aunque puedes implementar interfaces. De esta manera se evitan complicaciones y simplifica la escritura.
  8. Operadores sobrescritos. En C# puedes recodificar un operador, como puede ser el sumatorio + o el incremento ++.
  9. Cualquier compilador de C# viene con un mínimo de biblioteca de clases disponibles y que puedes usar.
  10. Eliminación de los problemas de DLLs. Aunque puedes crear dlls en .NET, no te encuentras con la problemática de la sustitución de versiones antiguas de dlls compartidas con versiones nuevas. Pueden existir diferentes versiones de la misma dll, simplificando la instalación del softwasre.
  11. Actualmente, el lenguaje C# es de código abierto y se ha utilizado en otros IDEs, como el proyecto Monoo Xamarin, y en múltiples sistemas operativos, como puede ser OSx o Android.
  12. Integración con otros lenguajes. Cualquier lenguaje que se compile con .NET, como la nueva versión de visual basic, puede aprovecharse para usar en tu proyecto.
  13. Mejora en la gestión de memoria. Al igual que Java, en C# dispone de un recolector de basura que destruye los objetos que no se usan en memoria.
  14. Tratamiento de errores. Cualquier lenguaje de programacion moderno utiliza las excepciones para controlar los posibles errores en el código.
  15. Puedes dividir tu código en múltiples hilos de ejecución, trabajar en paralelo y sincronizándose al final.

 

Microsoft Visual Studio .NET

En 2002 aparece Visual Studio .NET, que viene con el FrameWork 1.0, lo que supuso la introducción de C# como un nuevo lenguaje de programación.

Las diferentes versiones que aparecieron son:

Visual Studio .NET

Visual Studio .NET 2003

Visual Studio 2005

Visual Studio 2008

Visual Studio 2010

Visual Studio 2012

Visual Studio 2013

Visual Studio 2015

Visual Studio 2017

Como puedes ver, cada dos años aproximadamente aparece una nueva versión con más novedades.

Una de las novedades sería en la versión de Visual Studio 2005, aparece por primera vez opciones gratuitas llamadas Express, que separa cada lenguaje de programación en una plataforma, además de algunas limitaciones.

Por ejemplo, podrías encontrarte un Visual Basic Express 2005, o Visual C# Express 2005. estas versiones están pensadas para estudiantes. También en esta versión aparece XNA Game Studio, para hacer proyectos para Xbox 360.

Con Visual Studio 2012 ya se podía crear programas para Windows Phone, porque salió junto con el sistema operativo Windows 8.

En Visual Studio 2013 se abandonan las versiones gratuitas Express, y se cra la versión Community. Con Visual Studio Comunnity ofrece lo mismo que la versión Professional, pero está pensada para equipos de programadores más pequeños, aparte de los estudiantes.

La última versión, Visual Studio 2017, viene con Xamarin integrado, y nos permite crear aplicaciones multiplataforma para móviles, es decir, aplicaciones UWP (Windows Universal), iOs y Android.

 

Java

Java actualmente puede ser considerado uno de los lenguajes más extendido y usado del mundo, pero esto no siempre fue así. ¿Cuál es la historia de Java?

Para hablar de la historia de java, primero debemos remontarnos a los años 80, donde C podía considerarse el lenguaje por antonomasia. Era un lenguaje versátil, que podía actuar a bajo nivel y resolvían problemas muy complejos. Era la cima de la programación estructurada, para resolver estos complejos algoritmos, se generaban grandes procedimientos con un código muy complicado de mantener a largo plazo. Por ello empezó a surgir como alternativa la programación orientada a objetos, y con ella nació C++. Entonces, ¿por qué surgio Java?

 

Inicios de JAVA

Java nace en 1991 con el nombre “OAK”, posteriormente cambiado por Green por problemas legales, yfinalmente con la denominación actual JAVA.

El objetivo de java era crear un lenguaje de programación parecido a C++ en estructura y sintaxis, fuertemente orientado a objetos, pero con una máquina virtual propia. Esto se hizo bajo el principio, de poder ser usado bajo cualquier arquitectura “Write Once, Run Anywhere (escríbelo una vez, ejecútalo en cualquier sitio)”.

En 1992 se presenta el proyecto verde, con los prototipos a bajo nivel. Entre 1993 y 1994 se trabaja para poder presentar un prototipo funcional (hotJava) donde se ve todo el potencial que JAVA puede ofrecer.

Establecimiento

En 1995 finalmente, es presentada la versión alpha de java, y un año despues en 1996 es lanzado el primer JDK (JDK 1.0). El desarrollo de java a partir de entonces es imparable, se van presentando nuevos paquetes y librerías hasta la actualidad.

Java hoy en día

A día de hoy, podemos decir, que Java es uno de los lenguajes más importantes del mundo. Con una comunidad extendida en todos los componentes y más de 4 millones de desarrolladores, existen millones de dispositivos que lo usan. Ademas, tras el surgimiento de android, java se establecido como el lenguaje de programación para móviles más extendido del planeta.

Curiosidades de JAVA

El nombre de JAVA tiene una gran polémica con respecto a su origen, se discuten varias teorías:

Una de las teorías más difundidas viene del café, se dice que una cafetería cercana donde los desarrolladores tomaban café se llamaba de la misma forma, de ahí vendria tambien su logo con una taza de café humeante.

Otra versión dice que viene del acrónimo: Just Another Vague Acronym (“sólo otro acrónimo ambiguo”).

Aparte de estas teorías, la versión más plausible es que se eligió su denominación al azar de una lista de posibles nombres.

 

C# vs 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:

* 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 única. 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.

 

C# vs. Java: 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.

* Windows vs. Open-Source. Si bien existen implementaciones de código abierto, C# se utiliza sobre todo para el desarrollo de plataformas de Microsoft por medio del Framework de.NET. En el otro extremo del espectro, Java tiene un enorme ecosistema de código abierto y ganó un segundo aire a pesar de su edad, en parte gracias a la adopción de la JVM de Google para Android.

* 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.

¿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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *