tutorial traduccion quickstart meaning examples deporte java frameworks wicket

java - traduccion - wicket quickstart



¿Cuáles son las desventajas de Apache Wicket? (8)

Considero que el wicket es realmente útil, pero estas serían las desventajas que he encontrado hasta ahora:

  • Documentación escasa: aún no he encontrado una guía definitiva para wicket, aunque hay artículos excelentes y un par de libros.
  • Las URL de Wicket son feas por defecto
  • No puede definir dinámicamente los árboles de componentes, ya que tiene que definirlos tanto en el diseño HTML como en el código Java

He leído mucho sobre las cosas buenas de Apache Wicket , pero es difícil encontrar las cosas malas. Dado que ningún marco es siempre la solución adecuada para cada problema, ¿cuáles son las desventajas de Wicket y en qué tipo de proyectos no lo usaría?

Tal vez no sea una pregunta popular, pero creo que es una pregunta importante.


En el mundo real, la velocidad de desarrollo es muy lenta con Wicket. Si no tiene un componente previamente enlatado para usar como un trabajador de fábrica en una línea de montaje, la productividad se detiene hasta que pueda hacer un nuevo Panel. La complejidad del código aumenta y es difícil leer el código porque efectivamente está duplicando las líneas de código que tiene que escribir. Usted está constantemente buscando cómo hacer cosas triviales en Internet y en los libros. Por ejemplo, un simple botón de reinicio es una línea de HTML, pero en Wicket requiere que Google haga esto. Hace que las cosas simples sean difíciles y las cosas difíciles son imposibles.

Todavía tengo que ver una interfaz de usuario realmente complicada construida con Wicket. Solo las interfaces de usuario simples compuestas de componentes pre-enlatados son posibles con Wicket. Cada UI que he visto construida con Wicket podría haber tenido una base de código más limpia si no se hubiera hecho en Wicket y se escalaría mejor al eliminar Wicket. Wicket no te compra nada tan bueno como los widgets de interfaz de usuario también. Incluso las implementaciones de jQuery UI de Wicket son inferiores a la simple utilización de jQuery UI directamente.

Después de leer decenas de miles de líneas de código Wicket en mi trabajo, puedo decir que el código Wicket es básicamente un código espagueti. Si le gustan los códigos ulgy, poco elegantes, verbosos, codificados con genéricos y clases internas anónimas en todo el lugar, Wicket es lo suyo. La cantidad de ruido de la línea es muy alta. El código base se vuelve menos mantenible debido a esto. Esto es especialmente cierto si utiliza la implementación defectuosa de Wicket AJAX.


Hay dos cosas que me parecieron molestas con Wicket:

  • Las llamadas Ajax se realizan de forma síncrona (están en el lado del cliente en la cola para evitar problemas de concurrencia), por lo que Ajax es solo JAX, en realidad. EDIT: aparentemente estaba equivocado acerca de esto, vea el comentario de marting-b a continuación.

  • Parece que a la API no le importa mucho la encapsulación, por lo que encontrará muchos métodos públicos documentados como "Esto no es parte de la API pública. No invoque este método". (o algo similar).


Mi principal problema con Apache Wicket es la falta de un buen material de referencia en línea. He realizado búsquedas extensas en Google para encontrar ejemplos de cosas simples como cuadros de selección, y me fue muy difícil encontrar algo que me ayudara no solo a hacer funcionar un cuadro de selección, sino también a comprender por qué lo hago de esa manera. Además, allí he buscado mucho y no he encontrado un buen resumen básico de los conceptos clave de cómo construir una aplicación Wicket.

En esta época, no debería tener que comprar un libro para aprender un marco de programación web. Todas las preguntas de programación web que he tenido han sido respondidas con algunas búsquedas de Google. En contraste, todavía hay algunas partes de Wicket que no entiendo porque no he encontrado ninguna documentación decente, y hacer preguntas en los foros es limitado porque no tengo lo que creo que es una comprensión sólida de Wicket después de leer solo en línea documentación.


No he usado Wicket, así que adelante, voten abajo si es necesario, pero Wicket está basado en componentes. Si prefieres una solución basada en componentes, entonces eso no será una desventaja para ti, pero encontré un marco basado en componentes competidores restrictivo.

Habiendo pasado de un par de años de JSF (también un modelo basado en componentes) a Spring MVC (más basado en la acción) sentí como si se hubieran levantado los grilletes. El tercer punto en la respuesta de mgv, "No puede definir dinámicamente los árboles de componentes, ya que tiene que definirlos tanto en el diseño HTML como en el código de Java" resume gran parte de la causa de mi frustración.


Varias respuestas declaran que wicket no puede crear dinámicamente un árbol de componentes . En serio, creo que ustedes están trabajando con una ventanilla diferente allí;)

En primer lugar: Wicket está basado en componentes, no en un generador HTML aleatorio.

En realidad, es bastante fácil obtener un árbol de componentes dinámico:

¿Quieres reemplazar un componente con otro? Use Component.replaceWith (Component) (bastante útil junto con un MarkupContainer vacío)

¿Necesita una lista de paneles que cambia dinámicamente? Ponerlos en un repetidor.

Hacer desaparecer un componente? Utilizar Componente.setVisible ()

Y un montón más de formas de hacer esto.

Entonces, aquellos que piensan que no pueden hacer árboles de componentes dinámicos, por favor proporcionen algunos ejemplos y me complace discutir sobre ellos.

(Si realmente necesita ser aún más flexible, puede hacer un marcado de carga Wicket desde diferentes fuentes. Algo que NUNCA hice para construir árboles dinámicos, sino para poder recuperar el Marcado de una base de datos o a través de una red)


Vea mi respuesta aquí:

https://.com/questions/5489712/why-would-someone-choose-wicket-over-struts-2-or-other-framework-or-viceversa/5491686#5491686

Por supuesto, los mencioné como ventajas, pero es fácil ver por qué alguien siente lo contrario.

Si bien no hay nada que no puedas hacer en Wicket, hay ciertos conceptos subyacentes (no lo llamaría una filosofía porque odio el uso excesivo de esta palabra) que deberías seguir. Cuanto más te alejes de ese concepto, más difícil se vuelve hacer calzadas en Wicket.


Wicket exige algunas prácticas de codificación bastante sólidas. Por ejemplo, si almacena un IModel en su Componente, pero no lo usa como modelo del componente, no se separará automáticamente y puede aumentar el tamaño de su sesión. Este tipo de gestión no es algo a lo que la mayoría de los usuarios de Java están acostumbrados.

Wicket está activo y actualizado con frecuencia. Esto es bueno, pero cada vez que actualizo a una nueva versión, me doy cuenta de que necesito hacer mucha refactorización para pasar a mejores prácticas de codificación (1.4 genéricos introducidos, 1.4.x introducido onConfigure (), 1.5 tiene algunas estrategias de recursos diferentes ). Una vez más, todas son buenas actualizaciones y te empujan hacia un mejor código, pero envidio a las personas que vienen a Wicket AHORA en lugar de hace dos años :)

Combinando los dos anteriores, siento que Wicket asume cierta habilidad de programación real una vez que superas el conjunto de características básicas. Si eres un buen desarrollador, te encantará lo que Wicket puede hacer por ti (y el código está bastante bien documentado en JavaDoc). Si eres un principiante, puedes sentirte frustrado a medida que profundizas.

Además, aunque "funciona" en Google App Engine, encontré varios problemas que impedían que funcionara cómodamente en ese entorno. Eso es para una discusión diferente.

Mi descargo de responsabilidad es que no he usado nada más, así que quizás otros marcos sean peores.