martedì 25 settembre 2007

Wicket mumbling

Da qualche giorno sto studiando Wicket, perchè mi farebbe comodo (e forse mi servirà a tutti gli effetti) un web framework a componenti (o component oriented).

Component oriented significa in soldoni che la pagina si ottiene aggregando blocchi ottenuti lato server attraverso il framework stesso. Un pò come si realizza un software con Delphi o Visual Basic, solo che su Internet è tutto più difficile :-)
Un approccio del genere è utile quando la pagina web è dinamica anche nella struttura e/o i suoi componenti hanno una complessità per cui è utile impacchettarli e rituilizzarli dove servono.

L'ho preferito a Click e ThinWire, perchè Click mi è sembrato portatore sano di cattive pratiche: in teoria si potrebbero scrivere pagine JSP, con blocchi Velocity e classi Java a miscelare il tutto. Sodoma e Gomorra... :-D
ThinWire mi sembra invece orientato ad applicazioni web definitivamente client, basta vedere le demo sul sito...

Wicket impone una scelta radicale. Mai più logica sulla pagina web, un banale foreach, un <%=%> sbarazzino, nulla...
Su questo possiamo essere tutti d'accordo senza troppa fatica, separazione di logica da presentazione pura e dura. Mi proccupa di più invece che ogni singolo intervento di manutenzione richieda la disponibilità di un ambiente Java, compilatore incluso.
Potrebbe anche essere positivo, uno stimolo a curare ogni rilascio nei minimi dettagli, e forse alla lunga questo approccio purista darà i suoi frutti anche in termini di organizzazione del lavoro.

Però, cari amici di Wicket, una mano datela anche voi :-)
Su sito non c'è un articolo introduttivo, la documentazione è un wiki molto poco strutturato e non rimane che cercare articoli in giro o scaricare gli esempi(*).

L'impostazione di default è quantomeno curiosa: la pagina HTML dovrebbe stare nello stesso package della classe che la mappa sul lato server.
Cioè se io realizzo una Login.html, dovrei salvarla nel package com.acme.businessenterpriseapplication assieme alla corrispondente Login.java.

E' vero che questo comportamento è configurabile ma, a parte il fatto che la configurazione cambia con la versione di Wicket, perchè non permettere di default (magari con un parametro nella servlet) di scegliere la posizione in cui tenere le pagine?

Non che stia bocciando Wicket, tutt'altro. Leggendo in giro viene fuori una notevole robustezza delle idee che ci stanno dietro, ma perchè non fornire un bel paragrafo Introduction in cui mettere da subito un codice minimale funzionante?

Sembra quasi un test d'ingresso... :-D

(*) Mi sono espresso male, non che manchino le informazioni. Io però non ho trovato il classico articolo di startup che spieghi, magari superficialmente, come mettere in piedi la prima semplice applicazione. C'è qualcosa, ma legato a Maven 2, ma io uso Maven 1 e poi non è obbligatorio usare Maven con Wicket.
Può darsi che abbia cercato male io, ma anche questo è indice di non perfetta organizzazione del sito. Io mi aspetto (e in genere è così) che nei primissimi link della homepage ci sia quello al classico articolo di Hello World.

Nessun commento: