AGGIORNAMENTO: Tapestry 5.2 è uscito, quindi non è stato abbandonato, come sembrava in precedenza. La mia esperienza riguarda Tapestry 4, non 5, quindi il tuo chilometraggio potrebbe variare. La mia opinione su Tapestry è cambiata negli anni; Ho modificato questo post per rispecchiarlo.
Non posso più raccomandare Tapestry come facevo in precedenza. Tapestry 5 sembra essere un miglioramento significativo, ma il mio problema principale con Tapestry non è con la piattaforma stessa; è con le persone dietro.
Storicamente, ogni aggiornamento delle versioni principali di Tapestry ha rotto la retrocompatibilità con estremo pregiudizio, molto più di quanto ci si potrebbe aspettare. Ciò sembra essere dovuto all'incorporazione di nuove tecniche o tecnologie di codifica che richiedono significative riscritture.
Howard Lewis Ship (l'autore principale di Tapestry) è certamente uno sviluppatore brillante, ma non posso dire che mi interessi della sua gestione del progetto Tapestry. Lo sviluppo di Tapestry 5 è iniziato quasi immediatamente dopo la spedizione di Tapestry 4. Da quello che posso dire, Ship si è praticamente dedicato a questo, lasciando Tapestry 4 nelle mani di altri collaboratori, che secondo me non sono capaci quanto Ship. Dopo aver fatto il doloroso passaggio da Tapestry 3 a Tapestry 4, ho sentito di essere stato abbandonato quasi immediatamente.
Ovviamente, con il rilascio di Tapestry 5, Tapestry 4 è diventato un prodotto legacy. Non avrei problemi con questo se il percorso di aggiornamento non fosse di nuovo così brutale . Quindi ora il nostro team di sviluppo si trova in una posizione piuttosto poco invidiabile: potremmo continuare a utilizzare una piattaforma web essenzialmente abbandonata (Tapestry 4), fare l'aggiornamento atroce a Tapestry 5, o rinunciare completamente a Tapestry e riscrivere la nostra applicazione usando un'altra piattaforma. Nessuna di queste opzioni è molto attraente.
Tapestry 5 è presumibilmente scritto in modo da ridurre la probabilità di interruzioni dell'aggiornamento da questo punto in avanti. Un buon esempio è nelle classi di pagina: nelle incarnazioni precedenti, le classi di pagina discendevano da una classe base fornita da Tapestry; le modifiche alle API incompatibili in questa classe sono state la causa di un gran numero di problemi di compatibilità con le versioni precedenti. In Tapestry 5, le pagine sono POJO che vengono migliorate in fase di esecuzione con la "polvere magica di Tapestry" tramite annotazioni. Quindi, finché il contratto per le annotazioni viene mantenuto, le modifiche a Tapestry non influiranno sulle classi di pagina.
Se è corretto, scrivere una nuova applicazione utilizzando Tapestry 5 potrebbe andare bene. Ma personalmente non ho voglia di mettere di nuovo la mano sul fornello.