Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Java EE en la actualidad

Estoy aprendiendo Java EE. He estado estudiando por algunos videotutoriales y tutoriales. Algunos tutoriales con cierta antiguedad se enfocan en JSP como la vista del Java EE. Pero también he leído que ya esa tecnología está desaconsejada por Oracle en la actualidad y recomiendan Facelets. También en algunos proyectos freelance actuales he visto que exigen conocimiento en JPS. Por lo que estoy buscando consejos acerca de en que maximizo mi esfuerzo?? En facelets o en JSP??? Vale la pena aprender a fondo JSP?? Porque yo comencé a estudiar Java hace dos o tres meses y he visto que muchas tecnologías, framework, tienden a estar en desuso y quizás esté perdiendo mi tiempo profundizando en JSP. Que me dicen los programadores más experimentados (también los no experimentados, nadie se excluye de aconsejarme)??
Gracias

enero 25, 2014 | Unregistered Commenteryord

JavaServer Pages (JPS) es una tecnología antigua, como bien dices, pero bastante sencilla y es muy ligera cuando la empleas correctamente. Puedes aprenderla muy rápido. Probablemente no sea lo mas indicado actualmente para iniciar un proyecto nuevo para la capa de presentación por web, pero con JSP y algo como PrimeUI puedes hacer cosas muy interesantes.

Lo que vino a reemplazar a JSP con las nuevas versiones de JavaEE es JavaServer Faces (JSF). Facelets es solamente la tecnología para construir una página con JSF, así que en realidad tendrás que aprender JSF. Para aprender JSF puedes comenzar con el libro de Cay Horstmann "Core JavaServer Faces". Después podrás aprender a usar alguna de las librerías de componentes para JSF como Primefaces, Openfaces, ICEFaces, etc.

Adicionalmente te recomiendo que estudies bien la tecnología de Servlets. A pesar que es mas antigua que JSP, todavía es de mucha utilidad y te servirá para complementar tus páginas JSF.

Para aprender JavaEE en general, te recomiendo el libro de Antonio Goncalves "Beginning JavaEE 7".

enero 26, 2014 | Registered Commenterantoniovl

Muchas gracias por tu respuesta antoniovl.
Sí, seguiré estudiando JPS, y los servlets como bien me aconsejas, ya también en otros foros me han aconsejado lo mismo pues aunque Oracle ya no recomienda JSP con JSF, como quiera existen muchos proyectos ya comenzados hace tiempo, que la usan y que muy difícil cambién a las nuevas tecnologías.
En resumen que hay que tratar de aprender todo lo nuevo que vaya saliendo y lo que esté en "desuso" (aunque me vuelva loco con tantas cosas :-), porque parece ser que muchas de las tecnologías que van quedando atrás, y que han sido desplazadas por otras mejores, tardan mucho tiempo en quedar obsoletas y se le puede sacar partido a la hora de buscar soluciones.
Gracias

enero 26, 2014 | Unregistered Commenteryord

Buenas,

Lo que dices no tiene sentido alguno. Las paginas de JSF son paginas JSP con componentes jsf incrustados. http://www.tutorialspoint.com/jsf/jsf_architecture.htm

Por otro lado el controlador MVC de JSF al igual que en todos los frameworks modernos es.... un servlet!!!


he leído que ya esa tecnología está desaconsejada por Oracle en la actualidad y recomiendan Facelets

Eso lo ha dicho Oracle o "un guru de un foro"?

JSP y servlets son las bases del desarrollo web en java, que debes conocer a fondo (http://it-ebooks.info/book/375/ - El mejor libro al respecto).

Una vez los domines, quizas puedas aumentar tu productividad usando algun framework como JSF, Struts, Spring, etc etc etc

Yo llevo + de 10 anios haciendo aplicaciones web en java, casi siempre con las ultimas tecnologias... y jamas he usado JSF.


Un saludo

enero 29, 2014 | Unregistered CommenterUnoPorAhi

Saludos. Gracias por tus aclaraciones aunque quizás no enfoqué el tema bien, estaba pensando en JSF como el framework que Oracle expone en su tutorial de Java EE, y en el cual dice en:

http://docs.oracle.com/javaee/7/tutorial/doc/overview008.htm#BNACN

... The Java EE 7 platform requires JavaServer Pages 2.3 for compatibility with earlier releases, but recommends the use of Facelets as the display technology in new applications....

y en:

http://docs.oracle.com/javaee/7/tutorial/doc/jsf-facelets.htm#GIEPX

...JavaServer Pages (JSP) technology, previously used as the presentation technology for JavaServer Faces, does not support all the new features available in JavaServer Faces in the Java EE 7 platform. JSP technology is considered to be a deprecated presentation technology for JavaServer Faces...

También en la wikipedia (que quizás lo haya puesto cualquier persona pero que yo no me siento en la condición de refutar):

http://es.wikipedia.org/wiki/Facelets

...Facelets was originally created by Jacob Hookom in 2005[4] as a separate, alternative view declaration language for JSF 1.1 and JSF 1.2 which both used JSP as the default view declaration language. Starting from JSF 2.0, Facelets has been promoted by the JSF expert group to be the default view declaration language. JSP has been deprecated as a legacy fall back.[5][6]...

Es decir, JSP es parte de Java EE, y seguirá formando parte, pero como presentación del modelo MVC, para trabajar con JSF, parece ser que Oracle prefiere Facelets, por lo que teniendo en cuenta lo expuesto más arriba lo que dije, aunque mal enfocado, creo que recupera aunque sea un poquito de sentido.
Gracias

enero 30, 2014 | Unregistered Commenteryord

Buenas yord,

Gracias por tus interesantisimos apuntes. Exacto, tu lo has dicho: JSP está deprecado y desaconsejado... para su uso con JSF.

Aquí nadie es nadie para decir a los demás la tecnología a utilizar. Si hay algo que caracteriza al mundo java en general y en particular a Java EE es que es inabordable. Si algún día te encuentras a alguien que se diga ser un experto, ten por seguro que no es mas que un bocazas.


La tecnología de servlets surgió a finales de los 90 como alternativa a los scripts CGI. Al contrario que estos, que levantan un proceso en cada petición, el contenedor de servlets crea una instancia de este y la ejecuta en un pool de threads que van atendiendo las llamada. Esto resulta infinitamente más eficiente ya que los threads son una especie de "procesos ligeros" que comparten contexto y datos.
Sin embargo, los servlets tenían un gran problema, y era que desarrollar la presentación era un infierno, ya que había que incrustar el código HTML y JavaScript desde el propio componente java.

Por eso Sun, basándose un poco en otras tecnologías de scripting como PHP decidión sacar la especificación de JSP. Con JSP se invierte el ciclo de desarrollo, ya que lo que se hace es incrutar java en el HTML. Por otro lado, JSP no deja de ser un poco un apaño, ya que en realidad se trata de un servlet. Cada vez que se hace una invocación a una JSP el contenedor lo parsea y tranforma en un servlet, compila este (solo la primera vez) y lo ejecuta.
Con la especificación JSP, Sun propuso dos modelos de programación:
Modelo 1, que consiste básicamente en hacer código "espaguetti" mezclando lógica con presentación.
Modelo 2, que es lo que paso a denominarse Model-View-Controller (MVC). Más orientado a aplicaciones web complejas y escalables.

Varias empresas (como Oracle o IBM) empezaron a implementar sus propias soluciones, pero quien dio verdaderamente el bombazo fue Struts, que empezo a utilizarse en todos los proyectos. Actualmente hay muchas soluciones MVC en el mercado que han ido mejorando con el tiempo en calidad y complejidad.

Por otro lado estaban los EJB de la especificación J2EE. Estos eran un auténtico infierno por varios motivos:
-Eran complejos de implementar y desplegar (no se solucionó hasta la versión 3).
-Requieren un servidor de aplicaciones completo, por lo que funcionan en contenedores de servlets ligeros, como Tomcat o Jetty, que implementan Java EE solo parcialmente.
se solucionó hasta la versión 3).
-Requieren un servidor de aplicaciones J2EE completo (JBOSS, WebSphere, Weblogic), por lo que funcionan en contenedores de servlets ligeros, como Tomcat o Jetty, que implementan Java EE solo parcialmente.
-Eran muy muy pesados y consumían muchísimos recursos.

Para solucionar todas estas taras, se idearon otros sistemas utilizando java pero fuera de la especificación J2EE y ahí fue donde surgieron los frameworks con gestión automática de dependencias (contenedores IoC), entre los que destaca Spring.

Con el tiempo, además, las especificaciones Servlet y JSP han ido mejorando incluyendo funcionalidades como JSTL, Expression language, anotaciones... JSP no tiene por tanto nada que envidiar nada a otros motores de presentación como Freemarker, Velocity, etc. Permite además un control absolutio sobre el HTML y el Javascript de la página.
Todos estos frameworks que han ido surgiendo permiten utilizar prácticamente cualquier tecnología de presentación aunque JSP ha sido generalmente la elegida "por defecto"


Por otro lado, mientras surgian otras soluciones como Struts, Sun decidió copiar un poco a ASP .NET. Este permite crear aplicaciones MVC basadas en eventos y componentes (controles) que se pueden diseñar e incrustar mediante un editor WYSWYG como si fuese una aplicación de escritorio normal y corriente.
Para ello desarrolló un core para gestionar el controlador basado en eventos y a su vez creo una especificación para el desarrollo de componentes (facelets) de los cuales hay muchas implementaciones. Una de las gratuitas más conocidas es Primefaces y de las comerciales ADF, de Oracle.
Sin embargo, desde mi punto de vista tiene muchos problemas:
-No existe un editor para Java ni de lejos tan bueno como Visual Studio, por lo que al final hay que hacer las cosas a manubrio.
-Los componentes se expanden generando código HTML y Javascript sobre el que no tenemos ningún control. Esto impide afinar los desarrollos tanto como suele demandar el cliente. Además convierte en un infierno tratar de automatizar test con herramientas como Selenium.
-Realmente no existe una implementación BUENA. Primefaces tiene buena pinta, pero en numerosas ocasiones quienes lo utilizan me han dicho que está plagado de bugs. ADF es de Oracle, y casarte con Oracle es lo peor que te pueda pasar.

Oracle tiene mucho interés en que se utilice esta tecnología sobre todo porque así puede imponer ADF. Por eso no te debe extrañar que en su documentación insista en su uso frente a otras sobre las que no tiene tanto control.

Un par de referencias (no se si tienen razón o no :-S, quien sabe ):
http://programmers.stackexchange.com/questions/157991/reasons-not-to-use-jsf
http://blog.brunoborges.com.br/2010/12/top-10-reasons-why-i-dont-like-jsf.html


Hoy en día el desarrollo web pasa más por desarrollo de presentación basada en características avanzadas de HTML (HTML5 donde se puede) y CSS3. Y muchísimo javascript con librerías completísimas existentes como jQuery, extJS, etc. Esta presentación opera de forma totalmente desacoplada con el servidor utilizando APIs Rest y JSON como formato de intercambio de datos.

Después de este rollo, y si me permites un consejo, viendo que estás formándote a gran velocidad y con mucha motivación, yo te recomendaría que te formes una base:
-Estudia bien la arquitectura de las aplicaciones web con independencia del lenguage o tecnología utilizado. Al final todo es muy parecido, ya uses java, python, PHP, ruby o go.
-Estudia mucha algoritmia, ya que esos conocimientos transversales son universales y te darán ventaja en cualquier tecnología o lenguaje que utilices. Debes comprender perfectamente como funcionan las estructuras de datos.
-Practica patrones de diseño. PRACTICA, ya que no hay otra forma de aprenderlos. Usarlos puede ser una ventaja, pero usarlos cuando no procede puede ser aún más catastrófico.
-HTML CSS y Javascript son la base de la web, ya uses JSP, Freemarker, Thymeleaf, velocity, facelets..., ya uses cualquier Spring, Struts, Tapestry, Stripes, JSF... ya uses Java, Python o Groovy... al final lo que entiende el navegador son HTML-CSS y Javascript. No hace falta que seas un buen diseñador, pero tienes que dominarlos!!!
-Haz tus aplicaciones con la tecnología que decidas y publícalas en github!

Y sobre todo:
-No te leas el tutorial de Java EE del tirón, es horrible y vas a perder motivación!!!!. Mejor lee manuales que separen el grano del trigo. En estos tiempos, la fuente de conocimientos es infinita: http://it-ebooks.info/

P.D: tengo prisa y no voy a poder releer este post, disculpa por las faltas.


Un saludo

enero 30, 2014 | Unregistered CommenterUnoPorAhi

Saludos. Muchas gracias UnoPorAhi por tu disertación (escrita), son muy buenos estos tipos de consejos sobre todo para quienes comienzan a caminar en este mundo, prácticamente desde cero, porque de veraz que es un poco chocante cuando en Google encuentras JSP, Freemarker, Thymeleaf, velocity, facelets, Spring, Struts, Tapestry, Stripes, JSF y no sabes para dónde coger y entonces cuando vas a los foros en búsqueda del Santo Grial te encuentras con disímiles opiniones encontradas y cada opinión tiene un fundamento casi perfecto.
Cualquiera en mi lugar se va con lo que predica el dueño (Oracle) de la licencia, porque yo pensaba que era el que llevaba “la voz cantante” en el desarrollo de las tecnologías Java, pero ya he leído por ahí un poco del rollo de las licencias, y parece que estas permiten otras vertientes al margen de Oracle.
Por lo que estimo todos los consejos que me den, que al igual que los tuyos me servirán de mucho. Al final todos tenemos que poco a poco ir probando varias tecnologías (no todas, es casi imposible), y junto con los consejos que me den, sacar mis propias conclusiones.
Ok, muchas gracias nuevamente y créeme que tendré muy en cuenta todo lo que me has dicho.

enero 31, 2014 | Unregistered Commenteryord