Quali sono i pro e i contro dei vari framework web Java?

Sto pensando di creare il mio sito Web utilizzando Java e sto cercando di decidere quale framework utilizzare. Tuttavia, fare una rapida ricerca di framework Java restituisce più di 50 tra cui scegliere!

Il mio sito web sarà solo per il mio piacere di costruirlo all’inizio, ma se diventerà popolare, sarebbe bene che avesse una certa scalabilità, o almeno fosse in grado di riprogettarlo per quello.

Quali sono le principali differenze tra i framework più popolari? Ci sono casi in cui uno supera in modo significativo gli altri? Ad esempio, le applicazioni aziendali a traffico elevato rispetto alle piccole applicazioni a basso traffico. Mi sto anche chiedendo se alcuni sono molto più facili da imparare e da usare rispetto ad altri.

C’è qualcuno che ha esperienza con alcuni di questi framework e può fare una raccomandazione? Il semplice numero di scelte serve solo come avvertimento per evitare lo sviluppo web basato su Java dove ansible?

    Ho usato Tapestry 3 , Wicket , Echo e JSF abbastanza ampiamente. Ti consiglio davvero di guardarli e scegliere quello che sembra il più facile per te, e per adattarti al meglio al modo in cui preferisci lavorare.

    Tra questi, il più comodo per me con cui lavorare era Wicket , a causa della natura leggera della creazione di componenti e della semplicità dei modelli di pagina. Questo vale doppiamente se si utilizza il proprio codice db invece di Hibernate o qualche altro framework (non sono mai stato completamente soddisfatto di Wicket Hibernate o Spring Integration).

    Echo è fantastico se non ti dispiace scrivere tutto il tuo layout in Java. So che ora è diverso, ma continuo a pensare che il prodotto serva una nicchia piuttosto ristretta. Cambiano anche il modello di sviluppo con tutte le versioni principali.

    Tapestry è un ottimo prodotto, ma è ovviamente molto diverso dagli altri in termini di modello di sviluppo in quanto è guidato principalmente da un tizio. Howard Lewis Ship è senza dubbio abbastanza intelligente, ma sono deluso dalla loro decisione di dimenticare fondamentalmente la retrocompatibilità con ogni versione. Ancora una volta, però, per le tue esigenze questo potrebbe non avere importanza, e ho sempre trovato i prodotti di Tapestry piacevoli contro cui lavorare.

    JSF è stato fuori per anni e sembra ancora qualcosa che un ragazzo di Struts ha costruito per risolvere tutti i problemi di Struts. Senza capire veramente tutti i problemi con Struts. Ha ancora un aspetto incompleto, anche se il prodotto è ovviamente molto flessibile. Lo uso e ho una certa predilezione per questo, con grandi speranze per il suo futuro. Penso che la prossima versione (2.0) da consegnare in JEE6 lo porterà davvero a se stesso, con una nuova syntax del template (simile a Facelets) e un modello di componente semplificato (componenti personalizzati in un solo file … finalmente).

    E, naturalmente, ci sono un milione di framework e strumenti più piccoli che ottengono il loro seguito ( Velocity per i bisogni di base, JSP grezzi, Struts, ecc.). Generalmente preferisco i framework orientati ai componenti, però.

    Alla fine, ti consiglio di dare un’occhiata a Tapestry, Wicket e JSF e scegliere quello che ti sembra il migliore. Probabilmente ne troverai uno che si adatta esattamente al tuo modo di lavorare molto velocemente.

    Il mio preferito è il Framework di spring. Con 2.5 Spring MVC è davvero stupefacente, con nuove annotazioni, convenzione sulle funzioni di configurazione, ecc.

    Se stai semplicemente facendo qualcosa di super semplice, potresti anche provare a utilizzare la normale API Servlet e non preoccuparti di un framework.

    Raccomando il framework Wicket orientato ai componenti. Ti permette di scrivere la tua applicazione web in un semplice codice Java vecchio, puoi usare POJO come modello per tutti i componenti e non hai bisogno di scherzare con enormi file di configurazione XML.

    Ho sviluppato con successo un’applicazione di banking online con Struts quando ho scoperto Wicket e ho visto quanto può essere facile lo sviluppo di applicazioni web!

    Recentemente ho iniziato a utilizzare Stripes Framework . Se stai cercando un framework basato su richiesta che sia davvero facile da usare, ma non imponga limiti a ciò che stai facendo, lo consiglio vivamente.

    È simile ai puntoni, ma va ben oltre. Ci sono anche alcuni progetti di plugin che ti permettono di usare hibernate o jpa con pochissima configurazione.

    Ci sono molte buone strutture là fuori anche se ho sentito che wicket è buono, ma non l’ho usato.

    Non l’ho provato da solo, ma penso

    http://www.playframework.org/

    ha un sacco di potenziale …

    derivando da php e classic asp, è il primo framework web java che mi sembra promettente ….

    AGGIORNAMENTO: Tapestry 5.2 è fuori, quindi non è abbandonato, come in precedenza sembrava essere. La mia esperienza è con Tapestry 4, non 5, quindi il tuo chilometraggio può variare. La mia opinione su Tapestry è cambiata nel corso degli anni; Ho modificato questo post per rifletterlo.

    Non posso più raccomandare Tapestry come ho fatto 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 di esso.

    Storicamente, tutti gli aggiornamenti delle versioni principali di Tapestry hanno rotto la compatibilità con i pregiudizi estremi, molto più di quanto ci si potrebbe aspettare. Ciò sembra dovuto all’incorporazione di nuove tecniche o tecnologie di codifica che richiedono riscritture significative.

    Howard Lewis Ship (il principale autore di Tapestry) è certamente uno sviluppatore geniale, ma non posso dire che mi interessi per la sua gestione del progetto Tapestry. Lo sviluppo di Tapestry 5 è iniziato quasi subito dopo la spedizione di Tapestry 4. Da quello che posso dire, Ship si è praticamente dedicato a questo, lasciando Tapestry 4 nelle mani di altri contributori, che ritengo non siano all’altezza di Ship. Dopo aver fatto il doloroso passaggio da Tapestry 3 a Tapestry 4, ho sentito di essere stato abbandonato quasi immediatamente.

    Ovviamente, con l’uscita di Tapestry 5, Tapestry 4 è diventato un prodotto legacy. Non avrei alcun problema se il percorso di aggiornamento non fosse di nuovo così brutale. Così ora il nostro team di sviluppo si trova nella posizione poco invidiabile: potremmo continuare a utilizzare una piattaforma web essenzialmente abbandonata (Tapestry 4), effettuare l’atroce upgrade a Tapestry 5, o rinunciare interamente a Tapestry e riscrivere la nostra applicazione utilizzando un’altra piattaforma. Nessuna di queste opzioni è molto interessante.

    Tapestry 5 è presumibilmente scritto in modo da ridurre la probabilità di rottura degli aggiornamenti da questo punto in avanti. Un buon esempio è nelle classi di pagine: nelle precedenti incarnazioni, le classi di pagine discendono da una class base fornita da Tapestry; le modifiche API incompatibili in questa class sono state la causa di un numero elevato di problemi di compatibilità con le versioni precedenti. In Tapestry 5, le pagine sono POJO che vengono potenziate in fase di esecuzione con la “polvere magica di Tapestry Tapestry” tramite annotazioni. Pertanto, finché il contratto per le annotazioni viene mantenuto, le modifiche a Tapestry non influiranno sulle classi di pagine.

    Se questo è giusto, allora scrivere una nuova applicazione usando Tapestry 5 potrebbe rivelarsi efficace. Ma personalmente, non ho voglia di mettere di nuovo la mano sul bruciatore.

    Disclamer: lavoro a Vaadin (precedentemente IT Mill)

    Se stai facendo qualcosa di RIAish, potresti voler dare un’occhiata a Vaadin . È un framework AJAX orientato alla UI open source che, per me, è piacevole da usare (provengo anch’io da una base PHP).

    C’è un case study che mette a confronto la stessa applicazione (cioè due applicazioni con lo stesso set di funzionalità) in Icefaces e Vaadin. In poche parole, afferma che lo sviluppo dell’interfaccia utente è stato considerevolmente più veloce.

    Anche se lo studio è ospitato nella wiki dell’azienda, posso assicurare che è oggettivo, genuino e sincero, anche se non posso costringerti a credermi.

    Dopo un lungo periodo di test di varie soluzioni, per me è risultato essere:

    • Spring MVC per il livello di presentazione e controller (NO Spring Webflow però, perché i miei flussi sono basati su ajax)

    • jQuery per tutte le cose sul lato client

    • Spring Security per l’aspetto, beh, sicurezza

    • Ibernare / JPA2

    • Jetty in vista di continuazioni (cometa)

    Un mese di una curva di apprendimento straordinariamente ripida, ma ora sono felice.

    Vorrei anche menzionare che ero solo un piccolo passo per saltare tutta quella roba Java e accendere invece Scala / LIFT. Per quanto mi riguarda, tutto ciò che in Java è collegato con lo sviluppo del web all’avanguardia (cometa, comunicazione asincrona, sicurezza (sì, anche con Spring Security!)) È ancora un po ‘incisivo (dimostratemi sbagliato dalle prove, pleeease !). Per me, Scala / LIFT sembra essere una soluzione più pronta e all-in-one.

    Il motivo per cui alla fine ho deciso di non andare con Scala è

    • come capo progetto devo considerare le risorse umane e gli sviluppatori Java sono molto più facili da trovare rispetto agli sviluppatori Scala

    • per la maggior parte degli sviluppatori del mio team, il concetto funzionale di Scala, per quanto eccellente, è difficile da capire

    Saluti Er

    Ho sentito cose positive anche su Spring Framework. In generale, però, sono rimasto deluso dalla maggior parte dei framework web Java che ho visto (esp Struts).

    Per una semplice app, prenderei sicuramente in considerazione l’utilizzo di servlet e JSP “non elaborati” e non ci preoccuperemo di adottare un framework. Se i servlet sono ben scritti, in futuro dovrebbe essere semplice portarlo su un framework, se necessario, quando l’app diventa più complessa.

    La mia scelta è Wicket !!

    Tutti loro – questo è il problema 😉

    Penso che per i tuoi modesti requisiti, hai solo bisogno di codificare servlet o semplici pagine jsp che puoi servire dal server Tomcat. Non penso che tu abbia bisogno di alcun tipo di struttura web (come i puntoni) per i dati personali del sito web

    Dire “usare JSF” è un po ‘troppo semplice. Quando decidi di utilizzare JSF, devi scegliere una libreria di componenti su di essa. Utilizzerai MyFaces Tomahawk, Trinidad, Tobago ( http://myfaces.apache.org/ )? O forse ICEfaces ( http://www.icefaces.org/ )? Oh, e se usi ICEfaces, userai JSP o Facelets per le tue visualizzazioni?

    Secondo me è difficile da dire. Nessuno ha il tempo di valutare tutte le alternative promettenti, almeno nei progetti su cui lavoro, perché non sono abbastanza grandi per fare fasi di valutazione di tre mesi. Tuttavia, dovresti cercare qualcuno che abbia una comunità grande e triggers e non se ne vada in un anno. JSF è in giro da un po ‘di tempo, e dal momento che viene spinto dal sole, sarà in giro per un po’ di più. Non posso dire se è la scelta migliore, ma sarà una buona scelta.

    http://zkoss.org – il buono

    Per i siti ad alto traffico, utilizzerei un framework che non gestisce lo stato client sul server: Wicket, JSF e Tapestry gestiscono lo stato client sul server. Userei solo quei framework (Wicket è il mio preferito) se l’applicazione dovesse essere più simile a un’applicazione desktop. Tuttavia, proverei a utilizzare un approccio REST + AJAX più scalabile e semplice.

    Spring MVC sarebbe un candidato, ma dal momento che Spring MVC 3 ha un modello di programmazione sovraccarico di annotazione strano che non utilizza i vantaggi della digitazione statica. Ci sono altre cose brutte come i parametri di output in metodi combinati con un ritorno normale, quindi ci sono due canali di output di un metodo. Spring MVC tende anche a reinventare la ruota e avrai più da configurare rispetto ad altri framework. Non posso davvero raccomandare Spring MVC anche se ha delle belle idee.

    Grails è un modo conveniente per utilizzare Spring MVC e altri framework consolidati come Hibernate. La codifica è divertente e vedrai rapidamente i risultati.

    E non dimenticare che l’API Servlet con alcuni piccoli helper come FreeMarker per i template è molto potente.

    Ho valutato alcuni framework e Vaadin ( http://vaadin.com/home ) ha percolato fino in cima.

    Dovresti almeno dargli una breve valutazione.

    Saluti!

    La mia scelta sarebbe Wicket (per progetti di grandi dimensioni e una base di utenti prevedibile), GWT (per progetti di grandi dimensioni che sono prevalentemente pubblici) o semplicemente un framework di servizi (come Jersey / JAXRS) insieme a un toolkit JavaScript (per progetti di piccole e medie dimensioni) .

    Raccomando Seam, soprattutto se hai bisogno di persistenza.

    Vedere alcuni commenti su alcuni framework di applicazioni Java (secondo paragrafo):

    http://swiss-knife.blogspot.com/2009/11/some-java-application-servers.html

    Per una GUI rapida e di fantasia , puoi utilizzare JSF con la libreria Richfaces . I componenti dell’interfaccia utente di Richfaces sono semplici e pratici riferimenti disponibili con dimostrazione del codice nel sito demo. Probabilmente più tardi, quando il tuo sito ha più dati da gestire e molte informazioni devono essere trasferite nel database, puoi colbind qualsiasi ORM (Database Access Framework) con esso.

    Non posso credere che nessuno abbia menzionato GWT

    Il mio modo preferito per fare app davvero semplici è Apache VelocityTools (VelocityLayoutServlet) con Velosurf ( http://velosurf.sourceforge.net ).

    Per applicazioni più complesse, Spring MVC o Struts 2.

    Prova HybridJava – è molto più semplice di qualsiasi altra cosa.

    Direi vaadin o wicket