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