2009-02-11 9 views
16

Actualmente estoy trabajando en una aplicación web que hace un uso intensivo de JSF y IceFaces. Hemos tenido algunas discusiones sobre el cambio a otra capa de presentación, y pensé en llevar la discusión a SO y ver qué opinan los expertos.Pros y contras de varias tecnologías Java Layer Web Presentation Layer

Tengo curiosidad por saber si alguien puede analizar los pros y los contras de las diversas tecnologías de capa de presentación de Java. Si solo ha trabajado con uno, diga por qué lo ama o lo odia. Si ha trabajado con varios, dé su impresión de cómo se comparan entre sí.

Nuestras tecnologías que se consideran son:

  • IceFaces
  • JSF (sin IceFaces)
  • GWT (Google Web Toolkit)
  • Wicket
  • gobelino

Y si Me falta algo de mi lista, házmelo saber.

Gracias!

Respuesta

6

Mis opiniones son bastante tendenciosas hacia Wicket porque lo he estado usando para una mientras que después de tropezar con las minas JSP demasiadas veces.

OPI

garaje: Gracias

  • verdadera separación de diseño y código.
  • Basado en componentes que significa alta reutilización de los elementos del sitio; Por ejemplo, puede crear una forma embellecida con etiquetado automático y estilos CSS y todo, y simplemente cambiando su objeto DAO en el constructor del componente es completamente reutilizable en otro proyecto.
  • Excelente soporte para cosas como Ajax, Portlets y varios frameworks en general directamente out-of-the-box Y lo más importante, no depende de nada más que slf4j/log4j para funcionar, ¡todo es opcional!

Contras: Wicket

  • Desarrollo tiene una cierta confusión acerca de las cosas en general y de los genéricos peatonales incorporadas son un poco de un desastre en este momento a pesar de que han sido limpiados mucho en 1.4
  • Algunos componentes (como Form.onSubmit()) requieren amplias subclases o anulación de método anónimo para el comportamiento de inyección fácilmente. Esto se debe en parte al poderoso diseño basado en eventos de Wicket, pero desafortunadamente también significa que es fácil hacer un lío de código con Wicket.

Contras: azar (es decir, que no han utilizado, pero estos son mis opionions y/o cosas que he oído)

  • GWT es JavaScript basado en que suena estúpido para mí. El problema principal es que me recuerda demasiado a JSP: s y sus clases autogeneradas que son horribles.
  • Tapiz no separa el marcado y el código correctamente de una manera que podría validarse fácilmente entre los dos, lo que causará problemas en el futuro.
+0

Esko, comparto tu disgusto por JavaScript, pero tal vez quieras echarle un vistazo a "JavaScript: The Good Parts" de Douglas Crockford. Además, trabajar con JQuery ha hecho mucho para reprimir mi reflejo nauseoso cuando se menciona JavaScript. – rtperson

+0

Gracias, acabo de escribir el nombre del libro en un post-it, así que lo veré, eventualmente. Oh y Wicket, por supuesto, tiene un gran soporte para jQuery, mootools, dojo y scriptaculous a través de Wicket Stuff (subproyecto incubadora de componentes). – Esko

+0

Tapiz 5 permite separar el marcado y el código, pero no lo aplica como Wicket. – Sergey

5

He usado GWT para un par de pequeños proyectos. Aquí hay algunas cosas que me gustan de él:

  1. Es Ajax por defecto, así que no tuvimos que hacer que haga Ajax, que acaba de llegar junto con el uso de GWT.
  2. Tiene una buena separación entre el cliente y el código del lado del servidor.
  3. Puedo probar mi código de cliente usando junit
  4. Te permite crear aplicaciones nítidas y ágiles, en gran parte porque es ajax.

Cosas que no me gustan:

  1. Algunas cosas no funcionan como se esperaba. Por ejemplo, he visto casos en los que los eventos de clics no se activaron como se esperaba, así que tuve que hacer una solución.
  2. Desplegar automáticamente a Tomcat corriendo en eclipse a veces simplemente deja de funcionar, y nunca podría entender por qué.
3

La mayor pregunta que me haría es ¿por qué está cambiando la capa de presentación? Es un costo muy caro y puedo ver los beneficios de una tecnología que supera a la de los demás por el costo de cambiar ...

+1

Buena pregunta. Nuestra insatisfacción con IceFaces proviene de a) excepciones misteriosas de la carne del infierno - un problema endémico del ciclo de vida de JSF, b) es percibido por muchos como pesado y lento, yc) apoyo de la comunidad pobre. Estamos considerando el cambio para un nuevo proyecto, no nuestra aplicación actual. – rtperson

+0

Es bueno si es para un nuevo proyecto. También siento curiosidad por tu reacción a IceFaces, ya que también la he considerado antes. Cuando se convirtió por primera vez en código abierto hace un tiempo, parecía una solución muy interesante. Pero nunca lo he probado en una aplicación a gran escala ... Muy interesante. –

+1

El gran profesional con IceFaces es que hace que sea muy fácil construir una interfaz compatible con AJAX. Hace esto ocultando mucha complejidad. Pero, por supuesto, hay momentos en los que desea mirar bajo el capó, e IceFaces hace que esto sea más difícil de lo necesario. (continúa ...) – rtperson

0

Me pregunto si usted tiene una capa de servicio distinta del cliente web, algo que los controladores web simplemente invocan para hacer su trabajo.

Si lo hace, la opción de la tecnología de IU web se puede desacoplar de la parte de atrás. Si se expone como un primer servicio web por contrato, puede tener diferentes aplicaciones para compartirlo. Siempre que sus clientes puedan enviar y recibir XML, pueden interactuar con sus servicios. ¿Quieres cambiar a Flex? No se preocupe: apúntelo al servicio y represente la respuesta XML.

+0

Esa es una buena idea. Nuestras capas están en gran medida desacopladas, aunque no con la fuerza SOA. Y, si bien usamos servicios web aquí, el rendimiento entre nuestra presentación y las capas de servicio es suficiente como para que esta vez no avancemos en esa dirección. – rtperson

2

En resumen:

= JSF =

PROS:

  • arquitectura de componentes;
  • muchas bibliotecas & herramientas;
  • tanto un buen soporte IDE

CONTRA:

  • de peso pesado, tanto en CPU/memoria y curva de aprendizaje;
  • cuando algo no funciona como se esperaba, es difícil de depurar

= = WICKET

PROS:

  • ligera;
  • sistema de plantillas sensibles;
  • buenos tutoriales;

CONTRA:

  • documentación de referencia no está tan bien organizado y profundo como lo son los tutoriales;
  • El equipo de desarrollo tuvo algunas dificultades serias, especialmente cuando se convirtió en un proyecto incubado. Esto condujo a la confusión en aspectos importantes del marco, en ese momento tuve que cambiar a otro marco debido a esto ...
+0

Wicket ligero? –

+0

En ese momento me pareció liviano ... bueno, al menos más liviano que JSF de todos modos – Megadix

1

Mi selección sería Wicket. Lo he usado y ofrece una excelente reutilización. Tiene uno de los foros/listas de correo más vibrantes. Como una pregunta y va a ser respondida en minutos. Tiene un excelente soporte para AJAX. Una de las desventajas usuales atribuidas a Wicket es la curva de aprendizaje empinada. Bueno, esos eran uno de los contras de la vejez que ya no tienen valor ahora.

JSF: Mejor mantente alejado de él. Otro equipo que desarrolló un proyecto en JSF ahora está pensando en cambiar a Wicket después de nuestro éxito con él.

@Megadix: Como dijo, la documentación era pobre al principio, pero ya no. Existe un excelente libro llamado Wicket in Action escrito por los desarrolladores de Wicket. El código de muestra proporcionado en el sitio también es un buen lugar para comenzar y aprender