Download Comparando J2EE y .NET - Bienvenido a ISSI-UNED
Document related concepts
no text concepts found
Transcript
Comparando J2EE y .NET Curso de Verano: Plataforma .NET y servicios web Comparando J2EE y .NET (basándose en Servicios web) Jose Ignacio Suárez Fernández Página 1 de 10 Comparando J2EE y .NET Introducción Me decidí a comparar .NET con otra plataforma y teniendo en cuenta que cual es la que mayor sombra le hace a la más moderna plataforma de Microsoft (además de que es la que mayores admiradores tiene), y teniendo en cuenta que el futuro es aun incierto si intentamos discernir cual será la plataforma mas utilizada, me termine decidiendo por Java Como se puede apreciar en esta grafica proveniente de un estudio realizado para conocer el uso de las distintas plataformas en proyectos de desarrollo (ver referencias) las dos plataformas mas utilizadas son Java y .NET El problema viene dado a la hora de comparar estas dos plataformas sin caer en simples convencionalismos, ni en favoritismos ideológicos. Diferencias filosóficas En la visión de Microsoft, la informática debería ser lo suficientemente fácil, barata, y accesible que cualquiera fuera capaz de usar un ordenador para tener una vida mejor. El software debería ser barato, abundante y debe mejorar constantemente. O al menos esa es la idea que nos intenta vender Microsoft, aunque todos intuimos que cuando nos habla informática y software se refiere a su informática y su software. Jose Ignacio Suárez Fernández Página 2 de 10 Comparando J2EE y .NET Por tanto la idea que pretenden vender, es la de que las necesidades y prioridades de los desarrolladores han sido y continúan siendo una parte importante a la hora de desarrollar (los desarrolladores fueron los primeros clientes de Microsoft en los primeros días de Microsoft BASIC) Microsoft intenta que comprendamos que los desarrolladores tienen diferentes formas de resolver problemas y diferentes prioridades para sus aplicaciones. Por tanto deben ser capaces de seleccionar su lenguaje de programación (COBOL, SmallTalk, LISP, BASIC, C, C++, Eiffel, Prolog, Pascal, o cualquier otro) Los desarrolladores deben ser capaces de sacar ventaja de las mejores herramientas creadas para sus necesidades y aprovechar mas el tiempo para crear nuevas aplicaciones. En resumen, el soporte de Microsoft para los desarrolladores se pretende que sea el último avance acerca de maximizar su productividad para que así ellos puedan crear nuevas y mejores aplicaciones, o al menos eso es lo que nos quieren hacer ver. Esto contrasta con la visión de un entorno de desarrollo (JAVA) en el cual cada desarrollador debe usar un solo lenguaje de programación, independientemente de su aplicabilidad al problema específico, e independiente del alcance y de las preferencias y habilidades del desarrollador. Aunque por otra parte .NET supuestamente multiplataforma no llega a serlo totalmente ya que Microsoft y teniendo en cuenta la fobia que siente por Linux, no desarrollo un maquina virtual para este sistema operativo (aunque el proyecto MONO puede suplir esa carencia), esto forma parte de la estrategia de Microsoft una estrategia quizás jugando un poco al engaño o al despiste con los usuarios, y planteo esto porque no cabe duda que Microsoft aporta a un producto muchas ventajas pero quizás no tantas como ellos pretenden: • Cuando se refieren a que una aplicación realizada bajo .NET va correr en cualquier plataforma seguramente lo que están tratando de decir es en cualquier plataforma Microsoft. • Durante años estuvieron criticando a Java debido a que no era un lenguaje compilado 100% debido a que compilaba a un lenguaje intermedio y luego era interpretado por la maquina virtual de java (JVM), y ahora resulta que cuando se dan cuenta de que la filosofía que aportaba Java tiene puntos muy beneficiosos a la hora de desarrollar, se montan al carro, ahora si como no pueden hacer algo idéntico a lo que habían estado criticando durante años, intentan vender que los programas realizados bajo .NET no son interpretados, llegando a ponerles incluso la extensión .EXE como intentando representar a los .exe tradicionales, lo que sin duda puede llevar a confusión a usuarios con menos conocimiento que pensaran que las aplicaciones realmente son compiladas y no interpretadas (lo mismo que hace Java y que le valió tantas criticas de los señores de Microsoft). Aunque hay que decir que .NET si permite generar ejecutables nativos similares a los ejecutables tradicionales, la política que siguen para que sea multiplataforma, es la de tener una maquina virual (que es en realidad un interprete Just-In-Time) Jose Ignacio Suárez Fernández Página 3 de 10 Comparando J2EE y .NET ¿Qué hay de Java dentro de .NET? A la vista del lenguaje, puede decirse que fue concebido basándose en Java y C++. Algunas (no todas) de las similitudes entre Java y C# son las siguientes: • • • • • • • • Ambos lenguajes compilan un código independiente de la máquina y el sistema operativo que se ejecuta mediante sus correspondientes entornos (JVM o entorno .NET). Incorporan un "recolector de basura". No necesitan punteros (Java no los permite y C# permite un uso restringido dentro del código señalado como unsafe (inseguro). No se utilizan ficheros de cabecera (como en C y C++), todo el código se empaqueta en packages (Java) o assemblies (C#). Admiten hilos (threads). Admiten herencia múltiple mediante interfaces. Permiten clases internas (clases en el interior de otras clases). No admiten programación estructurada, cualquier "cosa" pertenece a una clase. Entre las ventajas mencionadas por Microsoft de utilizar este lenguaje, sintácticamente también parecido a Java, es que ha sido diseñado pensando en Internet y arquitecturas de componentes: En C#, cualquier objeto puede representarse como un objeto COM, permitiendo una integración relativamente sencilla con aplicaciones escritas en otros lenguajes. Posiblemente, C# se utilizará para escribir aplicaciones (o partes de aplicaciones) que requieran un alto rendimiento (como el que podría proporcionar C ó C++) sin tener necesidad de preocuparse de aspectos como la gestión de la memoria, la construcción de bibliotecas de bajo nivel, la comprobación de los índices de los arrays, etc. La plataforma .Net permite utilizar un lenguaje llamado Visual J# (todavía no he tenido la ocasión de utilizarlo, por lo que me baso en lo comentado de forma oficial por Microsoft y algunos articulistas independientes), que implementa casi de forma completa el JDK 1.1.4 (Java Development Kit) de Sun dentro de .Net. Al igual que sucedía con Visual J++, el JNI (Java Native Interface) ha sido excluido de Visual J#. Aunque aún es pronto para juzgar este lenguaje y sus herramientas de desarrollo asociadas, posiblemente tendrá una fuerte dependencia del entorno Windows. De todos modos, debido a que solo alcanza hasta el JDK 1.1.4 (quizás por los problemas legales que tuvo y tiene Microsoft con Sun) estará en desventaja con J2EE, cuya última versión utiliza el SDK 1.4.x. Servicios Web Tras comparar un poco las filosofías (y quizás criticar un poco la de Microsoft, mas que nada porque no me gusta que me intenten engañar o tratar por tonto) pensé sobre las maneras que había de comparar ambas plataformas y si hay algo que en el futuro va a ganar importancia eso serán los “servicios web” debido al comercio electrónico principalmente aunque no únicamente... Así pues dirigí mi comparativa hacia ese punto y aunque sin duda seria interesante comparar ambas plataformas en todos sus campos seria una ardua tarea que sobrepasaría los objetivos de este trabajo. Antes de comparar Java y .NET en cuanto a servicios web se refiere vamos a ver que características tienen en común. Jose Ignacio Suárez Fernández Página 4 de 10 Comparando J2EE y .NET • • • • • El propósito tanto de J2EE como de la plataforma .NET es facilitar y simplificar el desarrollo de aplicaciones de cara al comercio electrónico, las JSP (Java Server Pages) son muy similares a ASP (Active Server Pages) o a su descendiente ASP .Net, y los EJB (Enterprise JavaBeans) son muy similares a los COM/COM+ de Microsoft. Los servidores de aplicaciones J2EE y .Net proporcionan un modelo de acceso de componentes a datos y de lógica del negocio, separados por una capa intermedia de presentación implementada mediante ASP .Net (.NET) ó Servlets (J2EE). Visual Basic .Net y C# son lenguajes orientados a objetos, al igual que Java, y en su diseño ha tenido mucha importancia la existencia de Internet. Desde la perspectiva de los desarrolladores, J2EE y .Net proporcionan las herramientas para crear Servicios Web. Tanto J2EE y .Net son multiplataforma. Al usar .Net una compilación en dos pasos, le permitiría teóricamente (como explique en la comparativa de la filosofia de algunas plataformas Microsoft simplemente se desentiende) proporcionar en el futuro entornos de ejecución para diferentes plataformas de forma similar a Java y sus JREs y SDKs. De aquí en adelante intentare comparar la construcción de servicios web utilizando las dos tecnologías (J2EE y .NET). Esta comparación está realizada bajo mi opinión personal y mi corta experiencia en esta nueva tecnología. Con lo cual todo el contenido puede estar expuesto a discusión y contener datos, bien imprecisos o equivocados. Sin embargo, se trata de una introducción a un debate que en el futuro se hará más fuerte y del cual tendremos datos más precisos. En mi búsqueda a través de la web para recopilar información, he encontrado dificultades para encontrar comparativas en castellano quizas por el hecho de que se trata de tecnologías y conceptos nuevos (en el caso de .NET esta aun en pañales). Los servicios web son una nueva tecnología que puede revolucionar la manera proporcionar servicios y su utilización, ya sea entre b2b (entre empresas) o b2c (de una empresa a un cliente). Los servicios web utilizan una gran variedad de tecnologías que permiten a dos aplicaciones comunicarse. El mecanismo de comunicación, está basado en tres pasos: • • • Un mecanismo para registrar un servicio. Un mecanismo para encontrar un servicio Un mecanismo para comunicar dos partes. Un suministrador crea y despliega un servicio web utilizando el lenguaje de programación, el ‘middleware’ y la plataforma de su elección. El suministrador define el servicio web en WSDL (Web Service Description Language). Un documento WSDL es la descripción del servicio. El suministrador registra el servicio en un registro UDDI (Universal Description, Discovery and Integration). UDDI permite a los desarrolladores publicar un servicio web. Un usuario encuentra el servicio buscando en el registro UDDI. Una aplicación de este usuario enlaza el servicio web, invocando sus operaciones utilizando SOAP (Simple Object Access Protocol). SOAP es un formato específico de representación de llamadas a procedimientos remotos basado en XML y que viaja sobre HTTP. Jose Ignacio Suárez Fernández Página 5 de 10 Comparando J2EE y .NET Existen otras muchas maneras de construir servicios web, pero sin embargo esta es la más aceptada por las grandes empresas informáticas, incluyendo a SUN y Microsoft. Hoy en día, los programadores pueden elegir entre dos tecnologías para construir servicios web : Java 2 Enterprise Edition APIs (J2EE) y Microsoft .NET. En realidad J2EE es una especificación y no un producto en si (existen varios fabricantes que implementan esta especificación en sus propios productos) especificación que fue definida por Sun. Los servicios web están basados en el intercambio de mensajes XML que viajan apoyados en protocolos Web, como HTTP. XML, supone un mecanismo de comunicación en la que cualquier programa, ‘middleware’ o plataforma puede participar. Con los servicios web, dos aplicaciones pueden cooperar desde cualquier sitio en donde se encuentren, con la única restricción de que Internet llegue a ambas. Una integración rápida y con un esfuerzo mínimo. El objetivo de esta nueva tecnología es la construcción de servicios inteligentes en la Web, que ante la demanda de un usuario, el servicio sea capaz de conectarse con otros servicios para proporcionar una respuesta adecuada y útil, dónde el usuario sólo ha debido proporcionar sus datos una sola vez y estos han sido compartidos por todos los servicios que fueron utilizados. De los pasos definidos, quizás las diferencias entre la construcción de servicios web bajo la visión de Sun y la visión de Microsoft, sea su construcción y su utilización ya que cada uno de ellos propone un lenguaje de programación (en el caso de) y un ‘middleware’ diferente. Aunque en el fondo es el mismo concepto. Servicios web: J2EE y Microsoft .NET. Tanto J2EE y .NET suponen la evolución de las tecnologías existentes hasta el momento para la construcción de aplicaciones distribuidas. Las anteriores versiones de estas tecnologías no incluían la posibilidad de construir servicios web, pero ahora ambas han hecho evolucionar sus plataformas para proporcionar esta posibilidad. Podemos decir que ambas concepciones, J2EE y .NET. La idea, para ambos, consiste en que el desarrollador no deba controlar todo (comunicación, interoperabilidad, etc...), sino que solo se preocupe de la aplicación en si, y le sea proporcionado automáticamente un objeto que se encargue de todo lo demás o bien proporcionar un conjunto de clases que fácilmente lo hagan por el propio desarrollador. De esta manera, un programador cualquiera, especializado en un tipo de aplicaciones, podrá construir aplicaciones web que suministren un servicio, sin tener que ser un especialista en programación distribuida. Jose Ignacio Suárez Fernández Página 6 de 10 Comparando J2EE y .NET Comparación: J2EE vs .NET La pregunta es: ¿Cuáles son las diferencias principales entre las plataformas Java de Sun y la .NET de Microsoft a la hora de construir servicios web? Existen muchos motivos para hacerse esta pregunta. Debido al futuro que se avecina, donde el comercio electrónico estará basado en servicios web, muchas compañías se preguntarán que tecnología utilizar.Y lo que mas nos interesa a todos aquellos que estamos creciendo como desarrolladores de software, desde un punto de vista académico, que tecnología nos conviene aprender. Para ello intentare ver cuales son las ventajas de cada una de esas tecnologías respecto a la otra. Ventajas de .Net frente a J2EE • Una ventaja muy importante del entorno .Net frente a J2EE es la posibilidad de emplear múltiples lenguajes de programación, mientras que J2EE sólo trabaja con uno: Java. Aunque sin duda algún teórico pensara que lo ideal sería que solo hubiera un lenguaje de programación. La realidad es que esta alta diversidad de lenguajes es obligatoria por la misma variedad de las necesidades de los programadores. Un lenguaje moderno y orientado a objetos como Java puede resultar totalmente ineficaz a la hora de abordar problemas que involucren cálculos matemáticos masivos y complejos,(pueden ser abordados mucho más adecuadamente por un lenguaje tan primitivo como Fortran 77). Por otro lado, .Net posibilita así que programadores de terceros lenguajes pasen a esta plataforma reduciendo el tiempo de aprendizaje y entrenamiento. • Las herramientas de desarrollo incluidas por Microsoft en su Visual Studio .Net son mucho más simples, intuitivas y sencillas de manejar que las herramientas de desarrollo equivalentes en J2EE suministradas por otras empresas (entre ellas la propia Sun). Cualquier programador medio/avanzado se manejará rápidamente con la programación del interface de usuario en Visual Studio .Net, al igual que sucedía con versiones anteriores de Visual Studio (Que aunque a muchos no nos agradase en exceso hay que reconocer que era bastante intuitiva). • C# es un lenguaje interesante, fácil de aprender por los programadores de Java, que en caso de estandarizarse podría resultar un lenguaje muy conveniente para ciertas tareas de programación en diferentes plataformas, C# es un evolución más del árbol de los lenguajes orientados a objetos. • Microsoft ha impulsado los servicios Web y ha resaltado su importancia entre toda la comunidad de desarrolladores. La plataforma .Net se ha diseñado considerando los servicios Web (mientras que J2EE no) siendo estos servicios propios de la plataforma y ofrece una nueva versión de ASP, ASP .Net, que puede considerarse un entorno de programación potente. Comparativamente, .Net va por delante con respecto a J2EE con respecto a servicios Web y estos servicios son propios de la plataforma, aunque J2EE respondió ya con el lanzamiento del Java Web Services Developer Pack. De todos modos, la facilidad, rapidez y sencillez con la que se pueden construir servicios Web con el Asistente de servicios Web de Visual Studio .Net son muy superiores a las de las herramientas para construir servicios Web dentro del entorno de J2EE. Jose Ignacio Suárez Fernández Página 7 de 10 Comparando J2EE y .NET Ventajas de J2EE frente a .Net • Las implementaciones de J2EE pueden adquirirse a distintas compañías, mientras que .Net solo puede comprarse a Microsoft. El hecho de que haya distintas organizaciones implementando J2EE ofrece mayor variedad para los usuarios finales y permite la existencia de una cierta competencia entre ellas para obtener mejores productos que no existe en el caso de Microsoft y su .Net. • Las aplicaciones Java pueden correr en una amplia gama de sistemas operativos (desde sistemas empresariales como Windows 2000, OS/390, Solaris, HP-UX, IRIX u otras versiones de Unix , hasta Mac OS, Windows 9x ó Linux ,e incluso existe un JVM destinada a sistemas de dispositivos moviles) y de arquitecturas hardware. Como ya comente anteriormente, .Net no se puede considerar todavía multiplataforma, siendo J2EE el único entorno de desarrollo que ofrece una independencia real de la plataforma, al menos por el momento. • La tecnología Java es una tecnología abierta (en el sentido de que el código de la plataforma completa puede ser obtenido, revisado y estudiado por cualquiera que esté interesado) y se basa en gran parte en estándares de organizaciones de normalización. Esto posibilita que los desarrolladores puedan conocer y entender completamente cómo hace las cosas Java y aprovecharlo para sus aplicaciones, y simplificar la integración con productos de otras compañías. En contraposición, solo una parte código fuente de la plataforma .Net ha sido abierto al público • La tecnología Java goza ya de una cierta veteranía y confianza por parte de los desarrolladores que ya han probado la eficacia de J2EE en muchos entornos y situaciones empresariales distintas, mientras que .Net aun debe demostrar si su eficacia es tanta como pretende hacernos creer Bill Gates Jose Ignacio Suárez Fernández Página 8 de 10 Comparando J2EE y .NET ¿Qué dice Microsoft? Es de todos conocido que Microsoft gusta de conseguir con la publicidad lo que no puede conseguir con la ingeniería. En las referencias aparece un estudio realizado por Microsoft en el que comparan ambas plataformas. Sabiendo que la información que procede de Microsoft rara vez se puede separar de su publicidad queda a nuestra elección fiarnos o no del estudio realizado Velocidad: .NET llega a ser entre 8 y 28 veces más rápido que J2EE. Requerimientos de CPU: J2EE requiere de 4 y 6 veces más uso de CPU que .NET. Concurrencia de usuarios:.NET permite más usuarios concurrentes que J2EE. Con la salida de J2EE 1.4, quizás esto cambie, y seguro que tanto Sun como Microsoft, se guardan un as bajo la manga, ya lo veremos. El caso es que este informe de Microsoft deja muy por encima .NET ¿Podía ser de otra manera? Solo pregunto Jose Ignacio Suárez Fernández Página 9 de 10 Comparando J2EE y .NET Conclusión Finalmente y cómo conclusión, pienso que ambas tecnologías están condenadas a coexistir. No creo que el futuro haya un claro vencedor, y desde luego ya hay rumores de que tanto Microsoft como Sun, preparan plataformas que de algún modo hagan compatibles cualquier desarrollo de servicio web en la plataforma opuesta. Por lo tanto, es posible que el futuro la elección entre una u otra plataforma no sea tan traumática, ya que puede ser que podamos trabajar con ambas versiones. REFERENCIAS (Comparativa realizada por ORACLE) http://www.oracle.com/ip/develop/ids/jdevdocs/J2EEandNET_wp.pdf (Articulo comparativo de dos autores que cada uno apuesta por una de las plataformas que estamos comparando) http://www.manning.com/dotnetbooks/java_vs_dotnet/java-vs-dotnet.html (Articulo comparativo de un autor que defiende que las dos plataformas se verán obligadas a convivir y afortunadamente no ve tan claro como otros que una de las plataformas sea la vencedora) http://www.fawcette.com/dotnetmag/2002_04/magazine/columns/strategy/ (Comparativas realizadas por Microsoft sobre .NET y J2EE ) http://www.gotdotnet.com/team/compare/petshop.aspx http://www.gotdotnet.com/team/compare/petshop.aspx (Articulo que compara las 2 plataformas) http://www.computerworld.com/developmenttopics/development/story/0,10801,71221,00.html (Articulo que compara las 2 plataformas) http://www.baselinemag.com/article2/0,3959,10549,00.asp (Articulo que compara las 2 plataformas) http://java.oreilly.com/news/farley_0800.html (Sobre servicios web con ASP.NET) http://es.gotdotnet.com/quickstart/aspplus/doc/webservicesintro.aspx (J2EE vs. Java) http://www.osmosislatina.com/java/dotnetj2ee.htm Jose Ignacio Suárez Fernández Página 10 de 10