7.1 Java vs.net, la lucha se acrecienta Java fue capaz de introducir una cuña en el negocio de herramientas de Microsoft cuando fue introducida al mercado por primera vez a mediados de los '90 porque ofrecía más potencia que Visual Basic y menos complejidad que otros lenguajes de programación, como C++. Las aplicaciones basadas en Java eran capaces de funcionar en varios sistemas operativos, mientras que las escritas con las herramientas de Microsoft funcionaban sólo en Windows. En este sentido, ejecutivos de Microsoft han señalado que el lanzamiento en pasado años de Visual Studio.Net, su aplicación de programación multilenguaje para la creación de servicios web, ayudó a detener el creciente liderazgo de J2EE. Hasta ahora, la línea de herramientas de desarrollo.net de Microsoft y sus rivales basadas en Java están a la par en términos de uso. En una reciente encuesta llevada a cabo por la firma de investigación Evans Data se encontró que casi el mismo porcentaje de desarrolladores -cerca del 32 por ciento- están utilizando.net y J2EE para la creación de aplicaciones de servicios web. Ambas tecnologías, de empresas rivales hasta la muerte (SUN Microsystems y Microsoft) pugnan por un mercado cada vez más exclusivo, en el que los competidores van quedando cada vez más rezagados. 217
En la actualidad existen muchas alternativas de desarrollo para el entorno web: PHP, páginas ASP, ColdFusion, etc. y la mayoría de ellas están en un estado tecnológico excelente, que las permiten acometer a la mayoría de los proyectos. Pero su mayor diferencia es su orientación real hacia un modelo de desarrollo de componentes empresarial. Esto quiere decir que nuestra plataforma tecnológica tiene que servir y propiciar, desde el entorno de ejecución hasta el entorno de desarrollo, un modelo organizado de componentes que puedan actuar dentro de unos servicios básicos del sistema. Estos servicios pueden ser un sistema de autenticación y seguridad, un entorno transaccional, un soporte para granjas de servidores, instanciación remota de componentes, caché de objetos, Framework de acceso a datos, soporte a nuevas tecnologías como Web Services, etc. En este aspecto la oferta de SUN siempre ha estado dividida en dos grandes grupos. Por un lado la tecnología de Servlets y páginas JSP, que eran la réplica de las páginas ASP de Microsoft, y que permite abordar una gran gama de desarrollos, desde Intranets hasta portales verticales, con ciertas garantías de éxito. Pero por otra parte, SUN ofrece J2EE (Java 2 Enterprise Edition), que ofrece al desarrollador el entorno empresarial antes citado. J2EE se trata en realidad de un estándar que otras empresas se encargan de implantar. Así, cuando hablamos de servidores de aplicaciones J2EE, no nos referimos a un producto exclusivo y realizado por SUN, sino a un servidor que cumple el estándar J2EE y que puede estar desarrollado por otras empresas. 218
Al mismo tiempo, Microsoft ofrecía su plataforma Windows DNA basada en una mezcla de tecnologías. Con su servidor IIS 4.0 como nexo común y el servidor de Bases de Datos SQL Server, esta plataforma utilizaba la tecnología de objetos COM, el servidor transaccional MTS y MSMQ y las páginas ASP para el desarrollo de aplicaciones Web Empresariales. Pero este modelo ofrecía algunas desventajas. Por un lado, la comunicación y utilización entre componentes se realizaba a través de una interfaz binaria definida por el estándar COM. Así el desarrollador podía elegir entre diversos lenguajes de desarrollo como Visual Basic, Visual C++, o diversas librerías como ATL o MFC, esto, que en un principio puede parecer una ventaja, en la práctica ofrecía un gran problema. Los desarrollos de componentes en Visual Basic escalaban mal por su pobre soporte a tecnologías multihilo, y los desarrolladores de Visual C++ se encontraban con una tecnología, que sí escalaba muy bien, pero como contrapartida resultaba compleja, en la que resultaba muy sencillo cometer errores de pérdida de recursos o memoria. Más tarde había que integrar estos objetos con las páginas activas ASP. El modelo de desarrollo funcional de estas páginas hacia que la mayor parte de los proyectos desembocasen en un solo conjunto de páginas en completo desorden y con una fuente interminable de errores. Pero la actual oferta tecnológica de Microsoft es muy distinta. Mediante la tecnología.net, Microsoft ofrece una serie de tecnologías ideales para el desarrollo de aplicaciones Web. Por un lado sus lenguajes, encabezados por C#, ofrecen una sintaxis más moderna y productiva, similar a la de JAVA, y su modelo de desarrollo de aplicaciones ha ido ganando terreno en sencillez y potencia. 219
Al querer comparar las tecnologías.net y J2EE, podemos decir que:.net es una tecnología multipropósito, que puede ser utilizada tanto para el desarrollo de aplicaciones Web, como para el desarrollo de aplicaciones de interfaz Windows. J2EE por su lado es una tecnología exclusivamente empresarial, orientada hacia un tipo de desarrollo muy concreto, y que jamás servirá para desarrollar aplicaciones de ventana o móviles. Para estas tareas SUN distribuye varios SDK denominados J2SE (Java 2 Standar Edition) y J2ME (Java 2 Micro Edition). Por lo tanto, la comparativa debe hacerse en cuanto a aplicaciones empresariales se refiere.- En este sentido J2EE está mucho más especializado. Todas sus librerías, objetos e interfaces están orientados hacia este tipo de aplicaciones. Por su lado,.net no ofrece como J2EE un estándar a la hora de desarrollar componentes de reglas de negocio y de componentes de acceso a datos. Por el contrario, Microsoft recomienda o da ciertas pautas de desarrollo, dejando al analista/programador la libertad de seguirlos o no. Uno de los puntos claros en la tecnología actual, es la interoperabilidad de aplicaciones mediante los Servicios Web. Las tecnologías, lenguajes y protocolos utilizadas para construir y utilizar un Servicio Web son estándares en el mercado (definidos en su mayoría por el W3C) y por tanto ofrecen una gran capacidad de comunicación entre aplicaciones, independientemente de la plataforma tecnológica sobre la que están construidas. 220
En realidad, un Servicio Web no se distingue mucho de una aplicación clienteservidor de las ya conocidas. Al fin y al cabo, todo cliente necesita obtener datos y realizar operaciones en un servidor, y para ello utilizará un sistema de llamada a procedimiento remoto, mediante una serie de protocolos y lenguajes bien conocidos. No importa si detrás de un Servicio Web hay un servidor de aplicaciones J2EE o.net. Lo importante es saber su dirección y comunicarme con él mediante los protocolos y lenguajes adecuados (HTTP, SOAP, XMLRPC, XML, etc.) La diferencia fundamental está en las tecnologías que utilizaremos usando los Servicios Web. Su particularidad fundamental es que todos utilizan una serie de protocolos y lenguajes comunes, haciendo así mucho más sencilla la labor de interconectar unos con otros, y de construir aplicaciones cliente que sean capaces de entenderse con todos los Servicios Web que se construyan. En la actualidad.net tiene una gran ventaja, que es su magnífico entorno de desarrollo Visual Studio.NET. Trabajando con J2EE tenemos una variedad mucho mayor de entornos, pero ninguno con una productividad tan alta como la alternativa de Microsoft. Por otro lado, J2EE cuenta con un paquete mucho mayor, pero que en breve puede verse afectado por.net. 221
7.2 Cuadro comparativo de las dos tecnologías TABLA DE CARACTERÍSTICAS DE VISUAL STUDIO.NET Y J2EE PARA SERVICIOS WEB Características.NET J2EE Observaciones Conjunto de Herramientas integradas Ambiente de desarrollo gráfico Mecanismo de Comunicación: XML Permite responder y enviar solicitudes SOAP UDDI WSDL Multiplataforma Soporte para sistemas desarrollados anteriormente Multilenguaje Cuadro 7.1 Comparando las dos tecnologías Autor: Jaime Mata Fuente: Toda la documentación J2EE depende de otras herramientas para lograr la funcionalidad deseada Microsoft prevee que muy pronto se podrá ejecutar aplicaciones en otras plataformas.net brinda una gama muy amplia de lenguajes de programación. J2EE únicamente Java 222
7.3 Implementar un Sencillo Servicio Web Seguiremos estos pasos para crear nuestro sencillo Servicio Web: 7.3.1 Crear la lógica del negocio del Servicio Web. Primero necesitamos escribir una clase que implemente la lógica de negocio del servicio Web. 7.3.2 Desplegar la clase en el servidor SOAP. Luego necesitamos convertir la clase en un Servicio Web. 7.3.3 Generar las clases de acceso para los clientes. Una aplicación cliente usa un objeto proxy para acceder al Servicio Web. El servicio debe ser definido en WSDL y registra el servicio en un registro UDDI. En el momento de la solicitud, el proxy acepta una llamada a un método desde la aplicación y la traduce en un mensaje XML. En el momento de la respuesta, el proxy recibe el mensaje de respuesta SOAP, lo traduce en objetos y devuelve el resultado a la aplicación cliente. 7.3.4 Desarrollar la aplicación cliente. La aplicación cliente trata el proxy como un objeto estándar que facilita la comunicación con un Servicio Web. 223
INICIO Crear la lógica del Negocio Desplegar la clase en el Servidor SOAP Generar las clases de Acceso para los clientes Desarrollar la aplicación cliente FIN Gráfico 7.1 Flujo de Creación de un Servicio Web Autor: Jaime Mata Fuente: Toda la documentación 7.4 Resumen Podemos ver como al inicio de las aplicaciones distribuidas Java introdujo mejores métodos para poder realizar aplicaciones que no dependan de la plataforma y con un lenguaje fácil, pero Microsoft con.net ha logrado alcanzar e incluso está superando en ciertas áreas lo que a Java le ha tomado alrededor de una década afianzar. La diferencia más notoria es que J2EE no es un producto específico para el desarrollo, sino que las empresas lo pueden utilizar como servidor para implementar sus aplicaciones. En cambio Microsoft entrega en un solo paquete todo lo que el 224
desarrollador espera y además la facilidad de ser flexible al lenguaje que el desarrollador domine o le sea más familiar. En cuanto al los Servicios Web,.NET presenta una ventaja mayor sobre J2EE gracias a su entorno de desarrollo gráfico. 225