que framework/tecnologia

bueno antes que nada saludos a todos.

resulta que soy nuevo en el tema de J2EE aunque no nuevo pa la programada y he hecho cosas en lenguajes desde coldfusion, actionscript, php y .net-c#, por ahi me cayo un proyecto para hacerle un ERP a una compañia y aunque me dio libertades para escoger la tecnologia que usaria (.NET, PHP, JAVA) ya otra compañia les venia haciendo algo en java con una cosa que se llama "ibatis".

La verdad es que voy a aprovechar la fase de levantamiento de requerimiento y casos de uso que dejaron y entrevistarme con los usuarios para entender los procesos de negocio y aunque puedo escoger en que se hara me gustaria hacer este proyecto en J2EE pa empezarle a meter a esta tecnologia ya que segun yo la mejor forma de aprender es a punta de m@dr@zos en un entorno real ya que asi lo he hecho con otras tecnologias/cosas.

Tons anduve investigando un poco y veo que hay cantidad de frameworks, claro en cada pagina de cada uno todos le echan porras a su tecnologia pero me interesa preguntarles a ustedes que framework recomiendan que sea flexible, poderoso, practico, demandado y con una curva de aprendizaje si bien que no sea una papa que no este tan manchada, digamos de intermedio pa arriba, de java se todos los temas de programacion orientada a objetos, sintaxis y lo basico de jsp y beans..

Por otro lado como se integra ajax y jquery con estos frameworks? hasta ahora y segun he investigado el bueno es struts2..

thx por su atencion.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pacovr

flexible, poderoso, practico, demandado.....

"flexible, poderoso, practico, demandado y con una curva de aprendizaje si bien que no sea una papa que no este tan manchada"

Y que prepare el café por las mañanas, haga el super, barra la oficina... jejeje

Un poco de sarcasmo en lo que llegan los expertos y contestan esta duda correctamente ;)

buen día a to2!!!!

No soy un experto

No soy un experto pero sin duda yo usaria Spring como controlador, ya que la inyeccion de dependencias ahorran mucha chamba y te mejoran el performance, demas esa forma de trabajar interfaces e implementaciones para la capa Servicicio me parece buena.

Imagen de ezamudio

Spring

Yo también te recomiendo Spring, para varias cosas. Una, controlar los beans. Olvídate de los EJB's, mejor usas POJOs y en un Application Context de Spring. Y si usas Hibernate o iBatis para base de datos, Spring te facilita la manera en que se usan esos ORM's. Y también tiene soporte para el framework de GUI que elijas utilizar (incluso trae su propio MVC con Spring Web). Si usas JSF o JSP (con o sin JSTL) o Struts 1 o 2, etc, te va a beneficiar el uso de Spring porque simplifica muchas cosas (eliminas mucho "glue code").

si es lo que estaba viendo

si es lo que estaba viendo desde hace rato en otros foros, creo que spring sera mi framework de entrada al desarrollo del java-for-web, thx for the advise.. XD

Imagen de Nopalin

spring es j2ee?

Hasta donde yo tengo entendido, una aplicacion j2ee debe correr en un servidor de aplicaciones que no? y spring corre solito, como cualquier aplicacion java normal.

Imagen de ezamudio

Spring no corre

Spring no corre solito, porque Spring no corre porque no es un conejo ni un programa ejecutable, es una serie de librerías que en conjunto se consideran un framework que te puede servir para muchas cosas distintas porque su funcionalidad es muy amplia.

Puedes hacer aplicaciones JEE que corren en un servidor de aplicaciones y que usen Spring. Puedes hacer programas de línea de comando que usen Spring. O que corran desde crontab, etc.

Es como decir que Log4J no se puede usar en aplicaciones java standalone, solamente en JEE... siendo una librería, se puede usar en ambos casos.

Recomendación

Bueno, para hacer J2EE yo uso lo que te han recomendado Spring, en especial porque desde Spring te administra los recursos que debe "liberar el servidor" para el acceso a objetos que se manejen de manera numerosa como son los DAO donde para cada peticion generalmente usas una conexion a base de datos pero si ya hiciste conexion a la DB pues utilizala para lo mas que se pueda en eso te ayuda Spring claro que junto con Hibernate hago que exista la parsistencia de lo que tengo en objeto con la base de datos.

Como framework MVC uso Struts 2, porque me parece que es un buen framework que hace buenos mapeos de los parametros que envias por el request y que ademas de eso te hace el cast automatico de las variables, es decir si tu servlet (en este caso es action) debe recibir un numero, no tienes que hacer la talacha del Integer.parseInt y atrapar esa horrorosa excepcion de NullPointerException o NumberFormatException, simplemente la usas y punto, lo mismo da con los Date, File... etc. Ademas de que lo integro facilicimo a los frameworks Ajax mediante las respuestas en JSON. Por cierto te recomiendo ampliamente EXTJS (ahora Sencha) porque tiene ya todo listo para usarse, solo hay que manejar los eventos de tus componentes y olvidate de manipular Objetos del DOM, solo usas componentes con propiedades y se acabó. Si lo que necesitas es una aplicacion meramente empresarial y con buena presentacion esa es mi recomendacion.

Consejo: No seas como varios que buscan evangelizacion de algunas herramientas, prueba todo lo que puedas, haz ejemplos, descomponlos genera ejercicios tuyos y haste de un criterio para que tu decidas lo que te conviene porque esa pregunta que haces de ¿QUE ES MEJOR? pues yo de doy mi opinion que me funciona a mi pero seguramente hay quienes lo miran y tendran mejores propuestas que igual son generales o solo particulares

Saludos y exito en tu ERP

Imagen de Nopalin

tienes la razon ezamudio

Te doy la razon en ese punto, solo que no creo que spring se pueda comparar con Log4J, por que aunque spring pueda considerarse como una libreria mas, esta tiene dentro de sus muchos modulos todo lo necesario para implementar una aplicacion que ofrece servicios con algun protocolo (o varios) en especifico, y por ende no necesitas un servidor de aplicaciones. Una aplicacion J2EE requiere forzosamente correr en un servidor de aplicaciones.

Y me pregunto yo, si voy a utilizar spring, que gano al meterlo en un servidor de aplicaciones o que tiene de ventaja que no me ofresca spring?

Imagen de ezamudio

Spring + JEE

Spring no es un servidor de aplicaciones. Spring te permite hacer si quieres, un contenedor ligero, es decir, una aplicación JavaSE que se queda corriendo todo el tiempo que se necesite y tienes uno o varios application contexts manejando todos los componentes que se requieren y todos los servicios que necesites, no más, no menos. Pero es una sola aplicación.

Si necesitas varias aplicaciones distintas que se comuniquen entre sí y que compartan algunos recursos (conexiones a base de datos por ejemplo, o los componentes par envío de correo, o incluso algunos componentes custom) entonces necesitas un contenedor JEE, un servidor de aplicaciones en forma, como Glassfish, JBoss, etc. Hay un producto de SpringSource (la empresa que maneja el framework Spring) que es un contenedor JEE que funciona sobre Tomcat, pero no deja de ser un servidor de aplicaciones.

Spring es un framework que hace muchas cosas, pero no es un servidor de aplicaciones. La respuesta a la pregunta de qué ganas metiendo tu app con Spring a un servidor de aplicaciones creo que depende del contexto. En algunos casos la ventaja será que quien administra y monitorea el contenedor, va a monitorear tu app (que si la corres tú solo pues tendrás que ponerle algún mecanismo de monitoreo). En otros casos ganarás la capacidad de comunicar tu app con componentes que ya existen en ese contenedor, o publicar algunos componentes tuyos que otras apps del contenedor necesitan usar (similar a lo que hacen los EJB's). En otros casos puede que te convenga más tener tu aplicación standalone, por fuera de un contenedor. Depende de la aplicación y del proyecto y del ambiente en que corre y de un montón de cosas.

Una aplicación JEE requiere forzosamente correr en un servidor de aplicaciones

Eso es cierto independientemente de la aplicación JEE utilice Spring o no. Puede haber aplicaciones JEE que utilicen Spring para ciertas cosas. Spring tiene tantas librerías que puedes usar solamente unas pocas para facilitarte ciertas tareas; que sea un framework gigantesco no quiere decir que tienes que usarlo todo. Yo lo veo como un cuarto de herramientas de esos que a ciertos ñores les gusta tener en su garage o sótano, con todas las herramientas habidas y por haber; quién sabe si las usan todas, y seguro que no las usan todas para un proyecto que se les ocurra (armar una silla o algo así), pero cuando necesiten una de esas para algo que están haciendo simplemente la toman y la usan. La cosa aquí es que ya todas las herramientas son de la misma marca y por eso todas tienen ciertas cosas en común. En fin tal vez no sea la mejor analogía.