Red de conocimiento informático - Conocimiento sistemático - Un breve análisis de las similitudes y diferencias entre las plataformas de desarrollo de software J2EE y .NET

Un breve análisis de las similitudes y diferencias entre las plataformas de desarrollo de software J2EE y .NET

Resumen: Actualmente, existen dos campos en términos de plataformas de desarrollo de software, a saber, J2EE y. NETO. Ambas plataformas surgieron para resolver el problema de construir plataformas a gran escala como la informática empresarial. Ambas plataformas incluyen una serie de tecnologías que pueden acortar el ciclo de desarrollo. Mejore la eficiencia del desarrollo y ahorre costos de construcción. Al mismo tiempo, ambas plataformas han hecho esfuerzos en términos de seguridad, escalabilidad y rendimiento, y ambas brindan una serie de tecnologías para elegir. Desde esta perspectiva, ambas plataformas lograron sus objetivos y tuvieron éxito. Las dos plataformas tienen muchas más similitudes que diferencias.

No hay duda de que los programadores, desarrolladores de software y responsables de TI empresariales han estado prestando mucha atención al desarrollo de J2EE y .NET, pero eligiendo una plataforma que satisfaga sus necesidades en términos de rendimiento, precio, y tiempo Pero no es una cuestión sencilla. Este artículo intenta hacer una comparación técnica simple, con la esperanza de ayudarlos a tomar una decisión.

1. Descripción técnica

En términos de expresión, J2EE es un conjunto de especificaciones, mientras que .NET es más como un conjunto de productos.

Pero su propósito es proporcionar soluciones distribuidas y de alta confiabilidad para aplicaciones empresariales. Tienen muchas similitudes en arquitectura. La siguiente tabla es una comparación simple:

J2EE?.NET ?

. ¿Protocolo de comunicación? ¿Remoto? ¿Método? ¿Invocación? ¿A través de? Internet? ¿InterOrb? ¿Protocolo? (RMI/IIOP), XML?

¿Lenguaje de programación?Java?C#, VB.NET, COBOL?

¿Entorno de ejecución?¿Java?¿Virtual?¿Máquina?(JVM)?¿Idioma común?¿Tiempo de ejecución?(CLR)?

¿Cliente pesado?Java?Swing?Windows ?Forms?

¿Servicios de directorio? ¿Java? ¿Nombramientos? ¿y? Directorio? ¿Interfaz? (JNDI)? ¿Directorio activo? ¿Servicios? ¿Interfaz? (ADSI)?

¿Acceso a datos? ¿Java? ¿Base de datos? ¿Conexión? (JDBC)?, ¿Java?Conectores?ADO.NET?

¿Procesamiento de mensajes asincrónicos?¿Java?¿Servicio de mensajes?(JMS)?¿Microsoft?¿Message?Queue?

¿Tecnología de capa de presentación?Servlets,?Java ?Servidor?Página(JSP)?ASP.NET?

¿Modelo de componentes de capa intermedia?EJB, JavaBean?COM+, COM?

Acceso de seguridad?JAAS?COM+?Seguridad?

¿Llamada? ¿Contexto?

¿Procesamiento de transacciones? ¿Java? ¿Transacción? ¿Servidor? (JTS)? ¿Microsoft? ¿Distribuido? ¿Transacción? ¿Coordinador? (MS-DTC)?

¿Herramientas de desarrollo?WebGain?Visual?Café?

Borland?JBuilder?

IBM?VisualAge?etc.

(Proporcionada por un tercero, la especificación en sí no está definido)VisualStudio.NET

La composición de la plataforma J2EE

La capa intermedia EJB-J2EE completa la lógica empresarial;

JAAS?-?J2EE?API que maneja la autenticación y autorización;

¿Java?Connectors?-?J2EE?API utilizada para conectar fuentes de datos heterogéneas, que es transparente a la capa superior;

JSP,?Java?Servlets ?-?Tecnología de capa de presentación J2EE, utilizada para generar interfaces de usuario;

Java?Virtual?Machine?-?Java?entorno de tiempo de ejecución del lenguaje;

p>

JDBC?- ?Acceso a la base de datos J2EE;

Cola de mensajes asíncronos JMS?-?J2EE;

API de búsqueda de nombres JNDI?-?J2EE, independiente del servidor de directorio;

JTS ?-?API de J2EE para procesar transacciones;

RMI/IIOP?-?La API de comunicación de objetos distribuidos de J2EE proporciona la capacidad de interactuar con CORBA.

La plataforma .NET constituye

.NET?Framework?-?la base para ejecutar aplicaciones .NET;

IL?(¿Idioma?intermediario)?-? todo El lenguaje .NET se compila primero en este lenguaje intermedio y luego se ejecuta en CLR;

SOAP?-?el estándar de la industria para el acceso a servicios;

DCOM?-?entre componentes Protocolo de comunicación;

MS-DTC?-?se utiliza para procesar transacciones distribuidas utilizando el protocolo de confirmación de dos fases en la plataforma .NET;

CLR?-?La operación de . NET en tiempo real;

Modelo de capa intermedia COM+.NET, utilizado para construir lógica de negocios;

API ADO.NET-.NET para acceso a datos.

Además, la plataforma .NET también incluye otros productos como Application?Center?Server, BizTalk?Server?, NLBS?(Network?Load?Balancing?Service), Commerce?Server, Enterprise?Servers. , HIS? (Host?Integration?Server), ISAS? (Internet?Security?and?Acceleration?Server) se utilizan para proporcionar servicios como firewall, acceso seguro, transacciones B2B, equilibrio de carga, etc. La especificación J2EE en sí no lo hace. definen estos servicios, pero pueden ser seleccionados por productos de terceros para cumplir requisitos similares.

2. Comparación técnica

1. Uno frente a muchos

Un idioma frente a varios idiomas, una plataforma frente a múltiples plataformas. El tema del que a todo el mundo le gusta hablar más parece ser el centro de todas las preguntas.

Java y C#, los principales lenguajes de desarrollo de las dos plataformas, son sorprendentemente similares en arquitectura: tecnología de máquina virtual, modelo de seguridad basado en sandbox, espacio de nombres jerárquico, recolección de basura, etc. Entonces, a primera vista, C# es simplemente un clon de Java. Pero Microsoft no lo cree así. La explicación de Microsoft es: "Integra la esencia de múltiples lenguajes como C ++, Java, Modula 2, C y Smalltalk, y utiliza las mismas ideas centrales que la orientación profunda a objetos (profunda). orientado a objetos), orientación a objetos), simplificación de objetos, etc., se hace referencia a ellos uno por uno. "Por un lado, la mayoría de las palabras clave de C# provienen de C++, lo que lo hace diferente de Java en la escritura. Pero, por otro lado, la estricta conversión de tipos de C# y otros conceptos obviamente provienen de Java (por supuesto, su definición de tipo primitivo es más estricta y, según Microsoft, no afecta la eficiencia), lo que lo hace sospechoso de clonación en su connotación. Pero incluso Java, algunas de sus características están estrechamente relacionadas con Smalltalk. Por lo tanto, evaluar la calidad de un lenguaje de desarrollo no es solo observar sus manifestaciones externas, sino más importante aún, sus funciones reales. Como nuevo lenguaje, C# agrega XML. Etiquetas basadas en, que el compilador puede utilizar para generar documentos directamente. Otra característica de C #: el software integral enfatiza la codificación autoexplicativa (autodescriptiva), es decir, archivos de encabezado, IDL (¿Interfaz?). ¿Definición? Idioma), GUID y otras interfaces complejas ya no es necesario hacer referencia a ellos. Es decir, se pueden agregar fragmentos de código como C # y VB.NET a otros lenguajes a voluntad. El modelo de programación mixta en múltiples lenguajes, pero es evidente que es difícil de mantener.

La plataforma .NET de Microsoft proporciona múltiples lenguajes de desarrollo como C#, VB.NET, COBOL, etc. C# es nuevo, mientras que todos los demás lenguajes se modifican en función del original. Es un esfuerzo minucioso e irrazonable para allanar un camino conveniente para los programadores que están acostumbrados a estos lenguajes. Sin embargo, la transformación de estos lenguajes no es tanto un lavado de cara como una gran cirugía de destripamiento. Por ejemplo, Basic y Cobol carecen inherentemente de connotaciones orientadas a objetos, pero ahora se han convertido en lenguajes orientados a objetos. Esto no es una simple cuestión de requerir que los programadores tradicionales estén familiarizados con algunas palabras clave adicionales basadas en el análisis de software orientado a objetos. El diseño, el desarrollo y las pruebas son completamente diferentes del cambio cualitativo basado en los lenguajes de procedimiento tradicionales, por lo que esta transformación del proceso también es un proceso largo y doloroso para los programadores tradicionales. Frente a los programadores tradicionales, Microsoft parece ofrecer una variedad de soluciones. , pero para problemas prácticos, probablemente no sean suficientes, por lo que una forma sencilla es: utilizar C# directamente. Para los desarrolladores de software independientes, el costo de conversión no se puede ignorar. En segundo lugar, se utilizan varios idiomas en proyectos de software. Debe tener varios expertos en idiomas y múltiples equipos de desarrollo independientes que son difíciles de apoyar entre sí. Sin duda, esto también ha provocado que el costo de mantenimiento del software aumente en una curva no lineal. La diversidad es un arma doble y debe considerarse cuidadosamente. implementarlo.

La multiplataforma es el mayor punto de venta de J2EE, y también es la valla que ha obstaculizado a Microsoft hasta ahora. Cuando los desarrolladores completan software que cumple con las especificaciones J2EE, sus clientes pueden elegir diferentes. servidores de aplicaciones según sus preferencias y capacidades. Cree su propia plataforma desde software gratuito basado en código abierto hasta suites comerciales de alta gama que satisfagan las necesidades B2B. Sin embargo, debido a que las especificaciones J2EE aún no están completas, varios proveedores de servidores J2EE están intentando hacerlo. Para proporcionar funciones completas que todos comprendan, se deben agregar algunas características adicionales. Esto hace que el software de aplicación que utiliza estas funciones especiales esté vinculado a un servidor de aplicaciones específico, esta diferencia disminuirá gradualmente. /p>

La solución multiplataforma de Microsoft son los servicios web, que resuelven el problema de conectividad entre diferentes aplicaciones en plataformas heterogéneas. Desde una perspectiva técnica, además de utilizar XML como medio, no hay nada nuevo excepto esto, pero es importante. Lo importante es que lo lanza un jugador de peso como Microsoft, y sus perspectivas no pueden subestimarse. El proceso de construcción y uso de servicios web es relativamente simple:

Servicios El proveedor construye el servicio en su lenguaje. elección;

El proveedor de servicios utiliza WSDL (¿el?lenguaje?de?descripción?de?servicios?web) para definir el servicio;

el proveedor de servicios utiliza ?UDDI?(¿descripción?universal?,?descubrimiento ,?e?Integración?);

La aplicación del usuario busca el servicio registrado desde ?UDDI;

El usuario La aplicación llama al servicio a través de SOAP (el Protocolo Simple de Acceso a Objetos) (SOAP usa HTTP para pasar parámetros basados ​​en representación XML)

Como comentamos: los servicios "web" resuelven el problema de la conectividad de servicios en plataformas heterogéneas, pero en realidad lo que se necesita con más urgencia es cómo construirlos. escalabilidad, alta confiabilidad, alta disponibilidad y redundancia de fallas en plataformas heterogéneas, aplicaciones empresariales con capacidades de recuperación de errores, estructuralmente hablando, la plataforma .NET está lejos de ser perfecta.

2. /p>

La tecnología de desarrollo de software basada en componentes puede realizar la reutilización del software a un nivel superior y acelerar el proceso de desarrollo de software empresarial. En la arquitectura J2EE, se utilizan JavaBean y EJB (Enterprise JavaBeans) para completar la lógica empresarial. y JavaBean tienen modelos similares, pero se utiliza para crear aplicaciones empresariales distribuidas. Define un modelo para componentes del lado del servidor y tiene las siguientes características:

Modelo de por vida;

Acceso. modelo;

Modelo de seguridad;

Modelo de procesamiento de transacciones;

>Modelo de procesamiento de sesiones;

Modelo de encapsulación de datos;

Modelo de implementación

Según estos modelos, la codificación simple puede completar funciones complejas.

En la plataforma .NET de Microsoft, los antiguos modelos de componentes COM y COM+ son reemplazados por el nuevo modelo de componentes. Se han agregado características como el modelo de seguridad basado en zona de pruebas y la recolección de basura. También se pueden asignar al nuevo entorno de ejecución los metadatos extendidos y los nuevos modelos de proxy.

En resumen, las dos arquitecturas tienen sus propios méritos en el diseño de la capa intermedia basada en componentes y ambas tienen capacidades suficientes para crear aplicaciones distribuidas, complejas, eficientes y de alta confiabilidad.

3. Capa de presentación

Ambas arquitecturas admiten tanto clientes pesados ​​como clientes ligeros, es decir, modo C/S y modo B/S, J2EE Java Swing. se proporciona como una alternativa a Java AWT, y JavaBean como componente visual también se puede utilizar para construir el sistema. Para la capa de presentación de la estructura B/S, J2EE utiliza servlet, JSP (página de servidor Java), HMTL, WML, XML y otras herramientas para implementarlo.

La tecnología de cliente pesado de Microsoft ha reemplazado a MFC por Windows Forms. Desempeñan el mismo papel estructuralmente, Windows Forms se inserta en el marco de tiempo de ejecución .NET y en el modelo de cliente ligero, ASP. NET reemplaza los antiguos ASP y HMTL, WML y XML como capa de presentación. En ASP.NET, se puede hacer referencia libremente a los fragmentos de código en C #, VB.NET y otros lenguajes. Las páginas ASP.NET primero se convierten a un lenguaje intermediario (lenguaje intermedio) y luego el compilador en tiempo real del lenguaje intermediario los utiliza. (compilador IL justo a tiempo) y finalmente se ejecuta en un entorno operativo de lenguaje público, y ASP.NET proporciona almacenamiento en búfer de páginas, por lo que su velocidad de ejecución es mucho más rápida que ASP.

En general, las tecnologías de la capa de presentación utilizadas por las dos arquitecturas son muy similares. Aunque tienen sus propias ventajas en los detalles, las funciones generales son aproximadamente las mismas.

4. Acceso a datos

J2EE y .Net admiten el acceso a datos en diferentes formas. JDBC, al igual que ADO, no tiene nada que ver con la base de datos conectada y opera datos a través de conexiones, declaraciones de comando y conjuntos de resultados. Entonces, ¿es una API de nivel superior para encapsular y administrar datos a través de una entidad EJB? EJB). Entity EJB basado en la administración de contenedores hace que el desarrollo sea más rápido y la administración más conveniente. De hecho, debido al mecanismo de sincronización de los métodos load () y store () de la entidad EJB, aliviará en gran medida los problemas de la base de datos causados ​​por la concurrencia. Para crear cuellos de botella, también se pueden utilizar herramientas de acceso a datos de terceros que no pertenecen a la especificación J2EE, como TopLink de WebGain.

La herramienta de acceso a datos .NET de Microsoft utiliza ADO.NET basado en XML en lugar de ADO basado en componentes COM. Cualquier fuente de datos que genere XML se puede utilizar como datos para la fuente "ADO.NET". set se actualiza a DataSets y la declaración de comando se actualiza a DataSetCommands. Desde un punto de vista formal, ADO.NET de Microsoft está más de moda y sus características basadas en XML lo hacen posible Maneja fuentes de datos extremadamente ricas, y porque. está construido sobre el protocolo HTTP, es fácil de penetrar firewalls y hace que la comunicación sea más conveniente. Sin embargo, debido a las características basadas en etiquetas del propio XML, está obviamente limitado en aplicaciones con cantidades extremadamente grandes de datos y grandes cantidades de datos. Se utiliza en aplicaciones con cuellos de botella en la red. Las reglas de acceso a datos de J2EE son ligeramente más delgadas, pero al mismo tiempo más simples y efectivas. Y a través del diseño de capas efectivo de la aplicación, también se puede acceder a bases de datos y fuentes de datos basadas en XML. integrarse perfectamente.

3. Evaluación general

Cuando Microsoft no tenía productos que pudieran competir con la plataforma Java, Microsoft estaba dispuesto a hacer propaganda ruidosa: "¿escribir? una vez,? ¿depurar? en todas partes". . Y sus oponentes están más dispuestos a evaluarlo así: "Al principio a Microsoft también le gustaba Java. Lo que les gustaba era dejarlo morir. Por supuesto, también lo odiaban. Incluso odiaban cada palabra que comenzaba con J." , la forma La diferencia es que Microsoft tiene .NET del que están orgullosos. Pueden hacer varias comparaciones entre J2EE y .NET de la forma que quieran. Lo más interesante debería ser la comparación completa de terceros de .NET Pet Shop y J2EE Pet Store proporcionada por Microsoft. Los lectores interesados ​​pueden visitar MSDN, www.onjava.com, IBM Developer Site y otros sitios web para ver comentarios relacionados.

&bsp;?J2EE?.NET?

¿Facilidad de uso?**?***?

¿Capacidad de expansión?***?**?

¿Soporte de múltiples plataformas?****?*?

¿Soporte de múltiples idiomas?*?****?

¿Confiabilidad?***? **?

¿Rendimiento?***?***?

¿Manejabilidad?***?***?

¿Reutilizabilidad? **** ?**?

¿Equilibrio de carga?***?***?

¿Estándares abiertos?*****?*

En cuanto a las empresas En lo que respecta a la integración de muchos sistemas internos, la escalabilidad del sistema y la seguridad, son cuestiones que requieren más atención. Estas son las ventajas de J2EE y las deficiencias de Microsoft. ?En términos de eficiencia, el campo J2EE aboga por aumentar el rendimiento del hardware para compensar las deficiencias del software. Los estándares abiertos, las funciones poderosas y la facilidad de trasplante son todos puntos de venta de J2EE. Pero lo extraño es que WebSphere de IBM y WebLogic de BEA representan la mayor parte del mercado J2EE, mientras que SUN, como creador de reglas, se mantiene al margen.

Microsoft ofrece una gama completa de productos, desde software de oficina de escritorio y herramientas de desarrollo hasta bases de datos de servidores back-end. ?Pero los usuarios de una plataforma unificada pueden tener que sacrificar los beneficios de la multiplataforma y también pueden verse atrapados sin fin en el océano de licencias de Microsoft. Ser más simple, más rápido y más eficiente es el objetivo de Microsoft. Es posible que veamos soluciones técnicas más perfectas.