Pubblicato il 4 settembre 2013 da Alessio Stalla

Sono passati vari mesi dall'ultima release di Portofino, e qualcuno potrebbe chiedersi che cosa abbiamo fatto nel frattempo. Nonostante l'estate, non siamo stati con le mani in mano! Infatti, sono molto felice di condividere un'anteprima della prossima release di Portofino con i nostri utenti e con chi ci segue. La nuova versione sarà un vero balzo in avanti! Vogliamo che Portofino diventi lo strumento definitivo per creare applicazioni enterprise moderne in modo facile e divertente. Gli utenti di oggi si aspettano che le applicazioni che utilizzano siano di aspetto gradevole e usabili su più dispositivi - dagli smartphone ai tablet ai cari vecchi PC. Si aspettano sempre di più di trovare nelle applicazioni web di tipo business/Intranet che usano ogni giorno la stessa qualità e produttività che riscontrano nelle applicazioni Internet più popolari.

Ecco perché per la 4.1 ci siamo concentrati sull'aggiornamento tecnologico, in particolare usando HTML5 con Twitter Bootstrap per l'interfaccia utente. I più attenti avranno notato che stiamo usando da qualche tempo un tema basato su Bootstrap per il nostro sito, ma non vi potete immaginare quanto sia bello da vedere Portofino con Bootstrap inserito a livello di framework... a meno che non lo scarichiate, naturalmente! Proprio così, Bootstrap è già presente nella versione beta che stiamo pubblicando.

Un altro obiettivo importante per la 4.1 è la modularizzazione. Stiamo suddividendo Portofino in moduli più piccoli, così che si possano usare le feature che interessano senza necessariamente adottare l'intero framework - ad esempio, si può sfruttare la gestione utenti e le action in Groovy senza usare lo strato di accesso al DB (Liquibase, Hibernate e le pagine CRUD). Chiunque potrà creare il proprio modulo e integrarlo trasparentemente con il resto del framework.

Cosa abbiamo fatto

Elencare uno per uno i cambiamenti dalla versione 4.0.10 a questa release beta sarebbe un compito oneroso (e probabilmente l'articolo risulterebbe noioso). Presentiamo quindi soltanto le modifiche più importanti.

Aggiornamenti tecnologici

  • Java 6 è la versione minima di Java richiesta (in precedenza era la 1.5).
  • Servlet API 3.0, ovvero Tomcat 7+. Le servlet 3.0 sono molto importanti per la modularizzazione, in quanto permettono di suddividere il web.xml in diversi jar, e di inserire le risorse web negli archivi stessi invece che in un unico file war.
  • Twitter Bootstrap è incluso nel framework di base, è supportato e sfruttato dai campi Elements, ed è utilizzato per l'intera interfaccia utente. Di conseguenza, la GUI è bella da vedere ed è nativamente responsive (si adatta alle varie dimensioni dei display). Con Bootstrap, abbiamo anche smesso del tutto di usare YUI, che impiegavamo per il layout e per i componenti interattivi (la datatable).
  • Build con Maven senza grattacapi. Portofino è un progetto Maven dal primo giorno, ma facevamo uso di artifact non disponibili su Maven Central, per fini di test o per la compatibilità con Java 1.5. Portofino 4.1 finalmente può essere compilato da chiunque senza installare nulla manualmente nel proprio repository Maven locale.

Miglioramenti all'interfaccia utente

L'uso di Bootstrap ci ha permesso di apportare molti miglioramenti alla UI di Portofino. Alcuni di questi sono direttamente visibili agli utenti finali; altri sono modifiche più sottili che sono importanti principalmente per gli sviluppatori che scrivono pagine JSP personalizzate.

  • Una migliore data table. Abbiamo sostituito la data table basata su YUI2 con una realizzata da noi in Elements e Bootstrap. Il risultato sono risultati di ricerca nei CRUD più accattivanti, meno codice JavaScript e maggiore accessibilità (la tabella, infatti, funziona anche con il JavaScript disabilitato).
  • Embedding delle pagine reingegnerizzato. La page action "principale" ora è più importante di quelle embedded. Dal punto di vista dell'utente finale, questo vuol dire che è più facile riconoscere l'elemento più importante/attivo su una pagina con molti componenti. Dal punto di vista dello sviluppatore, questo significa che una pagina ha maggior controllo sulla propria renderizzazione quando non è embeddata (per esempio, può aggiungere elementi in cima al contenuto della pagina). Le pagine personalizzate devono essere riadattate, ma non è difficile farlo.
  • Bottoni migliorati. Con icone e/o testo, gli stili di Bootstrap e opzionalmente il raggruppamento, il tutto come sempre controllato tramite annotazioni @Button sui metodi handler della action.
  • Selettori di date, campi con autocompletamento e dialog ora sono fatti con Bootstrap.
  • CKEditor aggiornato all'ultima versione, che è più gradevole e si integra bene con il tema principale dell'interfaccia utente.
  • Navigazione più concentrata per non mostrare pagine non rilevanti, mantenendo la facilità di saltare da una parte all'altra grazie ai breadcrumb sempre presenti.

Gestione utenti

Abbiamo portato la gestione utenti ad un nuovo livello, pur mantenendo la nostra architettura basata su Shiro e Security.groovy.

  • Autoregistrazione con CAPTCHA e email di conferma.
  • Cambio password nel framework di base. Sostituisce la page action per il cambio password.
  • Reset della password (password dimenticata), con email di conferma.
  • Login action più facile da personalizzare.

Tutto ciò può essere generato con il wizard e personalizzato a mano.

Sistema di menu

I moduli e le applicazioni possono aggiungere dinamicamente elementi ai menu di sistema nell'area in alto a destra della pagina. Il tema di default supporta 3 menu - uno per le funzionalità di CMS, uno per la sezione amministrativa, e uno per la gestione utenti. La stessa infrastruttura può essere usata da temi personalizzati per altri menu.

Un sacco di piccoli miglioramenti e correzioni

Ci siamo anche presi il tempo per toglierci qualche soddisfazione e correggere cose che non ci piacevano. Abbiamo anche eliminato molti bug. Naturalmente, trattandosi di una beta, probabilmente ne abbiamo anche introdotti di nuovi - è anche per questo che mostriamo questa anteprima sperando che ci aiuterete a trovare eventuali problemi. Vogliamo che la 4.1 sia più stabile possibile e che sia libera da bug.

Dove vogliamo arrivare

Crediamo che la beta4 dia già una buona impressione di cosa vogliamo ottenere. Tuttavia, ci sono ancora molte cose. Noi vogliamo:

  • Modularizzare ulteriormente:
    • suddividere gli attuali moduli in artefatti più specifici
    • pubblicare le risorse dei moduli secondo una struttura di directory uniforme
    • eliminare la directory apps così che una app diventi un normale file .war e possa sfruttare la Servlet API 3.0 per fare override di risorse pacchettizzate nei jar dei moduli.
  • Migliorare la UI tramite personalizzazioni di Bootstrap.
  • Fornire un pannello di ammnistrazione più ricco per gestire tramite interfaccia web ogni sottosistema di portofino, inclusi mail, Quartz ed eventuali cache.
  • Usare maggiormente HTML5 in Elements e nel tema di default.
  • Migliorare le nostre attuali API per rendere l'estensione e la personalizzazione delle nostre action predefinite ancora più semplice.

Scaricalo!

Ti invitiamo a provare questa anteprima; la puoi scaricare da SourceForge. Se incontri problemi o hai dei suggerimenti, ti invitiamo a partecipare ai nostri forum per la comunità.

 

comments powered by Disqus