learning java for web

Que hay banda, resulta que soy nuevo en el tema java pero no en la programacion, actualmente le entro a PHP y .NET (C#) y ando viendo entrarle al JAVA FOR WEB nada mas que segun he visto es un relajito ya que hay un buen de frameworks y sub-tecnologias y no se ni por donde empezar..

Segun entiendo JSP y SERVLETS son tecnologias "MODEL 1" ya mas viejonas y no son recomendables pensando en el mantenimiento de sitios a futuro, aparentemente la onda son los framework "MODEL 2" pero ahi empieza mi problema con tantos que hay, ahora bien empece con STRUTS pero ellos hacen referencia a JSP y SERVLETS (ademas de los famosos JAVA BEANS).

En resumen, que y en que orden lo aprendo para desarrollar aplicaciones orientadas al WEB en JAVA? segun sus recomendaciones.

Saludos.

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 ezamudio

Un poco cuestión de gustos...

Pero yo me saltaría Struts; como dices, es simplemente una capa encima de JSP y Servlets. Hay varias opciones. Apache te ofrece Tapestry, Click, Wicket, entre otras. Está ZK, el Google Web Toolkit, Vaadin, Spring MVC, ICEFaces...

Aunque te tardes un poco más en elegir uno, te conviene leer aunque sea la intro de cada uno. Fíjate en el soporte que hay, documentación, tutoriales, tamaño de la comunidad... esos son criterios muy válidos para elegir un framework.

De los Java Beans no te vas a salvar porque son la estructura básica de objeto en Java. Son simplemente objetos con propiedades, nada más.

Imagen de fckwlf

pos creo que como dices, voy

pos creo que como dices, voy a evaluar pros y cons de cada FW, thx.

Imagen de fcodiaz

por eso me aburri de javamexico y JEE :S

jajaj ups.. lo siento pero es la verdad, una de las cosas que me he fijado que el desarrollo web en Java se vuelve muy complejo, yo creo que solo hay que tener un buen orden y buen motor para tu sitio/sistmea, implementar un modelo VMC y con eso que empsaron a sacar y sacar frameworks que "para facilitar la vida" la verdad yo considero que lo unico que hace es aumentar la complejidad de la tecnología o por lo menos a mi no me late configurar no se que tantos xml's para obtener que se yo un JSON o un XML o un HTML, que tansolo necesito variables GET o POST procesar a BD y obtener un resultado, con tantos frameworks no se que tanto se tiene que configurar ¬¬.... y pues ahorita veo en la comunidad que se habla y se habla de frameworks y mucho mas de frameworks que si este, que si este otro, o que los puedo convinar, etc etc.. es algo que la verdad me aburre y por desgracia veo mucho en javamexico :( que se habla mas de un monton de frameworks que de java mismo, estoy tomando en serio brincarme al lado obscuro .net que también maneja su framework pero aqui por lo menos es uno y es el oficial y la cosa no esta tan revuelta como en Java,

yo la verdad prefiero perfeccionar una técnica que me ayude a reciclaje, a la fácil actualización, etc todas esas cosas que deve de tener un proyecto para que pueda crecer a futuro pero algo que concluyo es que java nunca te va a convenir para una simple web ya que el desarrollo la verdad se vuelbe complejo y no creo que por la tecnología misma, si no por la cantidad de frameworks que hay, la verdad aunque me digan anticuado por mi prefiero conocer bien lo que es Java como lenguaje solo buscar como puedo manejar las dos tecnologías que java me ofrece como opciones JSP y Servlets y ya si en la vida laboral me encuentro con tener que usar un framework no es mas de una semanita de estudio y a darle y ya el jefe me dira cual, ahora que si no te quieres esperar a que un proyecto te obligue a estudiar un framework determinado, has lo que suelo hacer pasa saber que es lo que me conviene estudiar o bien que esta de "tendecia" entra a las bolsas de trabajo coloca "java" y busca las ofertas en java seguramente si se requiere un framework lo especificarán ve cual tiene mas demanda y procede a estudiarlo.

suerte en este empedrado camino del JEE.. ;)

PD. disculpas si mis palabras hieren a alguien xP, la decicion de usar uno u otro framework o ninguno ya es muy personal o bien del jefe del proyecto xP

Al contrario de lo que

Al contrario de lo que comenta fcodiaz, a mi me gusta tener muchas alternativas para el desarrollo de mis aplicaciones, si te quieres ir por lo oficial de SUN puedes usar JSF, EJB y JPA, Java es libre y por tal motivo existen muchos Frameworks (cosa que no sucede con .NET). Ahorita le estoy hechando estudio a Spring y me parece un magnifico Framewok ademas de que tiene modulos para MVC, Seguridad, Batch, WebServices, etc., y ya no es tan necesario llenar tus aplicaciones de configuraciones XML por que al menos en la version 3.0 que es la que estoy estudiando muchas cosas se resuelven con anotaciones.

Imagen de rodrigo salado anaya

Aburido??

fcodiaz, en lo personal e visto todo tipo de contenido en javamexico.org (unos muy fumados :P). Que si la comunidad usa frameworks y cual elija, es una cuestión de comodidad, gusto o incluso capricho o que se yo, pero es normal hablar y escribir de lo que uno usa en su vida de programador, y si hay una comunidad que te abre las puertas para preguntar, platicar, comentar, etc., pues no usar esa comunidad seria un gran desperdicio. Lo interesante que yo veo es la tendencia de los programadores en javamexico.org. Pero igual seria muy interesante que nos regalaras contenido que no estuviera dirigido específicamente en el tema de frameworks.

bueno nos leemos pronto :)

Imagen de ezamudio

@fcodiaz

Entonces crees que es malo que haya tanta variedad de frameworks?

Primero que nada, no los tienes que usar si no quieres. Segundo, no tienes que usarlos TODOS; hay muchos que se enfocan a resolver el mismo problema, y de todos ellos normalmente eliges uno solo, el que más te guste, por diversas razones: el tamaño de la comunidad que lo utiliza (y que lo desarrolla), el soporte que tenga (hay una empresa detrás, o solamente una persona?), la facilidad de uso, el tipo de licencia, todo eso aparte obviamente de las ventajas y desventajas técnicas que tenga el framework.

No eres el único que está harto de tanta complejidad; de hecho muchos de los frameworks que tanto criticas existen precisamente porque varios programadores ya se hartaron de la complejidad excesiva de las aplicaciones JEE y decidieron simplificar las cosas, sin perder versatilidad, flexibilidad, desempeño en la ejecución y velocidad de desarrollo. En algunos casos han tenido que romper completamente con los paradigmas existentes de JEE como el JSP; Wicket, Tapestry y Click se saltan por completo ese esquema y ofrecen una alternativa para hacer las cosas de manera diferente. No veo cómo puede ser malo eso, porque nadie te obliga a usarlos (a menos que te encuentres en una situación en que entras a una empresa donde es política usar X framework o stack, o heredas un proyecto grande que usa X framework o stack y no es factible reescribirlo).

Para .NET también hay varios frameworks y tampoco estás obligado a usarlos. Pero .NET al ser un producto de Microsoft, siguen más el modelo de catedral y en cualquier proyecto de .NET siempre es preferible no meter cosas extrañas y solamente limitarse a usar lo que Microsoft te da y usarlo como Microsoft dice. Sólo hay un camino, no hay variedad. Tal vez te sientas más cómodo con esas restricciones, aunque te las puedes poner usando Java; no es obligatorio usar todos esos frameworks que están a tu disponibilidad. Puedes hacer una cabaña con clavos, martillo y serrucho; no estás obligado a usar sierra eléctrica, lijas, tornillos, desarmadores, cepillos, pegamentos, etc etc.

Y pues en Java habiendo tanto framework, siento que sería un desperdicio no mencionarlos, explorarlos, probarlos, etc. Si el sitio se limitara a hablar del lenguaje, sería un simple manual. Y de hecho si te quieres ver muy estricto con lo del lenguaje, sería hablar solamente de la sintaxis y palabras reservadas, y la manera de crear tus propios objetos y ya. Porque en cuanto empiezas a usar las clases de Java, te das cuenta que Java mismo es un framework, no solamente un lenguaje; todas esas clases que vienen incluidas en el JRE y JDK dentro de los paquetes javax.swing, java.awt, java.io, java.nio, java.net, javax.security, java.util.concurrent y otros muchos más, ya se pueden considerar en conjunto como un framework. Y lo mismo va para .NET cuando ves los namespaces y módulos equivalentes como System.Net, System.IO, System.Windows.Forms etc.

Imagen de Jvan

Sun sí tiene una

Sun sí tiene una especificación oficial para desarrollar en JEE, yo creo que el hecho de que existan tantos Frameworks es algo bueno debido a que te dan la opción de elegir inclusive te dan la opción de no elegirlos, no es como Microsoft que te debes apegar a lo que dicta la empresa. También tienes la libertad de desarrollar tus propias librerías, comentas que te aburre que se hable de tantos Frameworks, a mi me gustaría saber que te divierte. El que en esta comunidad se hable mucho de Frameworks no significa que tú debas utilizarlos, simplemente se dan opciones, y si te aburre tanto te invito a generar contenido de otras temáticas, la plataforma Java no solo es JEE ni Frameworks para JEE.

Imagen de Jvan

@fckwlf

Si nunca has hecho nada en web en la tecnología que sea, yo te recomendaría que empieces con Servlets y JSP ya que son las bases, te dan la idea de que como trabaja un servidor de aplicaciones, etc. Si ya tienes experiencia en web y conoces el proceso de como funcionan las aplicaciones web entonces pásate a algún framework

Imagen de jali

Pros y contras

Yo consiero...(ya que en algunos lados se usa... y bastante) que aprender JSP y Servlet no va de mas... los frameworks... depende que es lo que busques, hay de todos colores y sabores. Eso esta bastante chido. Es bueno que veas pros y contras, y podrias aportar algo a la comunidad con eso :]
Y para @fcodiaz, es muy valida tu postura aunque bastante ... como decirlo, abusiva, porq ue comento eso? por que si ves que no hay temas "de interes" o "fuera de frameworks" pues disculpame, pero podrias aportar no? Veo que no llevas mas de 1 mes en la comunidad como para haber explorado los blogs de los colaboradores, bueno... no lo se.
Otra es, me imagino que entraste al PCJ y no ganaste, porlo tanto te aburriste? o estoy equivocado? venias a ganar algo aportando 1 articulo que me parecio bastante basico y hubieras podido explotar mas el tema.
Y si hablamos de frameworks.. disculpanos. No se donde trabajes, pero donde trabajo( y creo que muchos) en la industria estan pidiendo frameworks y no solo aportamos por eso, hay unos que se estan comenzando a utilizar como ZK o Vaadin y pues se hacen comentarios aqui por si a alguno de nosotros nos interesa, si podemos aportar mas sobre este articulo.

Sobre .NET, buena suerte a programar con un esquema bastante cerrado, haces las cosas como microsoft quiere, olvidate de patrones de diseño por que ya tienes las mejores practicas, olvidate de buscar una libreria gratuita que te integre ajax con bases de datos... implementa la tuya, tu control. Vamos a hacerlo desde 0 o mejor aun. Vamos a gastar en una libreria.

No se, considero que si ese es tu parteaguas para cambiar de tecnologia... pues buena suerte. Espero que no te des de topes despues cuando veas que programando... son basicamente lo mismo.

Todo el mundo sabe hablar, solo cambia el lenguaje. Es lo mismo con la programacion :)

Saludos!

Imagen de fckwlf

yo creo que todas las

yo creo que todas las opiniones son muy validas en este contexto y cada quien como programador puede incluinarse por un lenguaje, sublenguaje, etc. eso ya depende del estilo, organizacion y tecnicas de programacion que uno maneje, como dice fcodiaz, quizas el se quiere preocupar por conocer el lenguaje al 100% y resolver problemas especificos con ese conocimiento mientras que otros querran usar frameworks que les faciliten (o compliquen incluso) la vida, en lo personal yo creo como en muchas otras cosas existe una tecnologia adecuada para cada tipo de problema.

Al final creo que los frameworks son una excelente forma de enfocarse en resolver problemas de la logica del negocio y dejar tareas mas "mundanas" al framework mismo ya que en lo personal detestaria tener que escribir un mecanismo de autenticacion cada vez que hiciera una aplicacion por ejemplo.. respecto a que framework funciona mejor pos yo creo que ya depende de bastantes factores.

Por lo pronto me voy a chutar unos books de JPS y Servlets ya que segun entiendo, son las bases pa el web-java.. incluidos muchos frameworks.

See, creo que le diste al

See, creo que le diste al clavo.
Por cierto, todo es un framework, casi casi lo definen como sistema, no mams, QUE ES?!

RE: Un poco cuestión de gustos...

Si es cierto es cuestión más que nada de gustos. Pero una pregunta: ¿GWT no era para hacer componentes AJAX?

RE: Un poco cuestión de gustos...

Pues no creo que sea algo necesario JSP y Servlets, auqneu cómo bien dices son la base...Pero en ocasiones no son necesarios.

Algo que yo creo debes enfocarte mucho es en ver qué tan productivo es X o Y framework y que tan rápido te permite reaccionar a cambios. En mi experiencia Struts ES LA MUERTE, es cierto, no ensucias tu código pero ahh como es lento un desarrollo en Struts. Otro que yo descarto (por la misma razón) es Wicket...En general los frameworks apache tienen esa desventaja: "hechos para tener feliz al programador, no al cliente".

Yo te recomiendo Play!, si eres desarrollador Java SE puedes darle un vistazo. En mi experiencia es algo realmente productivo y en respuesta a cambios no conozco nada mejor.

Otra opción es Spring Roo, pero para Spring Roo si necesitas documentarte un poco más que para Play!.

Ya que si no te importa que sea Java el lenguaje, hay muchos otros, para PHP están cake, akelos y otros...En python tienes CherryPy, Django, TurboGears...En ruby tienes Ruby on Rails y Merb...Para Groovy está Grails.

Recomendación: Primero fíjate en la productividad y capacidad de respuesta al cambio; si no te lo ofrece no creo que sea lo mejor porqué lo único que tendrás es desarrollos lentos y clientes no-felices...Seguido del tamaño de la comunidad y la documentación.

Saludos, espero te haya servido mi comentario.

Imagen de ezamudio

Play!

Estoy leyendo la lista de las principales características de Play! y algunas me hacen ruido... tú que lo has usado wishmaster77, a ver si me puedes resolver algunas dudas:

- Se ponen entonces los fuentes de la aplicación en el deployment? Qué pasa si tienes componentes que son tuyos y que le das licencia al cliente pero no le quieres dar el fuente? puedes meter JARs de clases, como cualquier librería, sin fuentes? Qué pasa en esos casos en que le pones al cliente su app a correr pero no le quieres dar todavía los fuentes hasta que te pague?

- Se puede cambiar ya en producción esa página que te muestra el fuente con el error? En producción no considero nada recomendable que se vea eso por seguridad y por estética.

- Usa un contenedor JEE o es standalone?

RE: Play!

Disculpa la tardanza @ezamudio =).
Bueno, para el deployment es como cualquier otra aplicación Java EE, la empaquetas en un war y con ayuda de Ant (el estándar por defecto) o Maven 2 (que se puede integrar y reemplazar en lugar de Ant, aunque es algo tedioso) puedes empaquetar sin fuentes, o sea como dices agregar jars en el directorio /lib y este directorio en tu war.

De hecho la página que te muestra el error es sólo en modo DEV (desarrollo), en modo PROD te sale una página que esta en /views/errors/{404.html y 500.html} (si mal no recuerdo).

Si se utiliza un contenedor JEE soporta varios (tomcat, Glassfish y algunos otros que puedes ver acá:

Saludos.