Loading...
Important Notice - Forums is archived

To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Product icon
TUTORIAL

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.

Siamo sempre soli soletti !!

Giovanni Adobati
7 years ago Nov 26, 2014 5:59pm

Sembra proprio che l'italiano non sia la lingua dei programmatori.

Ho messo questo post perchè mi dispiaceva vedere il forum vuoto.

Magari qualche italiano può levare la voce, il problema è che avrà ben poche risposte.

Va be.... , continueremo a postare in inglese ;-)

 

Guglielmo Moretti
7 years ago Nov 26, 2014 8:23pm
Emanuele Maiarelli
7 years ago Nov 26, 2014 9:20pm
Giovanni Adobati
7 years ago Nov 27, 2014 7:11am
Giancarlo Panichi
7 years ago Dec 01, 2014 1:59pm
Anton Bagdatyev
7 years ago Dec 07, 2014 3:25pm
Marco Zanon
7 years ago Dec 26, 2014 10:53am
andrea scarpa
7 years ago Feb 26, 2015 8:29am
Giovanni Adobati
7 years ago Feb 26, 2015 9:21am
Claudio Crociati
7 years ago Feb 26, 2015 12:03pm
Guglielmo Moretti
7 years ago Feb 26, 2015 1:08pm
Marco Zanon
7 years ago Feb 26, 2015 2:38pm
andrea scarpa
7 years ago Feb 26, 2015 8:54pm
andrea scarpa
7 years ago Mar 01, 2015 7:04pm
Claudio Crociati
7 years ago Mar 01, 2015 8:54pm
andrea scarpa
7 years ago Mar 02, 2015 5:35pm
andrea scarpa
7 years ago Mar 02, 2015 5:44pm
Claudio Crociati
7 years ago Mar 02, 2015 11:13pm
andrea scarpa
7 years ago Mar 04, 2015 4:29pm
andrea scarpa
7 years ago Mar 26, 2015 4:11pm
Giovanni Adobati
7 years ago Mar 26, 2015 4:17pm
andrea scarpa
7 years ago Mar 26, 2015 5:23pm
Cataldo De Benedictis
7 years ago Jun 09, 2015 3:33pm
Claudio Crociati
7 years ago Jun 10, 2015 8:29pm
Cataldo De Benedictis
7 years ago Jun 11, 2015 1:50pm
Giovanni Adobati
7 years ago Jun 11, 2015 1:58pm
Claudio Crociati
7 years ago Jun 12, 2015 11:07am
Francesco Santoro
6 years ago Aug 18, 2015 1:35pm
Stefano Iraci
6 years ago Sep 23, 2015 3:17pm
Giovanni Adobati
6 years ago Sep 23, 2015 4:32pm
Marco Zanon
6 years ago Sep 23, 2015 5:14pm
Francesco Santoro
6 years ago Sep 23, 2015 5:18pm
Stefano Iraci
6 years ago Sep 24, 2015 6:24am
Claudio Crociati
6 years ago Sep 24, 2015 8:19pm
Stefano Iraci
6 years ago Sep 25, 2015 7:57am
Stefano Iraci
6 years ago Sep 27, 2015 4:22pm
Claudio Crociati
6 years ago Sep 27, 2015 6:32pm

Ciao, visto che sono tirato in ballo ti rispondo subito sul problema affrontato due anni fa sul forum, poi alcune considerazioni sugli altri framework. Tieni a mente che non uso ZK o Primefaces da tempo, quindi le mie informazioni su questi potrebbero essere datate.

Vaadin utilizza una sua astrazione per rappresentare i dati che vengono mostrati nei controlli utilizzando il databinding: una "riga" di dati (corrispondente ad un record in un DB relazionale) è chiamata Item; un singolo valore di un item è rappresentato da una Property; Un Container contiene un elenco di Items.
Questa rappresentazione da una parte aggiunge flessibilità, ma dall'altra è in confilitto con l'astrazione comune utilizzata in java in cui un record è rappresentato da una oggetto, un singolo valore da un campo di quell'oggetto e un insieme di record da una lista (nota che gli altri framework utilizzano direttamente questo tipo di rappresentazione).
Esistono degli oggetti che adattano la rappresentazione di Vaadin a quella comune di java (BeanItem e BeanItemContainer), ma non sono ottimizzati (e il BeanItemContainer non è "lazy" quindi carica in memoria tutte le righe), quindi se utilizzati per visualizzare migliaia di righe per molti utenti (come nel post sul forum) le prestazioni non sono delle migliori.
Il componente Table, e la nuova Grid, sono invece "lazy" di default lato client, cioè caricano dal server solo le righe che sono al momento visualizzate.
La soluzione al problema è quindi quella di utilizzare un container lazy, che mantenga nella memoria del server solo le righe visualizzate sul client. Tra gli addon di Vaadin esistono diversi Container di questo tipo, ma io consiglio quello presente in "Viritin", perché è semplice da usare (basta fornire un metodo che restituisce il numero totale delle righe ed uno che restituisce la lista delle righe comprese tra due indici) ed è creato e mantenuto da uno dei principali programmatori di Vaadin, quindi è possibile che prima o poi ce lo ritroviamo incluso nel framework.
Utilizzando un container "lazy" puoi visualizzare elenchi di milioni di elementi senza problemi di memoria (io ho provato con un milione).
Quello che ho detto vale se usi i componenti Table o Grid di Vaadin per visualizzare in un dato istante un numero limitato di righe (qualche decina) da un elenco comunque lungo, lasciando a questi la gestione della barra di scorrimento; se invece vuoi visualizzare una pagina contenente una tabella di migliaia di righe presenti contemporanemente allora probabilmente incorrerai in problemi di memorie e prestazioni.

Per quanto riguarda il contronto con gli altri framework alcune considerazioni:
Vaadin ti dà la garanzia che una major version (adesso siamo alla 7) sia mantenuta per almeno 5 anni dalla prima edizione E fino all'introduzione della major version successiva alla successiva (quindi la 6 è mantenuta fino a quando non esce la 8 anche se sono passati più di cinque anni). Inoltre l'azienda è in espansione e ha tutte le carte in regola per restare sul mercato a lungo.
ZK ha alcuni componenti più "potenti" di quelli di Vaadin, ad esempio quello per visualizzare Tabelle di dati (confronta i due demo), ma per sfruttare alcune funzionalità avanzate del framework ti costringe a comperare la versione a pagamento. Per Vaadin il framework è completamente gratuito ma alcuni componenti aggiuntivi (quello per i grafici, i test, i fogli Excel) sono a pagamento.
Vaadin e ZK non aderiscono a standard e ti astraggono entrambi dal fatto che stai creando un'applicazione web: a parte casi particolari lo stile di programmazione è concettualmente simile a qullo di un'applicazione client-server.
Primefaces ha un'enormità di componenti, aderisce ad uno standard java (JSF) e ha un grado di astrazione dal mezzo sottostante (html + http) inferiore: questo può a seconda dei casi essere meglio o peggio.
L'idea che mi sono fatto delle prestazioni è che in generale Primefaces sia più performante se devi visualizzare pagine contenenti molte decine (o centinaia) di componenti.
Il consiglio che provo a darti e che se devi creare applicazioni che assomigliano alle vecchie client-server (molte finestre di dialogo, una singola pagina con swapping dei contenuti) ti conviene usare ZK o Vaadin; in caso contrario valuta Primefaces.

Ciao e in bocca al lupo

Claudio

Stefano Iraci
6 years ago Sep 27, 2015 10:15pm
Claudio Mauri
6 years ago Oct 04, 2015 6:00pm
Claudio Crociati
6 years ago Oct 04, 2015 8:32pm