Buscar
Social
Ofertas laborales ES

Foro sobre Java EE > Librerias JavaScript vs Frameworks JSF

Teniendo en cuenta la tendencia o ´moda´ de hacer que las aplicaciones web se parezcan a las aplicaciones de escritorio se me ha presentado varias interrogantes sobre el asunto de este Post. De toda la información que pueda haber en la web, por el momento me he centrado basicamente en dos alternativas para el desarrollo de aplicaciones:

1. Centrado en el servidor: básicamente utilizando un framework JSF como Primefaces, Icefaces, Richfaces y similares; aunque hasta donde tengo entendido los componentes de Primefaces están basados en jQuery.

2. Enfoque Mixto: Desarrollar la interfaz con librerias JavaScript como Dojo, JQuery, Ext JS, etc; sobre páginas JSP que forman parte de una aplicacion basada en frameworks como Spring MVC, Struts 2, etc. En este caso la idea es utilizar los elementos que proporciona la libreria javascript para diseñara la interfaz de usuario, mostrar data obtenida desde el servidor mediante Ajax o servicios web REST (en formato json) y enviar los formularios para ser procesados en el servidor.

Mis interrogantes son:

1. Como referencia: ¿Cuál de los dos enfoques son los que han visto con mayor frecuencia?

2. ¿Cualés son los contras del primer enfoque?

3. En el segundo enfoque me preocupa el tema de seguridad ya que al menos el código que controla la lógica de la interfaz y algunas interacciones con el servidor quedan expuestas cuando se descargan los archivos javascript en los que se agrupa el código en este tipo de aplicaciones. ¿Cómo abordar el tema de seguridad en este enfoque?

Espero que los más experimentados me puedan ayudar a absolver estas interrogantes ya sea comentando su experiencia o compartiendo algún artículo al respecto.

Saludos,

abril 5, 2012 | Unregistered CommenterJuan

Creo que esa es la interrogante con la que al igual que tu me encuentro, estoy interesado en este tema ya que he desarrollado aplicaciones con JSF y tambien con ExtJs y quisiera saber los pros y contras en cada una de las arquitecturas.

febrero 5, 2014 | Unregistered CommenterReynaldo

Hola Juan

Sobre la opciones que propones, la 1 y 2 es la misma, me explico actualmente la formas de realizar páginas web son las siguientes:

1º Utilizando un framework web como JSF con sus distintas implementaciones y colecciones (RichFaces, IceFaces, Primefaces, Omnifaces, etc), Spring MVC, Struts 2, Play, etc, hay miles.

2º Es en dos capas FronEnd y BackEnd, en que consiste esto que la capa FrontEnd solo se utiliza Html y JavaScript (Lo que se ejecuta en navegador del cliente), es decir, html5, css3, Jquery, Jquery Mobile, zepto, bootstrap, BackBone, Angularjs, etc.

BackEnd es la parte donde se tiene el acceso a bases de datos y generación de plantillas del lado del servidor. Aquí puede ser cualquier tecnología, Java, C/C++, NodeJs, Ruby, etc...

Lo que prente esta arquitectura es separa bien la capa de presentación de la capa de acceso a datos y que se intercambié información a traves Json sobre http (formato que va sustituir a xml). LLevarnos el MVC en la parte FrontEnd.

Un breve resumen sobre esta segunda forma de desarrolar páginas web, su idea es que backend ofreca unos servicios y que FrontEnd lo consuma.

Sobre el tema de seguridad en los dos enfoces esta cubiertos.

Espero a verte ayudado

Saludos

febrero 6, 2014 | Registered Commenterxabe

Si es necesario tener control total sobre la presentación de la aplicación web, tendrás que utilizar algo como jQuery, Dojo, YUI, etc. Lo que pongas en backend dependerá de la experiencia que tengas: Si ya conoces JavaEE, utiliza JavaEE; si ya conoces Spring, vete por ese lado.

En cuanto a la presentación: Por ejemplo, si debes desarrollar una aplicación para modelar un proceso de negocios, probablemente algo práctico sea utilizar JSF+Primefaces: Lo que yo he visto en estos casos es que al cliente le interesa mas que si sistema funcione correctamente y no es muy exigente en la presentación. Si te piden desarrollar una aplicación expuesta al público en general, y se debe maximizar la experiencia del usuario, necesitas control de la capa de presentación y probablemente sea mas flexible hacerlo con un framework Javascript. A pesar que Primefaces utiliza jQuery, no es muy aconsejable que lo manipules directamente a menos que sepas lo que estás haciendo. De otra forma te toparás con sorpresas (componentes que dejan de funcionar, el ppr no funciona como se espera, etc).

febrero 7, 2014 | Registered Commenterantoniovl

Hola compañeros, no se si me podrian ayudar,en conseguir nuevas herramientas para hacer graficos en 3d,2d en java, si alguien supiera de nuevas herramientas en java

febrero 12, 2014 | Unregistered Commenterramiro

Te recomiendo dos cosas:
- El tema de tu pregunta no es relativo a JavaEE. Publicala en el foro JavaSE.
- Abre un nuevo tópico para tu pregunta.

febrero 12, 2014 | Registered Commenterantoniovl

Gracias a @xave y @antoniovl por sus respuestas.

@xave, entiendo los dos enfoques me mencionas aunque creo que en el fondo, sutilmente o en la práctica, son lo mismo ya que un ejemplo de lo que yo me refería con enfoque mixto es el caso de una aplicación web basada en struts 2 donde la interfaz de usuario eran archivos JSP pero toda la interfaz era construida usando componentes de dojo (sin usar los tags de struts ni ninguna otra libreria de etiquetas), los datos los obtenía del servidor en formato JSON pero usando también struts2 (plug-in) , lo comento porque no he visto en la práctica, fuera de lo teórico o académico, casos reales en los que el FrontEnd esté formado únicamente por html, javascript y css3 ¿tú has trabajado en un proyecto real de mediana o gran envergadura usando únicamente htlm, css3 y javascript (incluido librerias como jquery, dojo, etc) en el FrontEnd? | Por otra parte el tema central de la consulta original era la seguridad en aplicaciones web, en ese sentido te agradecería si nos compartes/comentes un poco de tu experiencia en los dos enfoques que mencionas, sobre todo el segundo ya que en tu respuesta original sólo mencionas que "el tema de seguridad en los dos enfoques esta cubiertos".

@antoniovl, lamentablemente en la mayoría de proyectos que he participado los requerimientos de interfaz de usuario han tenido bastante peso, por ello he tenido que recurrir a librerias javascript como dojo y jquery, pero sin llegar al extremo de que el FrontEnd sea únicamente html, javascript y css3 | En este caso ¿qué me podrías recomendar para temas de seguridad?

Saludos.

febrero 18, 2014 | Unregistered CommenterJuan

@juan Si te refieres a temas de seguridad en el lado del cliente, no soy la persona mas indicada para orientarte; no me meto a profundidad con jQuery u otros frameworks Javascript. Supongo que lo que tienes que cuidar es el XSS e inyección de otros objetos directamente en el DOM de tu página.

febrero 18, 2014 | Registered Commenterantoniovl

Buenas,

En cualquiera de los enfoques que comentas la seguridad es la misma.
Da igual que uses JSP, JSF o HTML a pelo. Al final lo que recibe el cliente en su navegador es codigo HTML+JavaScript+CSS.
Ese codigo el cliente lo descarga, lo puede ver, estudiar, copiar e incluso modificar a su antojo. Por el comentario de tu primer post entiendo que esto lo consideras un "problema de seguridad".

Para empezar, el codigo cliente no deberia incluir nada de logica de negocio, por lo que no deberia preocuparte esto. Ademas, las validaciones de datos se pueden hacer opcionalmente en el cliente pero siempre obligatoriamente en el servidor. Debes protegerte bien siempre de los ataques tipicos: XSS, tampering, inyecciones, etc. La mejor referencia siempre en OWASP: https://www.owasp.org/index.php/Main_Page

Si consideras que el exponer el codigo fuente es malo para la seguridad, creo que tienes una vision distorsionada de lo que es eso. Lo que tu persigues es la llamada "seguridad por oscuridad" (http://es.wikipedia.org/wiki/Seguridad_por_oscuridad), que siempre ha sido una muy muy mala idea. Que te parece mas seguro, Windows o Linux?

Un saludo

febrero 19, 2014 | Unregistered CommenterUnoPorAhi

Hola

Perdon la tardanza que he estado un poco liado, bien como he dicho sobre le tema de seguridad, creo que te refieres que usuario se tiene que autenticar y sí tiene usuario autorización para ver tal página o no?, si es así hay mucho métodos de seguriadad:

Por formulario (user/password)
HttpBasic
HttpDigest
Oauth
Single Sign One
Certificados
etc..

Los más comunes es por formulario, httpbasic u oauth, como te he dicho anteriormente esto son lo metodos de seguridad que hay lo que tienes es ver como se configurar o implementar para cada tecnología que uses.

1 Si vas a desarrollar con java puedes usar Spring Security framework que te cubre los sistemas de seguridad que te he comentado anteriormente y más, este framework te vale como la primera y la segunda opción.

2 Si vas a desarrollar con NodeJs tienes una librería que te ayuda con el tema de la seguridad que express y passport.

3 Si vas a desarrollar con Python tambien tienes un monton de librerias para implementar los sistemas de seguridad

todos esto tiene que ir por https

Espero a verte ayudado

Saludos

febrero 19, 2014 | Unregistered Commenterxabe