Tuesday, August 23, 2005

J2EE vs. .Net??? why?

Hi all, I recently ended a J2EE course where I learnt how everything works together for J2EE. During that course I used Eclipse as de DE, Jboss as the application server, Hibernate to connect to the DB (MySQL), Struts for the JSP pages and ANT to run scripts. We also used Jweaver.

First of all, why do I need all those tools? There's a whole bunch of stuff to know about each one of them. They all have configuration files, which is a plus in some ways, but it's also a bad thing since you don't have tools like IntelliSence there that tells you where you've messed up.

Having that many different tools working with you makes it hard to track bugs since the bug could be in your code or in any of the different configuration files.

They say there's a whole lot of documentation and the community is huge, probably someone already had the problem you are having, the only thing you have to do is find that person (I love the MSDN site).

And the last thing, it's so "open" there are tons of different configurations, if you download an example of something you're looking for, there's a 80% chance you'll have to modify something in order to run the example and getting it working on your computer.

Also, and this is the last one, J2EE is just a bunch of papers that tell you what to do and how to design your apps, while .Net is a framework, there's an IDE where you can modify your server pages or you data bases' store procedures. In case I want to run an example from the web all I need to do is copy the files in my hard drive, load them in VS and press F5.

My bottom line is: of course I won't develop in the short/middle term in J2EE, there's nothing they provide I can't do with .Net, and with .Net I'd probably do it in half of the time it would take me to do it with J2EE. I believe J2EE is for scenarios where the application servers have to be Linux, and your company is planning on providing a lot of services to other companies, cause if they don't, I would just use plain Java Beans.

Para obtener este texto traducido mándeme un email o vaya a Babel Fish, la traducción no es muy Buena pero la idea se entiende, creo.

11 comments:

Cherta said...

Bueno, estuve leyendo tu comentario que forma parte de la interminable guerra santa informática .NET y J2EE.
Dejando de lado partidarismos, me detengo en una de las cosas que decís "I believe J2EE is for scenarios where the application servers have to be Linux...", que hay del precio, que hay de usar los recursos en una mejor manera y no en carísimas licencias por el VS, o SQL Server, o un montón más de etcéteras.

También está la idea que J2EE es una tecnología que le lleva años de ventaja a .NET, por ende es más madura, más robusta y mejor documentada, por más MSDN que tenga .NET.

Es sólo una postura, saludos desde Montevideo, Uruguay.

Sebastian said...

Bueno Cherta, primero que nada me alegra que hayas hecho el comentario porque de eso se trata.
Paso a comentar sobre los "pro" que tu le ves a J2EE.
- Precio, en mi trabajo los servicodres son Linux y te diré que el costo fué lejos de "gratis". Obviamente MS es mas caro pero te brinda un soporte que no conozco a nadie que pueda brindar sobre Linux.
- Sobre lo de utilizar recursos de una mejor manera, también discrepo, si por ejemplo mencionas eso por el uso de Hibernate sabrás que también hay una versión para .Net.
- Estoy de acuerdo contigo en cuanto al precio de licenciamiento del VS, asunque el mismo no es escencial para desarrollar .Net ya que el CLR y los compiladores son gratis. De todas formas MS acaba de liberar versiones Express (gratis) del VS.
- Por último con respecto a la base de datos, para una aplicación corporativa de gran carga solo cambiaría SQL Server por Oracle, que es aún más caro. Pondrías MySQL o Postgre en una aplicación corporativa que tiene que estar arriba 24x7?.

Comparto contigo que J2EE le lleva años de ventaja a .Net y que esta última con su CLR es lo que Java viene haciendo desde el vamos. Pero no creo que esto implique mas madura y robusta, ni mejor documentada que .Net. A J2EE le lleva mucho tiempo hacer cambios y tomar decisiones en cuanto al futuro de la plataforma, mientras que por el otro lado MS tiene control total sobre su .Net framework y realiza los cambios necesarios mucho antes que J2EE.
Te recomiendo leas mi post sobre ASP.Net 2.0 y te invito a que lo pruebes y me cuentes si existe en la actualidad otra tecnología que te permita hacer tanto con tan poco código.

Ya que estás en Montevideo te invito a que participes el 14 de Diciembre del lanzamiento del nuevo VS 2005, en el Raddison.

Saludos y gracias nuevamente por tus comentarios.

Cherta said...

Sebastian:
Contesto algunas cosas, sólo a título informativo y con ganas nada más de charlar sobre esto porque nunca podríamos llegar a un acuerdo, o casi nunca.

Hablando principalmente sobre utilizar los costos en mejores cosas que "tirarlos" en licencias.

Primero, sé que existe un port de hibernate para .Net, existe también Nant, NUnit, todos port de J2EE para .Net, ese es el tema, la gente que utiliza .Net debe esperar para sumarse a cosas que en Java/J2EE son harto conocidas y mejor aún muy bien utilizadas. El hecho es el siguiente, dado que J2EE es la base de muchos proyectos open source, creo que solamente pierde en este rubro con el combo LAMP/WAMP, las buenas ideas de un montón de gente son realizadas primero para J2EE y luego portadas a .Net e incluso otras plataformas (Rails, Php5, Python).

Sobre el artículo de asp 2.0, lo leí, y te digo que si hace lo que decís tengo suerte en no conocerlo, en un momento de la industria donde se vuelve a pensar en clientes semi – pesados (AJAX / RIA), no me imagino juntar capa de presentación, con capa de datos, (N. de la R.: cuando tenga que presentar mis datos en otra interfaz tiro a la basura mi aplicación y la hago de nuevo), estoy pensando desde que, otra aplicación consuma mis datos via xml hasta hacer un cliente de escritorio y seguir usando el mismo dominio.
En segundo lugar las ventajas que contás (o algunas), son del IDE y no de la tecnología en si, existen IDE´s para java / J2EE pagos, para nada baratos que nos dejan escribir menos código, pero no quiere decir que para programar en java / J2EE se necesite menos código.

Nota a parte, quisiera ver si algún framework de .Net iguala a Spring en su categoría de Super-Framework.

Sebastian said...

Cherta, primero que nada te digo que me alegra que podamos tener estas "charlas" aunque me estés llevando la contra ;). Entiendo tu postura, como la de millones de personas en el mundo que elijen J2EE sobre .Net día a día y creciendo, en lugares como España el OpenSource es muy fuerte.

Con respecto a tu comentario, comparto que la solución de VS2005 de "atar" la presentación con la capa de manejo de persistencia no es la forma mas prolija y creeme que entiendo y comparto la necesidad de tener todo componentizado. Y esto es algo que posiblemente solo utilice en mis desarrollos personales y no en aplicaciones comerciales. Por otro lado, te comento que jsutamente, como bien mencionas es el VS el que te dá las ventajas y no ASP2.0, pero son tantas las ventajas a la hora de desarrollar, que el costo en tiempo de reimplementar una solución web a thin client o desktop sería muy bajo. Pero eso ya cae en la persepción de cada caso.

La conclusión Cherta que saco de toda esta "charla" es que quienes tenemos distintas preferencias entre J2EE y .Net tenemos distintas expectativas en cuanto a la herramienta de desarrollo.
Ambos sabemos que con la otra se puede hacer lo mismo, la única diferencia es como hacerlo y otra no menor, cuánto cue$ta hacerlo.

Aprovecho para consultarte sobre dos cosas que mencionaste que desconozco LAMP/WAMP y Spring

Cherta said...

Entiendo la conclusión y estoy muy de acuerdo, es fácil, el que busca una solución más allá de como fue hecha (el cliente, el desarrollador Lazy) preferiría VS2005 + .Net, el dilema está cuando uno quiere empezar a reutilizar. En eso estamos muy de acuerdo.

LAMP, me refería Linux + Apache + Php + MySql y lo mencionaba como una de las mayores fuentes de desarrollos open source, vale la pena darse una vuelta por algunos programas estrellas que usan esta plataforma Mambo CMS o mantis Bug tracker, son una muestra de la gran potencia que tienen estas aplicaciones que a veces la gente que desarrolla en J2EE o .Net creemos poco "formales".

Por último Spring es un framework que se integra a todo nivel en el sistema, no soy un experto en el tema pero por lo que he leido, plantea diferentes soluciones para distintas capas, como son, una implementación de MVC, manejo de JSF (Java Server Faces), Integración con todos los frameworks existentes, AOP y un montón de etcéteras más.

Anonymous said...

Ok, primer punto:
1.- J2EE es un dolor de cabeza y muy grande, todos estamos de acuerdo
2.- No esta limitado a un sistema operativo, ni tampoco a un IDE todo en uno como .NET
3.- J2EE es mucho mas potente que todo visual estudio .net, JUNTO.
4.- J2EE es GRATUITA, mas potente, madura y por cierto "TRANSPARENTE".
Si deberas piensas comprar los productos microsoft te quedas estancado en cuando a TODO, con respecto a las aplicaciones de software libre, ya que en estas, puedes usar una actualizacion si no te gusta te regresas a la anterior te cambias de compañia, etc... sin repercutir en tu bolsillo si Microsoft dice "ho lo siento hay un error critico en mi sistema descarguen el pache, pero mejor compren la actualizacion que se cuelga en tu windows viejo, que no es compatible con tus demas herramientas" que haces... $$$...pagar. Yo tengo años usando Java y cada vez me duele mas la cabeza pero una vez que dominas un area todo el desarrollo se realiza muy rapido empezando por que no uso una IDE, todo con GEDIT (el notepad de Gnome), no se los recomiendo a los que empiezan pero cualquier IDE de programacion sirve y funciona igual, todas las aplicaciones las puedes realizar de mil maneras distintas lo que te da una amplia libertad para tu diseño, puedes crear tus componenetes y reutilizarlos infinidad de veces, hacer tu propia estructura de clases, modificar las que ya tienes, etc... en pocas palabras el limite lo pone tu capacidad de desarrollo, y eso es algo de lo Microsoft a pesar del altisimo costo de sus productos no te permite hacer...

Sebastian said...

Estimado "anónimo", entiendo algunas de tus mencionadas ventajas de J2EE sobre .Net, pero tengo que discrepar con las últimas de tu comentario. Donde pondes que "...todas las aplicaciones las puedes realizar de mil maneras distintas lo que te da una amplia libertad para tu diseño, puedes crear tus componenetes y reutilizarlos infinidad de veces, hacer tu propia estructura de clases, modificar las que ya tienes, etc... en pocas palabras el limite lo pone tu capacidad de desarrollo, y eso es algo de lo Microsoft a pesar del altisimo costo de sus productos no te permite hacer..."
Todas las ventajas que mencionas en este párrafo son compartidas entre J2EE y .Net. Si .net no permitiría la libertad de diseño y todas las ventajas que menciona ni siquiera sería discutible la comparación.

Wilman Arambillete said...

Interesantes comentarios sobre ambas tecnologias. Llevo bastante desarrollando en PHP y conozco bastante JAVA y las herramientas que ofrece MS. Actualmente estoy evaluando el realizar una aplicacion de cierto porte en algo un poco mejor que PHP en terminos de manejo de objetos, persistencia y separacion de capas. Me tira Java bastante ya que lo veo super prolijo y comparto con quienes lo apoyan (frente a soluciones .NET), el tema de bajo costo. Sin embargo, la sensacion que me queda luego de haber leido bastante sobre JEE es un poco lo que dice Sebastian al comienzo. Demasiadas herramientas y demasiada complejidad, a veces no tan necesaria. Mi sensacion siempre fue que me gustaria algo como PHP, con mejor manejo a nivel de objetos, un BUEN mapeador de objetos a tablas (ORM) [creanme que probe varios y ninguno es "lo ideal" por lo menos para mi] y un buen esquema de separacion Presentacion - Logica (BUENA implementacion MVC con un modelo que no sea "a mano").
Muchos defensores de open source dicen "todo esto que necesito existe y ya esta hecho etc etc" pero no he encontrado una forma prolija de unir todo de la forma que quiza podria lograrse con JEE o .NET (sin necesidad de construir una plataforma tan compleja.
Para los mas veteranos, siento que estamos en una etapa como en la que se 2 lenguajes se disputaban ser los mejores (C y Clipper). Pero todos terminabamos haciendo cosas en CLIPPER pq terminaba siendo mas practico. PHP es MUY PRACTICO y seria bueno que hubiese algo mas para hacer de PHP algo practico y mas "SOLIDO" para otro tipo de aplicaciones

Anonymous said...

Olla!)
Busco una persona que domine J2EE y que tienga no máximo 1año de experiência, para trabajar en Madrid.
Se conocerem alguien, por favor, contacten apais@catenon.com

Muchas gracias
Un cordeal saludo!)

Gustavo said...

Hola que tal, leí tu artículo (Y leí otros, un poco más recientes) y me pareció muy interesante en muchos sentidos, incluso en los comentarios realizados y en las respuestas que tu brindas, es muy raro encontrar este nivel de discusión, sin caer en insultos, ofensas ni descalificaciones.

Pero bueno, ahora si va mi opinión. He desarrollado algunas cosas en .NET y algunas otras en Java, y creo que el hecho de existan ambas plataformas le hace bien a todos, a los desarrolladores, a los clientes ya que la competencia siempre genera mejoras.

Sin embargo creo que Java EE es una plataforma más completa de desarrollo aunque a veces resulte un poco más tardado implementar algunas cosas. Java permite portabilidad entre contenedores de aplicaciones, se puede elegir que servidor de aplicación es requerido dependiendo del tamaño del proyecto, puedes elegir desde un simple Tomcat, hasta montar una Aplicación en Websphere y tener soporte de IBM, en la que requieras del uso de EJB's para transacciones y utilización de Web Services, pasando por servidores muy completos y gratuitos como JBoss o GlassFish.

Puedes utilizar diferentes Frameworks, para la capa de acceso a datos como Hibernate o Ibatis y que pueden ser elegidos con base en el tamaño del proyecto y que, una vez que los usaste una vez, en realidad no son tan difíciles de configurar.

Con respecto a la gran cantidad de archivos de configuración, en la actualidad IDEs como NetBeans y Eclipse tienen interfaces gráficas muy simples para la configuración de archivos, y que son realmente necesarios para el desarrollo de la aplicación, cómo el nombre de la aplicación, las páginas de errores etc...Y para el desarrollo utilizando algún Framework como Struts o Java Server Faces, también tienen editores visuales, que ayudan demasiado y que además crean todo automáticamente, las reglas de navegación, o mapeo de acciones.

Además en la actualidad existe en Gran Framework Spring, que bien puede reemplzar el uso de los EJB's (que suelen ser un dolor de cabeza) y que tiene implementaciones para cada capa del Patrón MVC. Creando así un Framework Universal, cómo el .NET Framework, pero con posibilidades de integrarse con otras tecnologías diferentes en cada capa.

Además de que la implementación del MVC de Spring, me parece que separa mejor la vista y el modelo que utilizando el .NET Framework.


Bueno en mi opinión creo que Java es una plataforma más flexible que permite adaptarse a los requerimientos. Y que en la actulidad los IDE's de desarrollo son tan o más buenos que el Visual Studio.

Saludos

Sebastian said...

Hola Gustavo, agradezco tus comentarios. Obviamente eres un gran conocedor de la tecnología Java. Pero en parte, lo que tu mustras como virtud de java, yo lo veo como una gran contra. Cuál es el mejor IDE para java??? depende! me dirás... cada desarrollador tiene su favorito que ha customizado a gusto. Pues en .net no tienes ese problema ya que la respuesta es claramente Visual Studio.
Si bien el mundo java es un mundo abierto, yo lo veo bastante oscuro. Por ejemplo, por donde arranco? me explico?

Una vez mas agradezco tus comentarios ya que enriquecen al blog y dan una muy buena lista de recursos para quien quiera iniciarse en el mundo java.
Para quien quiera iniciarse en el mundo .net simplemente bájese una de las ediciones express del Visual Studio ;)