He estado aprendiendo J2SE recientemente. Después de unos 20 días, terminé de leer J2SE del Sr. Ma Bingbing. Siento que este maestro es tan divertido que no me distraeré al escuchar sus conferencias. Sinceramente, le doy un visto bueno a la profesora Ma Bingbing, y dos más a la profesora Mi, que nos hizo aprender este vídeo. (¡Hay muchas cosas bellas en el mundo, pero lo que falta son ojos para descubrir cosas bellas!).
Sin más, echemos un vistazo a lo que realmente se dice en este vídeo. Como se muestra a continuación:
Las personas que pueden haber estudiado cualquier lenguaje orientado a objetos (yo estudié C #, que sigue el modelo de Java y mejoré aún más Java), la primera impresión al ver esta imagen es que básicamente han estudiado todas estas cosas. Parece que solo hay GUI. , JDBC es algo nuevo.
De hecho, son muy similares. La mayoría de la gente piensa que son iguales de todos modos. ¡Compáralos a continuación!
En términos de sintaxis, ambos han abandonado muchos lugares llamativos, como la modificación constante de funciones y sus parámetros en C++, la sustitución de macros, las variables globales y las funciones globales.
En términos de herencia, ambos adoptan herencia de raíz única y soluciones de implementación de múltiples interfaces que son más fáciles de entender y construir. En términos de organización del código fuente, se ha propuesto una mejor encapsulación lógica que integra declaración e implementación.
En términos de unificación de tipos entre tipos básicos y objetos heredados de raíz única, el box/unbox propuesto por C# es más inteligente y eficiente que la clase de empaquetado de Java.
La orientación a componentes es sin duda la corriente principal del desarrollo de software contemporáneo. C# incluso se ha "obsesionado" con la programación de componentes, que es completamente diferente de Java, que debutó hace 6 años; por supuesto, esto es una cuestión de tiempos. C# implementa su soporte de primera mano para la programación de componentes a través de propiedades, indexadores, delegación, eventos, sobrecarga de operadores, rasgos, versiones, etc. Aunque estos se pueden implementar indirectamente a través de métodos, interfaces o adaptadores en Java, la historia de la industria del software nos dice que esto es un gran daño para la eficiencia de la programación o el diseño lógico: lo primero que enfrentan los lenguajes de alto nivel son las personas, no máquinas. Además de estos mecanismos de soporte de componentes a nivel de lenguaje, la plataforma .NET también proporciona soluciones de paquete para la configuración, operación, administración, etc. de componentes, y Visual Studio.NET, que está hecho a medida para el desarrollo de componentes, es aún más interesante. Todo esto es por C# La programación de componentes abre un mundo vasto. En términos de otras tecnologías, las débiles desventajas de Java son insignificantes, pero en términos de programación de componentes, Java tiene fallas incurables en comparación con C#. Especialmente para los desarrolladores que tienen experiencia en C++ y Visual Basic, C# tiene un encanto y una tentación irresistibles en este sentido.
En términos de multiplataforma, se elogia el soporte y la implementación de Java, aunque la velocidad de JVM sigue siendo un dolor de cabeza. Aunque C# ha considerado plenamente la portabilidad en términos de estructura subyacente, al menos todavía no existe un producto maduro y probado. C# parece estar más interesado en la interoperabilidad de los servicios web XML que en la programación multiplataforma. Sin embargo, el soporte de interoperabilidad a nivel de objetos de C# para más de 20 lenguajes principales a través de su construcción de lenguaje básico (CLI) ha mejorado enormemente el estado técnico de C#. La interoperabilidad barata con componentes COM también le da muchos puntos a C#: mantener un sistema compatible es muy importante para la industria del software moderna y también es un signo de responsabilidad para la mayoría de los desarrolladores.
Por supuesto, una evaluación técnica integral de los dos lenguajes no es de ninguna manera una simple lista y comparación de los puntos anteriores, sus plataformas back-end (C# para .NET, Java para J2EE) y el soporte de sus marcos de programación. , y la implementación de herramientas relevantes para cada lenguaje ahora son algunos fundamentos del sistema, etc., que tienen un impacto considerable en el desarrollo de los lenguajes de programación. Desde una perspectiva puramente técnica, C# es sin duda más competitivo que Java. No tiene sentido discutir quién copió a quién: el desarrollo de la tecnología es inherentemente un proceso de aprendizaje mutuo. La pura competencia técnica no puede determinar el resultado de este debate, si es que tiene que ser un enfrentamiento. La industria del software está feliz de ver competencia. Sólo la tecnología que ha sido atenuada por el mercado puede servirnos mejor.