Service Component Architecture (SCA), el “Indigo” de J2EE

 Mi  amigo Nadim, evangelizador de Sun Microsystems Chile, me comentaba hace un par de años en un café "ya está empezando a darse que Java empieza a copiar algunas cosas de .NET", siendo -esto lo aclaro yo- que .NET partió copiando cosas de Java. Ejemplos de esas cositas que .NET tomó:

  • La idea de código administrado (managed code) por una máquina virtual (CLR <–> JVM)
  • Las principales clases fundadoras del paquete java.lang (System.Object, System.Exception, etc)
  • Ciertos métodos fundacionales como ToString(), Equals(), etc

Hoy, ciertamente, la tendencia parece igualarse, y en el reciente Architect Forum Regional que realizamos en Punta del Este, Uruguay, un vendedor de software independiente me dijo que ese estadío le gustaba. Estas fueron sus palabras

-La aparición de .NET ha servido para que Java no se duerma en los laureles y haya competencia en serio: hoy veo que Java/J2EE adopta algunas cosas interesantes de .NET y eso no deja de ser bueno para mí como desarrollador

Qué cosas va tomando J2EE de .NET? Veamos un par

  • Atributos (Attributes), que en la jerga Java se llaman metadatos o anotaciones (metadata o annotations). Fueron introducidos en J2SE 1.5, o Java 5 (code name Tiger)
  • Servicios Web XML (XML Web Services), no pertenecieron al J2EE oficial sino a partir de la versión 1.4 (aparecida en 2004). El primer .NET se liberó en 2002 ya con servicios web XML como parte del núcleo
  • Java Server Faces (JSF), una especificación de controles de lado cliente y comportamiento de lado servidor de los mismos similar a los controles de ASP.NET

A la vez, ambas tecnologías anunciaron casi al mismo tiempo la inclusión de Tipos de datos Genéricos (o simplemente Generics), que apareció en la siguiente versión de una y otra

Pero más allá de todo este juego de la mancha, que ambas plataformas están realizando, lo realmente novedoso fue el anuncio de la tecnología Service Component Architecture (Arquitectura de Componentes de Servicio, o SCA)

SCA no formaría parte del "Java oficial". De hecho es una especificación elaborada en conjunto por BEA, IBM, IONA, Oracle, SAP, Siebel y Sybase… pero no por Sun ni por el Java Community Process (JCP), el comité dirigido por Sun que madura las especificaciones Java

Qué es, concretamente, SCA? Es un conjunto de especificaciones que describen un modelo para construir aplicaciones y sistemas basadas en una Arquitectura Orientada a Servicios (Service-Oriented Architecture o SOA). El propósito de este proyecto es doble

  • Definir en forma única un modelo de componentes de servicios, tanto para la provisión como para el consumo. Lo novedoso es que esta filosofía procura trascender Java para abarcar también C++, COBOL, PHP o incluso lenguajes basados en XML como BPEL, XSLT o XQuery
  • Definir en forma única la manera de ensamblar esos componentes, de referenciarlos para poder construir aplicaciones orientadas a servicios

La siguiente figura, tomada del portal de IBM, lo ejemplifica bien


Fig 1 – Arquitectura de Componentes de Servicio

SCA no sólo no se limita al lenguaje Java: tampoco es obligadamente Servicios Web XML la tecnología de comunicaciones elegida (si bien aparenta ser la de facto). SCA también puede ejecutarse bajo otros estándares de mensajería como CORBA IIOP

El borrador 0.9 de la especificación de SCA para Java, disponible aquí, hace recordar mucho al modelo de programación de Windows Communication Foundation (WCF o Indigo, la próxima tecnología de servicios web de Windows Vista). Por ejemplo, la forma de exponer un componente como servicio es añadiendo la anotación @Service, similar al atributo ServiceContract de WCF

Que la filosofía sea similar en ambas plataformas, J2EE y .NET, no puede ser menos que beneficioso para el desarrollador: se aprende el concepto una sola vez y luego se aplica en cada lado según corresponda (sólo cambian los dialectos, no los fundamentos de base)

David Chappell hizo un estudio exhaustivo de ambas tecnologías, SCA y WCF, y establece dónde se asemejan y donde difieren. Vale la pena leerlo (click acá, por favor). SCA toma algunas formas de WCF pero es algo un tanto más amplio que WCF, y no se limita a J2EE como WCF sí lo hace con .NET

Por ejemplo, de aquí se puede descargar el borrador 0.9 de la implementación de SCA para ANSI C++

Existen algunos papers interesantes para seguir profundizando al respecto

IBM tiene una página dedicada a esta tecnología, la que se puede visitar haciendo click acá

Esta entrada fue publicada en Software Architecture. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s