Impariamo ad usare The Play Framework - I parte
Introduzione
Il mondo Java, si sa, è stato da sempre molto affollato. Il problema maggiore, in questo ecosistema, è sempre stata la complessità: bisogna destreggiarsi fra una moltitudine di file di configurazione, linguaggi (oltre a Java bisogna anche conoscere SQL e/o JPQL, XML, JSP o JSF, HTML, CSS, javascript ...), specifiche e convenzioni, il tutto peggiorato dalla constatazione che ben poche implementazioni dello standard JEE sono veramente conformi al 100% e di conseguenza "intercambiabili"; i motivi che vanno da omissioni nella specifica stessa, alla necessità di migliori performance, a veri e propri bug.
Le tecnologie JEE comunque hanno prodotto e continuano a produrre ottime applicazioni di fascia alta, ma solo da poco hanno cominciato ad accorgersi che anche i progetti cosiddetti "minori" hanno bisogno di essere valorizzate. Troppo tardi forse, perché nel frattempo molti contendenti si sono affacciati sulla scena, e promettono di essere molto agguerriti!
Play Framework[1] è uno di questi. In questa serie di articoli vedremo che vantaggi porta, come si installa, come si usa. Se conoscete la "pesantezza" del mondo JEE sarete sicuramente sorpresi dal vedere quanto Play sia "agile", anche nel confronto con le recenti (siamo a Marzo 2010) migliorie apportate a JEE 5 e JEE 6.
Installazione
I requisiti per poter sviluppare con Play sono:
- JDK 5 (detto anche 1.5) o successivo. Su Linux è necessario che il JDK sia quello della sun (Sun-JDK) oppure OpenJDK, non GCJ;
- definire la variabile JAVA_HOME in modo che punti al JDK;
- Python 2.4 o successivo
- Linux: dovrebbe essere già installato di default;
- Windows: una distribuzione di Python è inclusa nel download di Play;
- solo per seguire il tutorial: un sistema di controllo delle versioni come Subversion, Bazaar, Git, CVS, o altro.
Una volta scaricato il pacchetto ed estratti i contenuti in una directory di vostra scelta, troverete due script: play e play.bat.
- Note per Linux e altri sistemi Unix-like (MacOSX, BSD, ecc.) : fate in modo che lo script play (uno script Python) sia eseguibile, tramite il comando:
chmod +x play - Note per Windows: in questo caso, ma più in generale per tutte le applicazioni Java, evitare l'uso di spazi nei nomi delle directory, ad esempio "C:\Program Files\Play" e simili;
In ogni caso si consiglia di aggiungere questa directory al PATH di sisterma, in modo da non dover digitare ogni volta il percorso completo.
Il comando play
Se provate ad eseguire il comando play ora, vi comparirà una schermata simile a questa:
~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.0, http://www.playframework.org
~
~ Usage: play cmd [app_path] [--options]
~
~ with, new Create a new application
~ run Run the application in the current shell
~ help Show play help
~
Questo comando è il punto di accesso a tutta una serie di funzioni amministrative che saranno utilizzate durante lo sviluppo del vostro progetto; molti di voi noteranno una certa somiglianza con altri framework molto famosi come Ruby On Rails e Grails, e di certo la somiglianza non è casuale. Play si ispira infatti a questi framework, più che altro dal punto di vista "filosofico": semplicità, automazione, e soprattutto una spartana shell a riga di comando senza wizard colorati e fuorvianti!
Startup del progetto
In questa serie di articoli vedremo creeremo un'applicazione completa per la gestione della propria forma fisica, che chiameremo -molto fantasiosamente- GymTrack. Affronteremo lo sviluppo di questa applicazione molto seriamente, utilizzando tutti gli accorgimenti che si convengono ad un vero progetto professionale!
Per prima cosa bisogna creare la struttura delle directory con il comando:
play new gymtrack
Alla domanda "What is the application name?" risponderemo "GymTrack", Play quindi si occuperà di creare e configurare un'applicazione minimale. Verranno create diverse directory:
- gymtrack: la directory di base del progetto;
- app: contiene l'applicazione vera e propria, con i vari modelli, controller, e view;
- conf: file di configurazione;
- lib: librerie opzionali;
- public: file e risorse pubbliche come immagini, CSS e sorgenti javascript;
- test: test unitari e funzionali.
Spostiamoci ora nella directory gymtrack (cd gymtrack) ed facciamo partire il server con il comando:
play run
L'applicazione sarà ora raggiungibile all'indirizzo:
http://localhost:9000/
dove potrete ammirare la schermata di default della nuova applicazione!

Analisi dell'applicazione
Prima di tuffarsi a testa bassa nello sviluppo è necessario fissare degli obiettivi e dare delle priorità. L'utilizzo di mockup design si è molto affermato negli utlimi anni, perché consente a personale tecnico e non di discutere su un terreno comune ed evitare il più possibile fraintendimenti e iniziative personali, problemi che si presentano ovunque ci siano delle mancanze nella comunicazione nel team.
Per i nostri mockup utilizzeremo il celebre Balsamiq Mockups per la sua estrema semplicità e il design volutamente "scarabocchiato" che non lascia spazio a commenti del tipo "lì ci voglio più blu, la scritta la voglio in questo carattere, ecc."
Gli use case della nostra applicazione saranno i seguenti:
- homepage pubblica;
- pagina di login;
- dashboard dell'utente, con statistiche e un pannello di comando;
- form di inserimento attività.
Homepage pubblica:

Pagina di login:

Dashboard:

Form di inserimento attività:

Salvare il proprio lavoro
Abbiamo dichiarato all'inizio dell'articolo che uno degli obiettivi è di realizare un progetto di qualità professionale, diventa quindi indispensabile a questo punto salvare il proprio lavoro su un sistema di controllo delle versioni (VCS). Ce ne sono tanti ormai, ad esempio Subversion, Bazaar, Git, il caro vecchio (e per molti versi superato) CVS, e molti altri; il tutorial ufficiale di Play utilizza Bazaar, ma voi siete liberi di utilizzare ciò che vi pare.
Quale sia il vostro VCS, è importante che le directory tmp e logs vengano ignorate nelle operazioni di add e commit.
In queste directory infatti vengono creati e modificati file temporanei e log, utilizzati solamente durante l'esecuzione dell'applicazione e quindi non utili agli altri sviluppatori o per tenere traccia dell'evoluzione dei sorgenti.
- Aggiungi un commento
- 1466 letture
-

Play! framework forum
Hey, I also appreciate Balsamiq Mockups, great tool!