Domanda

Sto pensando di creare il mio sito web utilizzando Java e sto cercando di decidere quale framework utilizzare.Tuttavia, facendo una rapida ricerca di framework Java ne vengono restituiti più di 50 tra cui scegliere!

All'inizio il mio sito web sarà solo per il mio divertimento nel costruirlo, ma se diventasse popolare, sarebbe positivo che avesse una certa scalabilità, o almeno fosse in grado di riprogettarlo per quello.

Quali sono le principali differenze tra i framework più diffusi?Ci sono casi in cui uno supera significativamente gli altri?Ad esempio, applicazioni aziendali ad alto traffico rispetto a piccole applicazioni a basso traffico.Mi chiedo anche se alcuni siano molto più facili da imparare e utilizzare rispetto ad altri.

C'è qualcuno che ha esperienza con alcuni di questi framework e può dare una raccomandazione?L’enorme numero di scelte serve solo come avvertimento precoce per evitare, ove possibile, lo sviluppo web basato su Java?

È stato utile?

Soluzione

ho usato Arazzo 3, Portello, Eco, E JSF abbastanza ampiamente.Ti consiglio davvero di esaminarli e scegliere quello che ti sembra più facile e che si adatta meglio al modo in cui preferisci lavorare.

Di loro, quello con cui mi è stato più comodo lavorare è stato Portello, a causa della natura leggera della creazione dei componenti e della semplicità dei modelli di pagina.Ciò vale doppiamente se stai utilizzando il tuo codice db invece di Hibernate o qualche altro framework (non sono mai stato completamente soddisfatto di Wicket Hibernate o Spring Integration).

Eco è fantastico se non ti dispiace scrivere tutto il tuo layout in Java.So che ora è diverso, ma penso ancora che il prodotto serva una nicchia abbastanza ristretta.Sembra che cambino anche il modello di sviluppo con ogni versione principale.

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

JSF è uscito da anni e sembra ancora qualcosa che a Puntoni ragazzo costruito per risolvere tutti i problemi di Struts.Senza comprendere veramente tutti i problemi di Struts.Ha ancora un aspetto incompiuto, anche se il prodotto è ovviamente molto flessibile.Lo uso e ne ho una certa predilezione, con grandi speranze per il suo futuro.Penso che la prossima versione (2.0) che sarà distribuita in JEE6 lo porterà davvero al meglio, con una nuova sintassi del modello (simile a Facelets) e un modello di componente semplificato (componenti personalizzati in solo 1 file...Finalmente).

E, naturalmente, ci sono un milione di framework e strumenti più piccoli che ottengono il loro seguito (Velocità per i bisogni primari, crudo JSP, puntoni, ecc.).In genere, però, preferisco i framework orientati ai componenti.

Alla fine, ti consiglio di dare un'occhiata a Tapestry, Wicket e JSF e scegliere quello che ti sembra migliore.Probabilmente ne troverai uno che si adatta perfettamente al modo in cui ti piace lavorare molto velocemente.

Altri suggerimenti

Il mio preferito è Spring Framework.Con 2.5 Spring MVC è davvero fantastico, con nuove annotazioni, convenzioni sulle funzionalità di configurazione, ecc.

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

Raccomando il componente orientato Portello struttura.Ti consente di scrivere la tua applicazione web in un semplice vecchio codice Java, puoi utilizzare POJO come modello per tutti i componenti e non è necessario perdere tempo con enormi file di configurazione XML.

Avevo sviluppato con successo un'applicazione bancaria online con Struts quando ho scoperto Wicket e ho visto quanto può essere semplice lo sviluppo di applicazioni web!

Recentemente ho iniziato a utilizzare il Quadro a strisce.Se stai cercando un framework basato su richieste che sia davvero facile da usare, ma che non imponga alcun limite a ciò che stai facendo, lo consiglio vivamente.

È simile ai montanti, ma va ben oltre.Esistono anche alcuni progetti di plugin che ti consentono di utilizzare hibernate o jpa con pochissima configurazione.

Ci sono molti buoni framework là fuori, anche se ho sentito che anche wicket è buono, ma non l'ho usato.

Non l'ho provato personalmente, ma penso

http://www.playframework.org/

ha un sacco di potenziale...

proveniente da php e asp classico, è il primo framework web Java che mi sembra promettente....

AGGIORNAMENTO:Tapestry 5.2 è uscito, quindi non è stato abbandonato, come sembrava essere in precedenza.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ù consigliare Tapestry come ho fatto in precedenza.Tapestry 5 sembra rappresentare un miglioramento significativo, ma il mio problema principale con Tapestry non riguarda la piattaforma stessa;è con le persone dietro di esso.

Storicamente, ogni importante aggiornamento della versione di Tapestry ha interrotto la retrocompatibilità con estremi pregiudizi, molto più di quanto ci si potrebbe aspettare.Ciò sembra essere dovuto all’incorporazione di nuove tecniche o tecnologie di codifica che richiedono riscritture significative.

Howard Lewis Ship (l'autore principale di Tapestry) è certamente uno sviluppatore brillante, ma non posso dire che mi interessi la 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 è dedicato praticamente a questo, lasciando Tapestry 4 nelle mani di altri contributori, che ritengo non siano altrettanto capaci di Ship.Dopo aver effettuato il doloroso passaggio da Tapestry 3 a Tapestry 4, ho sentito di essere stato abbandonato quasi immediatamente.

Naturalmente, con il rilascio di Tapestry 5, Tapestry 4 è diventato un prodotto legacy.Non avrei problemi con questo se il percorso di aggiornamento non fosse così brutale Ancora.Quindi ora il nostro team di sviluppo si trova in una posizione poco invidiabile:Potremmo continuare a utilizzare una piattaforma web sostanzialmente abbandonata (Tapestry 4), effettuare l'atroce aggiornamento a Tapestry 5 o rinunciare completamente a Tapestry e riscrivere la nostra applicazione utilizzando un'altra piattaforma.Nessuna di queste opzioni è molto attraente.

Si suppone che Tapestry 5 sia scritto in modo da ridurre la probabilità di interruzione 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 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 fata Tapestry" tramite annotazioni.Pertanto, finché viene mantenuto il contratto per le annotazioni, le modifiche a Tapestry non influenzeranno le classi delle pagine.

Se questo è corretto, scrivere una nuova applicazione utilizzando Tapestry 5 potrebbe rivelarsi positivo.Ma personalmente non me la sento di mettere nuovamente la mano sul fuoco.

Dichiarazione di non responsabilità:Lavoro presso Vaadin (precedentemente IT Mill)

Se stai facendo qualcosa di RIAish, potresti dare un'occhiata Vaadin.È un framework AJAX open source orientato all'interfaccia utente che, per me, è piacevole da usare (vengo anch'io da un background PHP).

C'è un argomento di studio che equivale a fare la stessa applicazione (ad es.due applicazioni con lo stesso set di funzionalità) in Icefaces e Vaadin.In poche parole, si afferma che lo sviluppo dell'interfaccia utente è stato notevolmente più veloce.

Anche se lo studio è ospitato sul wiki dell'azienda, posso assicurare che è obiettivo, genuino e veritiero, anche se non posso costringerti a credermi.

Dopo aver provato a lungo varie soluzioni, per me si è rivelata:

  • Spring MVC per la presentazione e il livello del controller (nessun flusso di web primaverilo, perché i miei flussi sono basati su Ajax)

  • jQuery per tutte le cose lato client

  • Spring Security per l'aspetto, beh, della sicurezza

  • Ibernazione/JPA2

  • Molo per il bene della continuazione (cometa)

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

Vorrei anche menzionare che ero solo a un passo dal saltare tutta quella roba Java e imparare invece Scala/LIFT.Per quanto mi riguarda, tutto ciò che in Java ha a che fare con lo sviluppo web all'avanguardia (comet, comunicazione asincrona, sicurezza (sì, anche con Spring Security!)) è ancora un po' un trucchetto (dimostratemi che ho torto con le prove, per favore!).A me Scala/LIFT sembra essere una soluzione più pronta all'uso e all-in-one.

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

  • come leader del 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 comprendere

Saluti er

Ho sentito parlare bene anche dello Spring Framework.In generale, però, sono rimasto deluso dalla maggior parte dei framework web Java che ho esaminato (specialmente Struts).

Per un'app semplice, prenderei sicuramente in considerazione l'utilizzo di servlet e JSP "grezzi" e non mi preoccuperei di adottare un framework.Se le servlet sono scritte bene, in futuro dovrebbe essere semplice eseguire il porting su un framework, se necessario, quando l'app diventa più complessa.

La mia scelta è Wicket!!

Tutti - questo è il problema ;-)

Penso che per le tue modeste esigenze, devi solo codificare servlet o semplici pagine jsp che puoi servire dal server Tomcat.Non penso che tu abbia bisogno di alcun tipo di framework web (come i montanti) per i dati personali del sito web

Dire "usa JSF" è un po' troppo semplice.Quando decidi di utilizzare JSF, devi scegliere sopra una libreria di componenti.Utilizzerai MyFaces Tomahawk, Trinidad, Tobago (http://myfaces.apache.org/)?O forse ICEfaces (http://www.icefaces.org/)?Oh, e se usi ICEfaces, utilizzerai JSP o Facelet per le tue visualizzazioni?

Secondo me è troppo difficile dirlo.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 cercarne qualcuno che abbia una comunità grande e attiva e che non se ne vada nell'arco di un anno.JSF è in circolazione per un po' di tempo e, poiché viene spinta dal sole, resterà in circolazione ancora per un po'.Non posso dire se sia la scelta migliore, ma sarà una buona scelta.

http://zkoss.org - quello buono

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

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

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

E non dimenticare che l'API Servlet con alcuni piccoli aiutanti come FreeMarker per i modelli è molto potente.

Ho valutato parecchi framework e Vaadin (http://vaadin.com/home) è filtrato 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 rivolti principalmente al pubblico) 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.

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

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

Per veloce e fantasioso GUI con cui puoi utilizzare JSF Facce ricche biblioteca.I componenti dell'interfaccia utente di Richfaces sono facili da usare e sono disponibili riferimenti utili con la dimostrazione del codice nel sito demo.Probabilmente più tardi, quando il tuo sito avrà più dati da gestire e molte informazioni dovranno essere trasferite nel database, potrai collegarlo a qualsiasi framework di accesso al database (ORM).

Non posso credere che nessuno abbia menzionato GWT

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

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

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

direi vaadin O portello

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top