La migliore libreria di widget GWT? [chiuso]


134

Domanda per tutti i guru GWT là fuori - qual è la migliore libreria di widget GWT là fuori? E perché?

Elenco basato sulle risposte:

И наконец- новое поколение основанное на JsInterop :


Hai dimenticato di includere gwt-mosaic nell'elenco?
Ashwin Prabhu,

2
Questa domanda non era specifica riguardo ai requisiti, quindi prevedibilmente, il più visibile (core GWT) è stato votato anche se non soddisfa tutti i requisiti. Se hai un'applicazione enterprise complessa con molti schermi e un elevato volume di dati e hai bisogno di potenti griglie ed editor, questo è lo scopo di SmartGWT. Il GWT semplice è ottimo per molte app, ma molte aziende con questo specifico set di requisiti valutano GWT e decidono che SmartGWT si adatta meglio. Per avere una panoramica e decidere autonomamente, leggi la Guida rapida. smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf
Charles Kendrick,

ti manca gwt-bootstrap
caarlos0

Ho creato una proposta di sito per dare domande come questa una casa ufficiale fuori dallo Stack Overflow. Si chiama Code Tips per aiutare a renderlo realtà unendosi e ponendo domande ora!
daviewales,

Anche questo sembra promettente: gwt-material-demo.herokuapp.com
kozla13

Risposte:


52

Non impegnarti in QUALUNQUE di queste librerie. Usa Vanilla GWT per creare la struttura del tuo progetto. In particolare, utilizzare il modello MVP e un bus eventi. Consulta l'articolo di Google per sapere come progettare al meglio la tua applicazione client con GWT: creazione di app MVP

Successivamente, è possibile utilizzare qualsiasi widget di queste librerie (ad esempio una tabella o una casella combinata, un datepicker, ecc.) E incorporarlo nel progetto. Prova a utilizzare i componenti estesi SOLO se non vedi un modo per farlo con GWT alla vaniglia. In questo modo non ti leghi a queste librerie che sono SEMPRE una seccatura quando provi a fare qualcosa che non appare nell'applicazione demo, contiene molti bug e il loro supporto è nel migliore dei casi scarso.

Come cercare i widget dovrebbe seguire questo ordine:

Attento con altre biblioteche, ho lavorato con loro (e ho ancora incubi).


1
Qualche esperienza specifica con altre biblioteche che vorresti condividere?
Adam,

6
GXT, non lo consiglierei al mio peggior nemico. Se lo consideri, per favore, prima cercalo su Google e assicurati di sapere dove stai entrando. SmartGWT, un wrapper JS, molto brutto. Scappa lontano da esso. Ho esperienza con entrambi in un vero progetto. Per prima cosa ho usato SmartGWT, ma i suoi limiti mi hanno fatto passare a GXT. Ho scoperto presto il disordine che avevano lì con i legami di forma e i generici di Java (Gesù, ogni volta che ricordo ....) Non so quale sia peggio! L'ho finito, sì, ma ho sofferto immensamente. Successivamente ho imparato a usare GWT alla vaniglia e solo il widget che mi piaceva da altre librerie.
monzonj,

Questo post è vecchio e per sua natura uscirà, ma ho usato GXT ampiamente negli ultimi 2 anni e, sebbene abbia problemi, consente anche la creazione di applicazioni di bell'aspetto con relativa facilità. Ha griglie molto utili, griglie tamponate e griglie vive. SmartGWT ha anche griglie e componenti ben caratterizzati. Considera anche Vaadin .
Carl Pritchett,

43

Dipende da cosa intendi per "migliore". Più bello? La migliore API? La cosa migliore per estenderla alle tue esigenze personalizzate?

Ad esempio, stavo solo valutando le classi di tabella da utilizzare nella nostra applicazione. Abbiamo utilizzato GWT-Ext, ma ha molti problemi di prestazioni per noi ed è molto difficile dimensionare i tavoli nel modo in cui ne abbiamo bisogno. Mi avvicinai molto a GWT-Mosaic , ma decisi invece di costruire i widget nell'incubatore GWT .

Quindi, perché ho fatto questa scelta? Sembra che troppe biblioteche là fuori vengano con il proprio bagaglio, per mancanza di una parola migliore. O devi immergerti completamente in qualche framework MVC (che potrebbe non essere del tutto compatibile con il resto della tua base di codice), o devi adottare il nuovo sistema di layout confuso di qualcuno, o devi convivere con il fatto che non puoi esegue davvero il debug del codice (perché sono solo wrapper JSNI).

Non fraintendetemi, l'incubatore GWT non è perfetto ... i widget ci sono in una certa quantità di flusso. Nel mio caso, questa è stata la scelta migliore, comunque. Mi dà bene (ma sicuramente non perfetto):

  • API
  • Estensibilità
  • Guarda e senti (beh, questo è un po 'debole, ma è a questo che serve CSS).

Quindi ... la risposta (per me) è una combinazione di:

  • Widget GWT di serie (con molti stili personalizzati)
  • Tabelle dell'incubatore GWT
  • Alcuni widget di casa

(Dovrei aggiungere: il "bagaglio" a cui mi riferisco non è necessariamente una cosa negativa. Ma, se vuoi solo un widget o due, può alzare il livello di ciò che serve per portare a termine il tuo lavoro e come buona applicazione sembra.)


La maggior parte delle librerie di widget richiede una licenza a causa della dipendenza da alcune librerie AJAX esterne. Anche questo aggiunge dimensioni extra alla tua soluzione. Si noti inoltre che la maggior parte delle librerie di widget dipende da uno o più componenti esterni aggiuntivi.
IgorM,


10

GWT da solo è una biblioteca abbastanza buona.

Non ho usato tutti quelli citati, ma posso raccomandare Ext GWT .


2
Sono d'accordo con GWT nudo. Insieme ai progetti di incubatori ( code.google.com/p/google-web-toolkit-incubator ), puoi implementare praticamente qualsiasi cosa. Ho usato MyGwt ma fa schifo quando chiudono il progetto e ne cambiano il nome e tutti i forum e il supporto, la licenza viene cambiata
Robert Childan,

1
Deve essere terribile. Non è un modo molto pratico per mantenere un software.
DragonBorn,

9

Preferisco la vaniglia GWT. Alcune delle altre API sembrano belle e le loro vetrine mettono davvero in mostra i widget, ma trovo sempre che le prestazioni non siano le migliori .... quando dico prestazioni intendo più come i tempi di risposta. Odio quando un'applicazione sembra lenta.


8

La maggior parte delle librerie citate non sono open source e peggio ancora: sono solo wrapper sopra una libreria JavaScript. La potenza di GWT sta nel fatto che l'applicazione funziona su diversi browser (a causa della generazione di codice per i browser "grandi" in particolare). Queste librerie sottostanti JavaScript possono causare molti problemi.

Sono d'accordo con jgindin GWT Incubator e GWT Mosaic sono i migliori finora.


Molto fuorviante. Quasi tutte le librerie elencate sono open source con licenze commerciali (Apache, BSD, LGPL) ad eccezione di ExtGWT (GPL). Inoltre, anche nel set di componenti molto limitato attualmente fornito, GWT ha molti bug tra browser: è sufficiente cercare nel loro database di bug per verificarlo. Il compilatore GWT non è magico e non si corregge automaticamente per strani bug di layout del browser specifici della situazione e simili: devono aggirarli come qualsiasi altro framework. Né sono sempre all'avanguardia - non hanno annunciato il supporto ufficiale per iPhone o Android, come ha fatto SmartGWT.
Charles Kendrick,

7

Non sto dicendo che è "il migliore", ma ultimamente ho usato GWT-Ext al lavoro. Ha alcuni pro e contro:

Professionisti:

  • Relativamente facile da configurare e utilizzare
  • Comunità di dimensioni decenti dietro di essa
  • MOLTI esempi online, tutti con codice di accompagnamento
  • Buona selezione di widget che coprono una vasta gamma di funzionalità

Contro:

  • Fa ipotesi sul formato e sulla struttura dei dati che potresti non essere in grado di accogliere
  • Library è solo un wrapper JSNI, che rende più difficile il debug e l'estensione
  • Il supporto e lo sviluppo futuri in biblioteca sono incerti
  • Esistono ancora alcuni fastidiosi problemi tra browser (in particolare con i layout)
  • La funzione di ricerca sui loro forum è essenzialmente inutile. (Sta diventando una mia grande pipì per animali domestici> _ <)

6

NON usare nessuno di loro! Se si prevede di sviluppare un'applicazione su larga scala, è consigliabile utilizzare il modello MVP. La migliore implementazione in circolazione è il framework MVP4G , supporta la suddivisione del codice GWT fuori dalla scatola. Ci sono molti ottimi esempi, puoi iniziare con. Il più prezioso è il Mvp4GModules.


5

Aggiungi quello nuovo: GWT-Bootstrap :)

Al momento non è disponibile una versione stabile, ma presto lo sarà.


1
GWT-Bootstrap ha il potenziale per essere il migliore.
Mike,

Fatta eccezione per la supervisione fondamentale del design in aree come schede e modali. Hanno bisogno di ridurre la loro dipendenza da JQuery e pensare più "app".
Καrτhικ,

Le patch sono molto gradite. Grazie comunque per il suggerimento
caarlos0

4

La mia esperienza dimostra che ci sono sempre molti problemi con le librerie di terze parti. Il modo migliore - è utilizzare la tecnologia ben nota e ben sviluppata stessa oltre ai propri componenti. Potrebbe essere necessario più tempo per scriverli e gestirli, ma il TCO è sempre al livello inferiore.

Le librerie di terze parti spesso possono interrompere i tuoi piani in modo imprevisto. Ed è difficile trovare e correggere la fonte del problema.

Quindi suggerirei di usare GWT semplice.


3

Penso che SmartGWT vada bene se desideri semplicemente utilizzare i widget così come sono, ma se desideri estenderli o modificarli come faccio nel Pianificatore Gxt, penso che Ext-GWT sia una scelta migliore.


3

per me EXT-GWT (aka GXT) è la migliore libreria attualmente disponibile, la utilizzo in un progetto di 6 mesi e aiuta molto con molti componenti predefiniti come griglie, alberi .... È bello anche


3
Stai scherzando! Uso GXT da 18 mesi su base giornaliera e posso onestamente dire che è un incubo.
Alex Worden,


2

Il gruppo di utenti di gwt-mosaic non sembra molto attivo e non sono riuscito a trovare un manuale dell'utente oltre ai frammenti di wiki. gwt-mosaic mi ha fatto conoscere due strumenti interessanti.

1) gwt-mosaic include un wrapper per il PageBus di Tibco che è uno strumento di pubblicazione / sottoscrizione per le parti JS della tua app (gestori RPC, callback widget, setter widget). Questa è un'alternativa al bus degli eventi di gwt.

2) gwt-mosaic incoraggia l'uso di Beans Binding (http://code.google.com/p/gwt-beans-binding/) per associare dati a widget e validare widget.

smartgwt non è economico per il set completo di funzionalità e supporto. Il barattolo è troppo grande per l'appengine a meno che non rimuova i file del tema che non usi. Investono ingegneria anche sul lato server.

Ho sentito che ext-gwt è lento e i file JS sono grandi.

L'incubatore del widget gwt sembra obsoleto. Credo che la griglia deluxe verrà rilasciata con il nuovo gwt.

La mancanza di standard estetici, vincolanti e di convalida ostacola l'interoperabilità delle librerie di widget.


Non esiste alcun problema SmartGWT GAE con file .jar di grandi dimensioni a meno che non si ignori le istruzioni di installazione nei documenti, infatti SmartGWT Pro include un progetto di esempio che viene eseguito su GAE e fornisce CRUD completo, utilizzando JPA per la persistenza. Inoltre, economico è relativo: l'opzione di licenza e supporto più costosa offerta per SmartGWT è ancora una parte trascurabile del costo di consegna dell'applicazione / prodotto complessivo quando si considerano i costi di sviluppatori, QA, hardware / hosting ecc. Se hai un budget limitato, c'è la versione gratuita (LGPL).
Charles Kendrick,

2

Sicuramente non SmartGWT. La loro struttura è gonfia e ha una natura molto cotta. Hanno un milione di widget, ma cercare di farli funzionare per il tuo progetto non è facile. Le origini dati complicano il processo di gestione dei dati in un modo molto grande, ad esempio, al fine di ottenere i dati nell'origine dati, è necessario utilizzare fecth e ispezionare spesso. Sebbene sia possibile memorizzare nella cache i risultati, non è sempre facile interrogarli.

RPC è un'altra area debole e contorta. Ci sono informazioni contraddittorie nella documentazione e nei forum. Mentre la documentazione dirà che raramente dovresti usare un'operazione personalizzata come parte di un ds, il loro forum ti dirà che va benissimo. Imparare a usare questi strumenti in modo efficace è una salita in salita nei giorni migliori.

Supervisioneranno il prodotto. Ad esempio, il pacchetto per grafici / analisi contiene grafici ... Ma quei grafici non visualizzeranno valori negativi o ti permetteranno di manipolare le etichette degli assi in modo significativo. E rispondono apertamente alle domande su questo sul forum con un atteggiamento "sì, quindi". "Non pensiamo di aggiungerlo a 3.0x anche se questo è uno dei nostri punti di forza, è sulla nostra road map." Quando mi hanno venduto il pacchetto, non hanno mai detto che non potevo visualizzare valori negativi. Veramente? Quale grafico non dovrebbe essere in grado di mostrare valori negativi? Mi viene in mente solo uno, quello che rappresenta il numero di infelici clienti isomorfi.

Stai lontano da questi ragazzi e vai su qualsiasi sito della concorrenza, ad esempio ExtJS, JQuery, diamine persino quxdoo. Ci sono alcuni progetti là fuori che stanno davvero guadagnando terreno e in realtà offrono una buona soluzione.

Prestare molta attenzione se si valuta questo prodotto. Sembra bello, ma circa due settimane dopo averlo usato per il progetto, inizierai a vedere cosa intendo. I widget sono per metà cotti, le fonti di dati sono estremamente complicate e solo perché hai pagato per il supporto del forum, non significa che in realtà otterrai qualcosa di diverso da un furbo, condiscendendo risposte che all'inizio ti faranno pensare di aver perso qualcosa. In genere non sono molto arroganti.

Buona fortuna e stai lontano da questo prodotto se apprezzi il tempo di sviluppo e la manutenibilità. Oh e un'ultima cosa. Guarda l'esempio MVC sul loro sito web. Non ha letteralmente nulla a che fare con MVC se non che l'etichetta dice "MVC". Cercheranno di convincerti che tali framework sono per sviluppatori inesperti e che un tale concetto non ha posto nella vera programmazione ... Un po 'come quelli che cercano di catturare blocchi.


Tutto abbastanza falso, come puoi facilmente verificare. Ecco l'esempio MVC ( smartclient.com/smartgwt/showcase/#featured_smartgwt_mvc ) questo utente praticamente non lo capisce - leggi la descrizione e vedrai l'enorme potenza dimostrata. Non riesco nemmeno a indovinare cosa significhi dover "recuperare e ispezionare", ma molto probabilmente l'utente non ha letto la Guida di avvio rapido e utilizza il sistema in modo errato. Leggilo tu stesso ( smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf ) e l'architettura è chiara e autoesplicativa. Inoltre, i nostri grafici tracciano valori negativi.
Charles Kendrick,

Siamo onesti qui. L'attuale build stabile di 3.0 non supporta i numeri negativi e, con le loro parole, si rifiutano di supportarlo: forums.smartclient.com/showthread.php?t=21219 .
binarygiant


?? Tale thread indica a un cliente di utilizzare un rilascio punto (3.1). È gratuito, non un aggiornamento ed è molto stabile. Hai provato a far sembrare questo un tentativo di sovrastimare o estrarre più denaro, il che non è solo falso, ma non potrebbe essere più lontano dalla verità: basta guardare tutte le principali nuove funzionalità che le persone ottengono gratuitamente in 3.1 ( blog.isomorphic .com /… ). Eri chiaramente intenzionalmente fuorviante, il che fa luce sugli altri tuoi commenti.
Charles Kendrick,

Certamente non è mia intenzione fuorviare. In risposta, tuttavia, dirò che è fuorviante evidenziare tutte le grandi caratteristiche di un prodotto, in questo caso il pacchetto di analisi, ma in qualche modo tralasciamo che non (pre 3.1), in effetti, tracciava numeri negativi. Inoltre, l'aggiornamento a una versione 3 "dot" va bene purché non ci siano implementazioni CSS personalizzate nella versione 3.0 che evidenzi un altro punto in cui lavorare con SmartGWT è doloroso ...
binarygiant

1

La libreria predefinita di Google è la libreria più potente.

Ext GWT aggiunge campane e fischietti ma a parte questo è simile a quello di Google.


1

Attualmente ci piace il mosaico GWT widget di . Abbiamo lavorato con ext-JS e in passato abbiamo implementato i nostri widget. Le licenze ext-JS e il grosso sono stati un problema per noi. Rotolare il nostro non è ciò che vogliamo fare. Mosaic ci offre una felice via di mezzo che ci piace pensare che sarà una via di mezzo ancora più felice man mano che il progetto matura.


1

Direi che se hai bisogno solo di alcuni widget, creane uno tuo. È possibile copiare e incollare alcuni concetti dalle librerie citate. Ma a tutti manca l'una o l'altra cosa. Ho giocato con la maggior parte di loro e ho abbandonato tutti.


1

Una cosa da tenere presente è che dai forum GWT-Ext sembra che non sarà più sviluppato / mantenuto molto (forse per niente?). Sul loro sito web raccomandano la migrazione a SmartGWT .


1

Non ho visto questo menzionato, Vaadin (precedentemente noto come IT Mill Toolkit), ma forse è perché tecnicamente non è esattamente GWT; come dicono le loro FAQ :

In cosa differisce da GWT?

Le applicazioni GWT vengono eseguite nel browser, mentre le applicazioni Vaadin vengono eseguite sul server. In realtà utilizziamo GWT come "motore di rendering" sul lato browser, quindi puoi combinare Vaadin e GWT.


1

smartGWT è lento e mancano degli esempi ed è molto difficile trovare risposte anche alle domande di base, ovvero vedere tutte le mie domande senza risposta su questo forum. Sto scaricando smartgwt.


SmartGWT è sicuramente un work in progress ma sta migliorando. In due diverse occasioni ho avuto gli sviluppatori a correggere i bug nel bagagliaio in pochi giorni da quando li ho segnalati, il che è incoraggiante. È un'API grande, pesante, quindi devi chiederti se corrisponde all'app che stai scrivendo.
Andrew R

SmartGWT ha più esempi di qualsiasi altra libreria discussa qui. Ciò è oggettivamente verificabile: ( smartclient.com/smartgwt/showcase/#main ) Abbiamo anche una guida QuickStart estremamente potente ( smartclient.com/releases/SmartGWT_Quick_Start_Guide.pdf ). Guarda le domande poste da questo utente: una non era valida, una a cui ho risposto.
Charles Kendrick,


0

Abbiamo creato un grande portale risorse umane e un paio di applicazioni più piccole utilizzando i portlet GWT . Il focus del progetto non è tanto sulla costruzione di una raccolta di widget, ma sulla creazione di un semplice modello di programmazione.

Dal sito Web:

Portlet GWT è un framework Web open source gratuito per la creazione di applicazioni GWT (Google Web Toolkit). Definisce un modello di programmazione molto semplice e produttivo, ma potente per creare applicazioni GWT modulari di bell'aspetto.

Il modello di programmazione è in qualche modo simile alla scrittura di portlet JSR168 per un server portale (Liferay, JBoss Portal ecc.). Il "portale" è l'applicazione creata utilizzando il framework dei portlet GWT come libreria. La funzionalità dell'applicazione è sviluppata come portlet liberamente accoppiati ciascuno con un DataProvider lato server opzionale.


0

Sto usando GWT per un anno. Dopo molte ricerche, ho deciso che GWT Mosaic è una libreria di widget. Mosaic utilizza alcuni dei componenti dell'incubatore GWT come PagingScrollTable .. Ma le funzionalità della casella combinata e della tabella non sono sufficienti per noi .. Ecco perché, abbiamo ha esteso questi componenti per aggiungere le funzionalità necessarie.



0

Due cose importanti - e ciò che manca alla maggior parte delle biblioteche - sono i test di unità e il debug. È dove GWT brilla. Se usi una libreria basata su j vanilla, dai la possibilità di testare l'unità e eseguire il debug del tuo progetto. Come sviluppatore GWT dovresti considerare questi punti e usare una libreria senza dipendenza js minima o minima.


0

Abbiamo realizzato progetti gwt per più di 2 anni e ci atteniamo ai widget predefiniti. Abbiamo creato la nostra libreria open source per popolare automaticamente quelle predefinite o le nostre estensioni dei widget. Per favore, controlla, si chiama gwt-jet . È testato molto bene poiché lo utilizziamo in ambienti di produzione di grandi dimensioni e speriamo che cresca in modo sicuro nel tempo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.