Tech·Ed by raona

Wednesday, November 29, 2006

DEV212 - .NET vs J2EE

MMmm... asistí a esta sesión para saciar mi morbosidad: qué podian decir de una comparación entre .NET y J2EE en un tech·ed?
Bueno, antes que nada aclarar que el ponente era David Chapell, que es una de esas personas que tiene la virtud de no decir casi nada pero divertir al personal (por algo es consultor). David Chapell es un consultor externo a Microsoft, así que al menos la sesión podía tener algo de objetividad.
Todo lo que se contó fue muuuuuy introductorio pero al menos pasamos un buen rato :)

Primero hizo una história de las dos plataformas enfrentadas (Microsoft vs Java), remontándose al 1996. Los principales hitos de esa historia serian:
  1. 1996: Microsoft lanza DNA, que no es mas que un paraguas que agrupa numerosas de las tecnologías existentes en aquel momento (ASP, ADO, MTS). Por aquel entonces Java era un lenguage orientado al cliente. Pasada ya la excitación de los applets, el focus de Java eran las aplicaciones de escritorio.
  2. 1999: Sun lanza la especificación J2EE, que recoge varias APIs y tecnologías para Java para el desarrollo de aplicaciones de escritorio. En este punto la batalla es entre COM+ y EJBs, entre ASP y JSP/Servlets y entre ADO y JDBC.
  3. 2002: Microsoft lanza .NET 1.0, con un conjunto de tecnologías nuevas (ASP.NET, ADO.NET, Enterprise services y ASMX).
  4. 2003: Sun lanza la revisión 1.4 de J2EE. La gran incorporación es JAX-RPC que compite directamente con ASMX.
  5. 2005: Sale el .NET Framework 2.0 que no aporta ninguna novedad destacable.
Y el futuro (bueno, en el caso de .NET ya es el presente)?
Por parte de .NET se trata de .NET Framework 3.0, que presenta WF, WCF y WPF como principales novedades.
Por parte de Java??? pues depende a que actor Java sigamos.

Por parte de Sun, a través de la JCP, saldrá Java EE 5 (nueva denominación de J2EE), cuyas principales novedades son EJB3 y Jax-ws (que reemplaza al obsoleto jax-rpc).
Por parte de OpenSoA el futuro de Java se encamina a SCA (Service Components Architecture) y SDO (Service Data Objects).

Comparación .NET 3 vs Java EE 5
Java EE 5 es una evolución de las APIs contenidas en J2EE 1.4. Una de las principales novedades es que en EJB3 los entity bean desaparecen y son sustituídos por JPA (Java Persistence Api). JPA no solo deja obsoletos a los entity beans sino también a JDO.
No tiene equivalente a Workflow Foundation
No tiene equivalente a Windows Communication Foundation. En Java EE 5, siguen habiendo varias APIs de comunicación (RMI, EJB3, jax-ws y JMS) en función del tipo aplicación que se esté construyendo.

Comparación .NET 3 vs OpenSoA
OpenSoA mapea mucho mejor a .NET Framework 3
El equivalente de Workflow Foundation en OpenSoA es BPEL
BPEL es un lenguage XML (mantenido por OASIS), del cual dijo que era poco productivo pero que existían numerosas herramientas gráficas que lo generaban. El principal problema de BPEL es que aunque es estándard le hacen falta extensiones no estándares para dar soporte a actividades que quedan fuera de su definición, pero que son necesarias (p.ej. interacción humana, acceso a datos). El problema es el de siempre: cada motor de BPEL ha terminando desarrollando sus propias extensiones.

El equivalente a WCF en OpenSoA es SCA, que ofrece una API de comunicaciones unificada.

Chapell se posicionó a favor de Workflow Foundation en contra de BPEL, y al respecto de WCF vs SCA dijo que a su parecer son muy parecidas aunque en algunos aspectos SCA le parece ligeramente mejor enfocada que WCF (pero no dijo cuales).

Ni en Java EE 5 ni en OpenSoA hay equivalente para WPF, pero seguramente este seria un componente más de cliente que de servidor. En el mundo Java actual hay tres grandes APIs para el desarrollo de interfaces gráficas: la obsoleta AWT (de Sun), SWING/JFC (de Sun) y SWT (IBM/Eclipse).

Conclusiones

Chapell planteó aquí que uno de los problemas de Java es que al no estar todo en manos de una misma compañía había ciertos desarrollos que eran casi imposibles. Por ejemplo algo parecido a LINQ (que requiere modificar Visual Studio, el lenguage C# y el CLR) es muy complicado en el mundo Java, porque el entorno de desarrollo está en unas manos (eclipse), el lenguaje en otras (sun) y los servidores en otras (Bea, Ibm,...). Evidentemente esa decentralización también puede verse como una ventaja, todo son puntos de vista ;-)

Mis conclusiones
Estoy bastante de acuerdo con muchas de las ideas de David Chappell. Que Sun no ha hecho las cosas bien con Java creo que hay una gran mayoría de gente que lo piensa. Lo cierto es que Chappell criticó con dureza a Sun y repartió elogios entre OpenSoA y Microsoft. Que OpenSoA se han posicionado como una muy buena alternativa a Sun para el futuro de Java es un hecho constatado, pero deberá verse la acogida que tenga SCA cuando salga y si es capaz de aglutinar a su alrededor a la comunidad de desarrolladores de Java.

Links finales
Este post ha sido prolífico en siglas y conceptos, así que voy a poner un conjunto de enlaces para más información.
  1. Los contendientes: Por un lado .NET y por otro Java.
  2. Los equipos: El Framework 3.0 por un lado. J2EE por otro y OpenSoA por otro.
  3. Las tecnologías
    1. .NET: WPF, WCF, WF
    2. Java EE: EJB3, JPA, JAX-WS, los obsoletos JDO y JAX-RPC
    3. OpenSoA: SCA, SDO
    4. OASIS: BPEL
  4. Otras tecnologías mencionadas: AWT, Swing, SWT
  5. No hay nostalgia en Microsoft... (www.microsoft.com/dna).

0 Comments:

Post a Comment

<< Home