Siamo sempre soli soletti !!

In effetti il forum in italiano non è popoloso, ma è un piacere conoscervi.

Buon lavoro

Ciao Stefano e buon lavoro anche da parte mia

speriamo che la community italiana si sviluppi.
io lavoro da 4 anni su Liferay + vaadin e mi trovo benissimo!

Grazie del benvenuto,
onestamente devo ancora installare Vaadin, il tempo è tiranno, prima voglio ovviamente prendere visione della documentazione, post ecc.
Se avete qualche consiglio “risparmia tempo” per uno che di Vaddin conosce solo il nome è il benvenuto.

Ciao Stefano

Ciao, benvenuto!

Per cominciare:

  • Installa il plugin di Eclpse (io uso quello, non so dirti bene per gli altri IDE) e potrai immediatamente generare un progetto funzionante. Oppure puoi usare Maven.
  • Leggiti il libro di Vaadin
    https://vaadin.com/book
    (con calma, è piuttosto lungo ma esauriente)
  • Se hai bisogno di ulteriori indicazioni prova il wiki
    https://vaadin.com/wiki
  • Per casi specifici consulta il forum (in inglese è molto più frequentato)

Architettura di base:

  • il framework contiene un certo numero di componenti visuali (per es. TexfField, Table, Tree) che hanno una parte client (in java compilato in javascript con GWT) che funziona sul browser ed una parte java che gira sull’application server
  • Un componente viene creato sul server in java, automaticamente la sua controparte client viene creata sul browser e la sincronizzazione tra le due parti è gestita dal framework
  • un comando eseguito dall’utente (per esempio il click su un pulsante) viene automaticamente inviato al server come EVENTO
  • puoi aggiungere ad ogni component dei listener che vengono eseguiti quando un evento viene ricevuto.
  • nel listener puoi modificare lo stato dei componenti (ad esempio modificare i dati mostrati in una tabella) e automaticamente questi cambiamenti saranno comunicati al client
  • l’effetto netto è che puoi programmare la tua applicazione web comodamente il java, in maniera concettualmente simile ad un’applicazione client java


Alcuni pensieri in ordine sparso:

  • Vaadin è ideale per creare applicazioni web complesse
  • Ti fornisce gli strumenti per creare l’interfaccia grafica dell’applicazione, per il resto (connessione al Db, logica applicativa, ecc) puoi usare qualsiasi libreria o linguaggio che funziona sulla JVM.
  • Non c’è più bisogno di preoccuparsi delle differenze tra browser: ci pensa il framework
  • per ogni utente lo stato dell’interfaccia grafica è memorizzato nella relativa sessione del server: quindi l’applicazione non è stateless: se ci sono migliaia di utenti collegati bisogna tenerne conto.
  • hai a disposizione dei componenti che gestiscono la disposizione degli altri componenti, sempre in maniera indipendente dal browser
  • puoi creare componenti aggiuntivi in java (GWT) o javascript o utilizzare quelli (alcune centinaia) presenti tra gli add-on
    https://vaadin.com/directory




Buona partenza con Vaadin!

Claudio

Ciao Claudio e grazie delle tue utili indicazioni.
Purtroppo la voglia di iniziare è tanta ed il tempo è poco, ma credo di non dire niente di nuovo.
Senz’altro terrò conto della sezione inglese del forum anche se questo porta a devitalizzare il nostro :-(.

Grazie di nuovo ed un saluto a tutti.

Stefano

Dal momento che decidere lo strumento da utilizzare per lo sviluppo nei prossimi anni è, anche (o forse proprio) per una piccola struttura, una scelta critica, è ovvio che si prenda visione di diverse possibilità.
Al momento oltre Vaadin abbiamo visto, sulla carta, ZK, openXava e PrimeFaces.
Non voglio fare la “banale” domanda: quale è meglio, ovvio che ogni considerazione è benvenuta. Nel forum ho trovato questo post https://vaadin.com/forum/#!/thread/3875659/3875658, dove Claudio interviene, che mi ha lasciato un poco perplesso. E’ vero che risale a due anni fa, ma è cambiato qualcosa o questo resta un punto debole di Vaadin?

Grazie dell’attenzione, ciao Stefano

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

Claudio sei veramente gentile oltre che competente.
Le tue considerazioni sono utilissime per arrivare ad una decisione in merito.

Grazie davvero. Ciao

Stefano

Buongiorno a tutti,
anch’io mi sono avvicinato a Vaadinc - come altri che hanno qui postato - in quanto sto valutando insieme ai componenti del mio team quale framework web adottare per lo sviluppo di applicazioni gestionali (ERP) enterprise-level. Attualmente abbiamo un ERP basato su Java EE con client swing, in cui abbiamo sviluppato componenti custom per adattarli alle nostre esigenze… non nascondo che Vaadin ha delle caratteristiche molto interessanti, tra cui proprio la customizzabilità dei componenti, e l’indubbio vantaggio che consente di sviluppare client e server side con un’unico linguaggio. Le maggiori perplessità sono legate al fatto che
non
si tratta di uno standard (nemmeno de facto), che non siamo riusciti a trovare delle informazioni sulla scalabilità effettiva del framework e dal timore che prima o poi si assista ad uno shifting verso i web components nello stesso framework (ossia che venga progressivamente abbandonato il supporto alla generazione di interfacce web usando Java in favore di componenti stile Polymer ed altre soluzioni analoghe).
Voi che l’avete usato cosa mi sapete dire ?

Ciao, provo a risponderti …

Per quanto riguarda gli standard Vaadin non aderisce a nessuno (tipo JSF), quindi se in futuro decidessi di cambiare framework saranno dolori! In pratica anche utilizzando uno standard come JSF probabilmente saresti in qualche misura (minore) legato allo specifico framework utilizzato (Primafaces, ICEFaces, …), dato che probabilmente cederai alla tentazione di utilizzare i componenti più avanzati (rispetto allo standard) da questo forniti.
Il vantaggio principale di Vaadin rispetto a JSF è che astrae in misura maggiore dal protocollo HTTP, quindi è probabile che la struttura delle tue applicazioni sia più simile a quelle che utilizzano swing e dunque la migrazione più semplice.

Sulla scalabilità la mia esperienza nel creare applicazioni gestionali è che, con un po’ di attenzione, non ci sono grossi problemi, pur avendo noi dei server piuttosto sottodimensionati sia per capacità di elaborazione che per memoria. Ovviamente sarebbe meglio eseguire dei test su un prototipo dell’applicazione.
Se non li hai già trovati ecco alcuni link su scalabilità e stree test con Vaadin:

per quanto riguarda i web component i progetti (
https://vaadin.com/components
) prevedono la trasformazione dei componenti di Vaadin per essere utilizzati ANCHE lato client, secondo tale standard. Quindi probabilmente assisteremo alla creazione di una nicchia di utilizzatori che programmano in javascript lato client.
Tuttavia il core business della compagnia è la creazione di applicazioni web in java, e non credo che a breve la cosa cambierà (sarebbe un suicidio per loro), quindi ritengo piuttosto sicuro un investimento in tale senso. Per quello che ho visto nel corso del tempo (diversi anni) le assicurazioni sul periodo di manutenzione delle varie versione del framework (almeno cinque anni dalla prima edizione di una major version E fino all’uscita della major version successiva alla successiva) sono sempre state mantenute.

Ciao e in bocca al lupo …

Claudio

Ciao Claudio,
grazie per la sollecita risposta. Penso che una volta scelto un framework, qualunque esso sia, sia inevitabile restare in qualche modo vincolati. Di Vaadin è un po’ che se ne sente parlare, non in lingua italiana :slight_smile: , e dubito fortemente che sparisca da un giorno all’altro; comunque sia, sarebbe una ragione in più per separare ancora più rigorosamente l’ UI dalla Business logic (cose che non sempre si fa ahimè).
Di sicuro l’approccio seguito da Vaadin è fortemente in controtendenza rispetto a quel che si vede in giro, ossia scenari in cui è Javascript a farla da padrone (sia client che server). Solo per informazione, hai provato a valutare SmartGWT ? GWT “puro” mi sembra interessante ma con componenti meno avanzati di Vaadin, quindi sarebbe una seconda scelta…
Ciao e grazie delle info !

Ciao. sicuramente Vaadin è in controtendenza e io sono convinto che non sia la soluzione ottima pet quanto riguarda la prestazioni soprattutto se hai tanti utenti collegati (in quel caso puoi sempre fare bilanciamento del carico), ma è abbastanza buona e consente di creare applicazioni nel linguaggio che decido io (java, ma anche tutti gli altri linguaggi che girano sulla JVM) usando l’IDE che preferisco.
Naturalmente è questione di opinioni ma, dopo aver provato diversi framework, io sono al momento contento di restare con Vaadin, pur vagliondo ogni tanto altre possibilità …
SmartGWT l’ho provato: sono rimasto colpito dal numero e dalle potenzialità dei controlli, per diversi aspetti superiori a quelli di Vaadin. Il problema principale che mi aveva infastidito era il tempo di attesa per ogni ricompilazione (adesso è decisamente migliorato con le ultime versioni di GWT) e la necessità di ricaricare la pagina ad ogni minimo cambiamento; con Vaadin e Jrebel o DCE VM puoi cambiare il codice java e il tutto viene hotswappato (se mi consenti il termine orrende) dentro la JVM senza dover nemmeno ricaricare la pagina!
Per GWT schietto vedo luci ed ombre: il progetto sembrava aver ripreso momento, ma ultimamente sta rallentando, e lì sì che senmbrano intenzionati a deprecare i componenti attuali in favore di Polymer o similari, quindi al momento ne resterei lontano, almeno finché questo periodo di transizione non sarà finito.

Claudio

Grazie innanzitutto delle risposte dettagliate e schiette… Per quel che riguarda GWT, da quanto ho capito Google ha reso opensource il framework che è stato poi customizzato da diversi attori (non so se sia corretto usare l’espressione vendors), TR cui Vaadin.Di sicuro valuterò con attenzione questa possibile soluzione, logicamente occorrerà fare le debite sperimentazioni.
Quanto a Polymer…che dire? Qualche mese fa ci diedi un’ occhiata precipitosa, sembra interessante, come del resto è interessante quasi ogni nuovo framework che spunta dal mondo open source. Il problema è che molti non raggiungono la maturità, altri una volta raggiunta diventano di nicchia…difficile puntare su un framework. Forse la soluzione migliore è adottarne più di uno, ed anziché sviluppare una applicazione web monolitica, sviluppare più moduli web interagenti ed integrati tra loro…ma sto divagando.
Grazie ancora per lo spassionato parere.

Prego, è un piacere discutere (in italiano ogni tanto) di questi argomenti!

Ciao
Claudio

Per la mia esperienza, usiamo vaadin dal 2011 dalla versione 6 e direi che siamo soddisfatti.
Concordo con il fatto che pensare l’applicazione con un concetto di separazione tra logica e interfaccia utente sia indispensabile, anche se non è sempre facile.

Buon lavoro a tutti.

Salve ragazzi,
riprendo questo post di qualche mese fa, sottolineando quanto detto da Claudio mari

In particolare mi trovo a dover fare interagire due applicazioni Vaadin “deployate” sullo stesso application server, sviluppate con versioni differenti del framework, le quali devo scambiarsi le informazioni, per ora, dell’utenza loggata.
Mi chiedevo se qualcuno ha mai affrontato un problema simile e come con quale approccio lo ha risolto.
Grazie e buon lavoro
PL

Ciao a tutti,

ci sono anche io! :slight_smile:

ciao a tutti,
qualcuno sa come usare le API di FireBase in una WebApp Vaadin
per gestire ed usare push notification in sessioni caricate su dispositivi mobile (come se fossero native)?
cioè farle uscire nel notification center identificando l’utente connesso dal suo dispositivo con la propria sessione(coockie vs uid,ecc…)?

versione vaadin 7.7

grazie per qualsiasi risposta

Buongiorno a tutti,
piacere

prima di tutto, grazie per i post di cui sopra che mi hanno dato un aiuto per iniziare a capire qualcosa di questo ambiente, del quale sono venuto a conoscenza solo pochi giorni fa.
Sto cercando un ambiente\framework - possibilmente Java - che mi consenta di sviluppare moderne PWA. Dentro moderne PWA ci possiamo mettere di tutto: dalla UI\UX, off-line, notifiche, performance, ecc.

Considerato che abbiamo investito 15 anni nello sviluppo di un gestionale Java, che ha limiti in ambito mobile, che vorremmo affiancare con nuove parti PWA, vi chiedo vostri pareri aggiornati al riguardo.

Vi ringrazio in anticipo e saluto
Roberto Parco - Bergamo