La cuestión de si C # o Java está por delante del otro está en debate, pero en lugar de centrarme en las características del lenguaje de uno u otro, preferiría centrarme en lo que implica evolucionar un lenguaje. Es un hecho con el que no creo que nadie discuta: Java es anterior a C #.
Problemas para cambiar el funcionamiento de un idioma:
- Si rompes la compatibilidad con versiones anteriores, molestas a muchos desarrolladores
- Si molestas a tus desarrolladores, pasan a otro idioma que los soporte mejor. Por lo tanto, no hay razón para seguir trabajando con el idioma.
- Java tomó algunas decisiones de diseño desde el principio con la presión de llevar el lenguaje al mercado. La esperanza era regresar y completar algunos de los espacios en blanco. Esas decisiones aún afectan el lenguaje porque los mantenedores no quieren violar el primer punto.
- Java abrió mucho territorio nuevo y demostró de una vez por todas que un lenguaje recolectado de basura se puede tomar en serio, y tener un rendimiento lo suficientemente bueno para la mayoría de las personas.
- C # entró más tarde y aprendió muchas de las lecciones con las que se topó Java, por lo que pudieron evitar algunas de las limitaciones técnicas que Java tiene debido al punto 3.
- Las nuevas características del lenguaje tienen que resolver un problema real de una manera sensata. No todas las funciones de idioma tienen sentido en el contexto del idioma al que está intentando agregarlo. Es por eso que, a pesar de sus similitudes, Java y C # continuarán siendo lenguajes diferentes.
Entonces, ¿C # tiene más funciones de lenguaje que Java? Creo que sí. ¿Son útiles? Creo que sí. ¿Eso significa que C # es mejor o más maduro que Java? Con lo que no estoy de acuerdo. Son diferentes, simples y simples. Java nunca tendrá todas las características de C # ya que C # nunca tendrá todas las características de Java.
Una de las características de Java, la capacidad de escribir un programa en Windows e implementarlo en Unix o Mac, nunca sucederá directamente por el soporte de Microsoft. ¿Porque preguntas? No es porque Microsoft sea malvado (si eso es cierto o no, realmente no me importa). Es porque aprendieron una lección que Sun nunca aprendió: escribir una vez que se ejecuta en cualquier lugar comercializa los sistemas operativos y el hardware. Si le interesa ganar dinero con las ventas de su sistema operativo, no desea que sea trivial cambiarlo y aún así tener una aplicación funcionando. Si lo hizo, no puede obtener ningún beneficio del sistema operativo porque siempre hay opciones más baratas.