SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
Reportage
“RAD Studio XE2
World Tour”

di Marco Breveglieri




                       Pubblicato il 07/10/11
Introduzione
Al momento in cui scrivo, Embarcadero ha concluso da alcuni giorni il suo tour per mostrare in
giro il mondo la nuova versione di Delphi, o meglio di RAD Studio: XE2.
Tra le varie tappe internazionali, il “RAD Studio XE2 World Tour” ha toccato anche l'Italia,
precisamente Milano il 21 settembre e Roma il giorno successivo.
Le novità introdotte in questa versione del tool di
sviluppo sono davvero tante, motivo per cui ho
pensato di redigere questo reportage per
elencare quelle che – a livello personale e
soggettivo – ritengo le innovazioni più
interessanti e degne di nota, e magari sciogliere
qualche dubbio a coloro che non hanno potuto
partecipare, raccontando gli avvenimenti della
giornata di presentazione.
Il rilascio di XE2 ha senz'altro ravvivato l'interesse di molti sviluppatori: la presentazione a cui
ho assistito è quella tenutasi a Milano, che ha visto la presenza di oltre 200 persone, a cui si
aggiungono circa altri 100 sviluppatori che hanno partecipato all'appuntamento di Roma
previsto per il giorno dopo.

Opening
                          La presentazione di Milano si è aperta con il benvenuto di Fabrizio
                          Bitti (bitTime Software, rappresentanza italiana di Embarcadero), che
                          ha introdotto la numerosa platea ai contenuti della giornata e ha
                          preannunciato alcuni eventi imminenti rivolti in modo particolare agli
                          sviluppatori Delphi.
                          In una battuta ironica, ma reale, Fabrizio ha definito XE2 come «la
                          migliore versione di sempre», grazie a tutte le nuove feature
                          presentate di lì a breve.
Fabrizio ha ricordato inoltre la possibilità, introdotta di recente da
Embarcadero, di conseguire la Delphi Certification, disponibile nei
livelli Developer (che può essere ottenuta online ed è in offerta
gratuitamente per chi acquista una licenza) e Master (che invece
richiede la propria presenza fisica presso un centro di formazione
autorizzato). Maggiori informazioni a riguardo si possono trovare alla
pagina          ufficiale       sul          sito        Embarcadero
(http://www.embarcadero.com/certification).
                            A fine ottobre si terrà inoltre ITDevCon, la terza edizione della
                            European Delphi Conference italiana, con diverse sessioni (di durata
                            più lunga rispetto al passato) organizzati in più “track” tematiche, e
                            senz'altro XE2 sarà uno dei protagonisti principali. Tutte le
informazioni sull'evento, che avrà luogo a Verona il 27/28 ottobre, si trovano sul sito ufficiale
(http://www.itdevcon.it).


                                                                             Pubblicato il 07/10/11
Dopo aver preannunciato la disponibilità in palio di una licenza premio di RAD Studio Architect
sorteggiata tra i partecipanti al termine della giornata, Fabrizio ha “passato la palla” a Jason
Vokes, Director of Technologies and Marketing presso Embarcadero, per il “keynote” iniziale.

Jason Vokes: Keynote
Jason Vokes ha iniziato il “keynote” illustrando gli obiettivi
prefissati nella realizzazione di XE2: portare RAD Studio a
raggiungere la maggior parte delle piattaforme attive ad oggi.
Con XE2 è possibile produrre veloci applicazioni native non solo
per Windows, ma anche per Mac OSX, per il Web e per le
piattaforme Mobile, con l'opportunità di scrivere la propria
applicazione una sola volta e compilarla su diverse piattaforme
e su più dispositivi (come smartphone e tablet) di uso
quotidiano.
Esistono parecchi linguaggi che consentono di sviluppare
applicazioni crossplatform, ma pochi possono contare su una gamma di funzionalità RAD pari a
quelle fornite dall'ambiente Delphi, data rich e component based.
Nonostante l'ambiente fornisca tool per lo sviluppo rapido di applicazioni, come per le versioni
precedenti, anche XE2 consente di scendere nei dettagli architetturali della piattaforma (come
avviene con l'uso delle API, delle strutture, dei tipi di dati dei messaggi Windows nella VCL) pur
senza rimanere necessariamente legati ad essi. Per dirla con le parole di Jason, «you can get
down to the metal, without being tied to it».
I programmi ottenuti con XE2 hanno sempre le eccellenti performance tipiche che ci si aspetta
dalle applicazioni native prodotte dai compilatori Delphi e C++.
A proposito della VCL, è stata introdotta la possibilità di compilare applicazioni a 64 bit per
Windows e il supporto ai VCL Styles, un sistema che consente di gestire diversi stili grafici per i
principali controlli visuali delle applicazioni, rendendole più moderne e accattivanti. Di queste
nuove caratteristiche della libreria VCL si parlerà in dettaglio, con dimostrazioni ed esempi
pratici, nelle sessioni successive.
La novità più interessante, che ha suscitato un discreto
“rumore” sin da prima dell'inizio del “world tour” di
Embarcader, è l'avvento di FireMonkey, definita come la
piattaforma per applicazioni business della prossima
generazione. Si tratta di una libreria grafica vettoriale che permette di creare applicazioni 2D
(dette anche “HD”, da High Definition) e 3D.
Le applicazioni realizzate con FireMonkey (spesso abbreviato con FMX) sono native e sfruttano
la potenza e le prestazioni messe a disposizione delle attuali GPU.
La libreria mette a disposizione una suite completa di controlli visuali per lo sviluppo delle
applicazioni. I controlli visuali della libreria sono inoltre componibili: ciascun controllo può
essere inserito all'interno di un altro, realizzando architetture UI difficili e complesse da
ottenere con l'attuale VCL, ad esempio introducendo elementi di tipo eterogeneo, come
pulsanti e caselle di testo, all'interno di una ListBox. La gamma dei controlli a disposizione è
particolarmente ricca se confrontata con la dotazione di base di altre librerie simili, come WPF
(Windows Presentation Foundation), ma tramite la loro composizione è possibile ottenere una
serie pressoché infinita di combinazioni di controlli più avanzati.
Qualsiasi elemento grafico di FireMonkey, la cui gestione viene affidata alla GPU lasciando
molto più scarica e disimpegnata la CPU, è vettoriale: le dimensioni, le posizioni e gli effetti
applicati scalano correttamente applicando uno zoom e hanno bordi sempre definiti. A
proposito di effetti, la libreria FireMonkey include una pletora di componenti pronti all'uso in
grado di fornire animazioni, trasformazioni, filtri, applicabili a qualsiasi controllo grafico
relativamente a proprietà quali posizione, dimensioni e contenuti a seconda dei casi, senza la
necessità di scrivere nemmeno una riga di codice. Con FireMonkey, usando le parole di Jason,
«you can build the app of your dreams».
Ma le novità introdotte da XE2 non si fermano alla sfera grafica: grazie al potenziamento della
libreria dbExpress (che ora include anche un driver ODBC), dell'architettura DataSnap ancora
più funzionale, all'introduzione della tecnologia LiveBindings (di cui si parlerà in seguito), XE2
garantisce possibilità illimitate di connettività a qualsiasi database e data service, anche di
propria produzione, non solo per la VCL ma anche per FireMonkey, approdando su altre
piattaforme e consentendo quindi di creare applicazioni che si connettono sempre e ovunque a
qualsiasi origine dati. XE2 include inoltre nuovi strumenti per lo sviluppo di applicazioni
multitier e consente di generare proxy nativi (detti “connector”) dei vostri server DataSnap
per la maggior parte dei linguaggi esistenti (Delphi, C++, JavaScript, Java, Android, Objective-C),
pronti per essere importati all'interno dei progetti realizzati con questi linguaggi, da voi o da
altri collaboratori.
Infine, Jason ha presentato le nuove caratteristiche di RadPHP, il tool per lo sviluppo di
applicazioni Web in RAD Studio XE2, che include nuovi componenti dedicati al mondo mobile e
l'integrazione con PhoneGap, uno strumento che consente di portare applicazioni Web (basate
quindi sugli standard HTML, JavaScript e CSS) all'interno di dispositivi mobili come iPhone e
Android ed eseguire - come se fossero native – le applicazioni con pieno accesso all'API e alle
risorse del dispositivo, come il GPS o la fotocamera, per intenderci.
Infine, Jason ha sottolineato anche il valore aggiunto dai numerosi componenti di terze parti,
che arricchiscono ulteriormente le opportunità offerte dai tool e dalle librerie della suite.

Marco Cantù: FireMonkey
                                               Nella sessione successiva, Marco Cantù ha
                                               approfondito dal punto di vista tecnico,
                                               aiutandosi con alcuni demo autoprodotti, le
                                               caratteristiche   della    nuova    libreria
                                               “FireMonkey”.
                                              Come già detto, FireMonkey è una nuova libreria
                                              per lo sviluppo di applicazioni che, a differenza
                                              della VCL, non è simbiotica con Windows; ha
                                              parecchie somiglianze con altre librerie anch'esse
                                              conosciute quali WPF (Windows Presentation
                                              Framework) e il fratello minore Silverlight, oppure
                                              Adobe Flex, ma FireMonkey è nativa e compilata,
è crossplatform e viene fornita con sorgenti, a differenza della concorrenza.
La libreria è “GPU powered”: tutta la gestione grafica avviene senza consumare CPU (e questo
è facilmente riscontrabile scaricando i numerosi demo a disposizione, compilandoli e
lanciandone più istanze contemporaneamente, monitorando l'uso della CPU con il Task
Manager).
I wizard disponibili consentono di creare nuovi progetti di applicazioni 2D (o HD) e 3D, ma le
due modalità grafiche non sono in mutua esclusione: è possibile integrare contenuti 2D in
applicazioni 3D, e viceversa, utilizzando appositi pannelli.
FireMonkey è una libreria astratta: gli elementi visuali non sono wrapper dei controlli di
Windows, non fanno riferimento a handle di alcun tipo, ma vengono completamente disegnati
nelle loro parti costituenti, e quindi sono indipendenti da qualsiasi piattaforma specifica, pur
consentendo – grazie al supporto degli stili – di adottare il “look & feel” del sistema di
riferimento.
FireMonkey è una libreria nativa e compilata: le applicazioni sono eseguibili senza bisogno di
runtime di supporto, senza dipendenze e senza vincoli sulla piattaforma di destinazione scelta
(caratteristiche che la rendono ottimale soprattutto sui dispositivi mobili), e sono in grado di
adattarsi e sfruttare le risorse grafiche messe a disposizione dalla libreria GPU presente
(OpenGL, DirectX, Quartz e altre).
Cantù ha successivamente creato un'applicazione dimostrativa usando l'apposito wizard per
mostrare alla platea alcune delle peculiarità di Firemonkey, soprattutto laddove vi sono
diversità rispetto alla libreria VCL che tutti conosciamo.
Innanzitutto, ciascun controllo – partendo dal più banale e semplice dei pulsanti, ad esempio –
in realtà è composto da diversi elementi grafici, quali il rettangolo che ne costituisce il bordo, il
testo contenuto al suo interno, la sfumatura del colore di riempimento e gli effetti applicati al
passaggio del mouse sull'area del controllo; da qui si comprende la vera potenza della libreria in
termini di manipolazione e complessità delle interfacce utente che si possono costruire,
potendo comporre liberamente tra di loro tutti gli elementi grafici, partendo da quelli primitivi
sino ad arrivare a quelli più complessi forniti “di serie”, in modi assolutamente inarrivabili - se
non con pratiche complicatissime di subclassing e custom drawing estremo – con la libreria VCL.
In FireMonkey, le proprietà che determinano la posizione e la dimensione dei controlli sono
espresse con valori in virgola mobile, e non interi, a cui si aggiungono ulteriori proprietà quali la
rotazione e, nel caso del 3D, la profondità. Tutti i controlli che compongono l'interfaccia utente,
inoltre, sono perfettamente scalabili e “zoomabili” senza perdere minimamente qualità visiva,
mantenendo eccezionali effetti di antialiasing nei bordi e sfumature all'interno dei controlli,
senza alcuno sforzo (da qui la definizione di applicazioni HD, da High Definition).
Rispetto allo sviluppo con la libreria VCL, viene mantenuta la “logica Delphi” a cui siamo
abituati con l'utilizzo dei tipi e delle funzioni della RTL (Run Time Library) e gran parte dei
componenti, tra cui quelli per l'accesso ai dati; ciò che cambia completamente è la famiglia dei
controlli visuali adottata per creare l'interfaccia utente (UI).
Qualsiasi elemento di FireMonkey, che sia separato o incluso in una composizione, può essere
“stilizzato”: esiste una finestra integrata nell'IDE che consente di personalizzare tutti gli stili
della propria applicazione e di crearne di nuovi, applicandoli agli elementi dell'interfaccia
utente.
Per quanto riguarda l'accesso ai dati, è LiveBindings a venire in soccorso dello sviluppatore: si
tratta di un sistema basato su espressioni che permette di correlare due oggetti tra loro, o
meglio le loro proprietà. Di questa nuova risorsa, fruibile anche nelle applicazioni VCL, si parlerà
in modo approfondito nella sessione seguente. Per il momento, è sufficiente sottolineare che,
attraverso l'uso di componenti dedicati che semplificano il lavoro, il collegamento ai dati (data
binding) all'interno di un'applicazione FireMonkey è facile tanto quanto quello tradizionale, se
non di più.
Infine, è stato mostrato il demo di un'applicazione 3D realizzata con FireMonkey. Anche se
l'uso del 3D può apparire come adatto esclusivamente a tipi molto particolari e settoriali di
applicazioni, in realtà il suo utilizzo permette di ottenere effetti ben difficilmente riproducibili
in 2D. Si pensi alla visualizzazione consecutiva di immagini differenti e al diverso effetto che si
può ottenere passando da un'immagine all'altra con una rotazione rispetto al cambio repentino
che si ottiene con un normale controllo TImage della VCL.
Per concludere, una precisazione doverosa fatta da Marco e Jason in merito al “destino” della
libreria VCL. Come ha detto Jason, «VCL is here to stay»: la libreria FireMonkey non va intesa
come un rimpiazzo della VCL, né come l'intenzione di abbandonare quest'ultima, che
continuerà ad essere supportata fino a quando esisterà la piattaforma nativa Windows su cui si
basa, tant'è vero che in XE2 sono state aggiunte interessanti feature alla VCL, anch'esse tra i
temi della giornata. Ciò che si può effettivamente dire è che con FireMonkey si aprono nuovi
scenari, l'approdo a nuovi tipi di piattaforme e dispositivi, sia nel presente che nel futuro e la
possibilità di concepire e realizzare interfacce utente di nuova generazione.

Daniele Teti: supporto a 64 bit e “VCL Styles”
                                          La sessione successiva, tenuta da Daniele Teti, si è
                                          concentrata su quella che fino a pochi giorni prima era
                                          considerata la feature principale, la più annunciata e la
                                          più attesa da molti sviluppatori, anche se l'arrivo di
                                          FireMonkey le ha lecitamente sottratto un po' di
                                          curiosità: il supporto a Windows 64 bit.
                                          Nella maggior parte dei casi, attivare il supporto alla
                                          piattaforma 64 bit in un progetto Delphi è
                                          un'operazione semplicissima: è sufficiente fare clic
                                          con il tasto destro su Target Platforms nella finestra
                                          del Project Manager, scegliere “64-bit Windows” nella
                                          finestra di dialogo che viene mostrata e ricompilare
                                          l'applicazione.
Tuttavia, come è avvenuto nel precedente passaggio a Unicode con Delphi 2009, vi sono
trabocchetti e situazioni dove è necessario un intervento di modifica del codice affinché il
codice sorgente si compili e funzioni correttamente.
Non ripetero qui tutti i dettagli delle operazioni da seguire, delle cose che cambiano e di quelle
che rimangono uguali nel passaggio da Win32 a Win64, per cui mi limito ad alcune osservazioni
della presentazione degne di nota, rimandando al sito ufficiale di Embarcadero per
l'approfondimento dei dettagli, nella sezione appositamente dedicata ai 64 bit
(http://www.embarcadero.com/products/delphi/64-bit).
Il supporto a Windows 64 bit è stato introdotto per la VCL ma è disponibile – ovviamente –
anche per FireMonkey, assieme al supporto per Win32 e a quello per Mac OSX e iOS.
Per la libreria VCL, XE2 propone un'altra nuova e interessante feature. Sino a ieri, applicare stili
grafici a un'applicazione VCL era possibile esclusivamente tramite componenti di terze parti
oppure attraverso complicati “workaround”. Oggi questo non è più necessario, poiché la
libreria VCL dispone di un supporto standard a stili personalizzati (custom), denominato VCL
Styles.
Il nuovo sistema di supporto ai temi sostituisce il precedente sistema (incentrato solo sul “look
& feel” di Windows) introducendo un engine configurabile che permette di applicare stili ai
controlli visuali (nella gerarchia VCL, a partire dalla classe TGraphicControl), con sole
poche eccezioni, come i menu di popup, i “Ribbon Controls” e le finestre di dialogo fornite dal
sistema operativo.
Nella finestra delle opzioni del progetto è disponibile una nuova voce, “Appearance”, che
consente di selezionare un tema fra quelli disponibili e forniti assieme al prodotto, a cui se ne
possono aggiungere altri creati ex novo.
Tramite un tool integrato nell'IDE, VCL Style Designer, è possibile andare a definire l'aspetto dei
controlli con una precisione chirurgica, con l'opportunità di esportare una immagine pronta
all'uso che contiene la rappresentazione grafica dei controlli e che può essere modificata
attraverso un programma grafico esterno (es. Photoshop) e reimportata per creare una gamma
infinita di nuovi stili, in grado di dare un aspetto del tutto rinnovato e accattivante
all'applicazione.
Esistono poi classi specifiche che consentono di accedere e caricare a runtime diversi temi; in
questo modo, all'occorrenza, si può decidere di creare e distribuire un'applicazione che
supporta diversi stili grafici selezionabili a piacimento da parte dell'utente finale.
Anche la libreria RTL ha visto l'introduzione di novità in XE: sono presenti nuove classi, come
TOSVersion (che fornisce informazioni dettagliate sull'ambiente operativo in cui viene eseguita
l'applicazione, molto utile nell'ambito crossplatform), TLoginCredentialService (un sistema
astratto di gestione delle credenziali), TZipFile (una classe per la gestione di file ZIP, che ha la
peculiarità di essere anch'essa crossplatform) e altre ancora.

Daniele Teti: LiveBindings
A seguire, la presentazione di Daniele Teti
dedicata interamente a una delle novità più
interessanti di XE2: LiveBindings.
LiveBindings è una tecnologia fruibile sia nelle
applicazioni VCL sia in quelle basate su
FireMonkey.
Ma che cos'è esattamente? Si tratta di una
feature che si basa su espressioni relazionali,
chiamate binding expression, che mettono in
comunicazione tra loro oggetti, oppure
componenti.
Ad esempio, tramite LiveBindings è possibile definire un'espressione che collega due controlli
visuali, una casella di testo (TEdit) a un'etichetta (TLabel), in modo che al variare del testo
inserito nella casella l'etichetta venga automaticamente aggiornata con il valore presente nella
casella. Ciò avviene aggiungendo la chiamata a un semplice metodo, Notify(), quando varia
il contenuto nella casella di testo, affinché Delphi possa ricalcolare il valore dell'espressione e
aggiornare il controllo di destinazione, cioè l'etichetta.
Ovviamente, questo è solo un esempio – forse il più semplice – del meccanismo di
funzionamento di LiveBindings, ma le possibilità offerte da questo nuovo sistema integrato in
Delphi sono ben più ampie. E' possibile collegare controlli a un database o a un'altra origine
dati, utilizzando i componenti preposti a questo scopo.
In generale, LiveBindings mette a disposizione diversi componenti che consentono nella
sostanza di definire espressioni a designtime affinché vengano valutate a runtime.
L'impossibilità di risolvere un'espressione a runtime da luogo a un'eccezione.
L'introduzione di LiveBindings, oltre a rappresentare un efficace meccanismo di data binding in
FireMonkey (dove non sono presenti controlli specificatamente data aware), apre nuovi scenari
alle nostre applicazioni, poiché le espressioni possono rappresentare una parte consistente di
business logic. Si pensi ad esempio a una maschera che effettua il calcolo del prezzo di più
prodotti moltiplicato per la loro quantità e il totale complessivo: con LiveBindings si potrebbero
introdurre tutte le espressioni che correlano i valori mostrati e sarebbe sufficiente informare il
sistema del cambiamento di uno o più valori per calcolare e aggiornare automaticamente gli
altri e mostrarli a video, analogamente a quanto avviene in un foglio elettronico. Oppure
ancora, tali espressioni potrebbero essere caricate a runtime da un file esterno, offrendo
opportunità di personalizzazione interessanti alle applicazioni di tipo gestionale e affini,
personalizzabili anche dall'utente finale, o in strumenti dedicati al test.

Marco Cantù: RAD Cloud API e novità di DataSnap
Come nell'edizione precedente, XE2 include i
componenti per l'accesso ai servizi cloud,
che forniscono applicazioni e dati on demand
(al consumo), come Microsoft Azure
(http://www.microsoft.com/windowsazure)
o        Amazon         Web          Services
(http://aws.amazon.com).
La novità in termini di connettività al cloud,
presentata          da        Cantù,         risiede
nell'introduzione di una serie di classi comuni
che consentono di astrarre le operazioni che
possono essere eseguite sul cloud,
indipendentemente dal tipo di service
effettivo a cui ci si collega: tali classi costituiscono la nuova “RAD Cloud API”.
Attraverso questa API, è possibile creare applicazioni basate sul cloud rimandando la scelta
dello “storage” effettivo a un secondo momento, quindi astraendolo nel corso dello sviluppo.
Embarcadero ha introdotto inoltre un tool per il debug su cloud e per il deploy remotizzato
delle applicazioni, che consente di gestire anche il rilascio di risorse e dei driver utilizzati.
Queste feature, non presenti in altri ambienti di sviluppo, rendono XE2 un tool particolarmente
                                                  innovativo dal punto di vista del supporto al
                                                  cloud, per estensione delle piattaforme
                                                  supportate, delle librerie e più in generale degli
                                                  strumenti a disposizione.
                                                   Nell'ambito delle architetture multitier, anche
                                                   DataSnap è stato potenziato con l'introduzione
                                                   del supporto al monitoraggio e controllo delle
                                                   connessioni TCP, molto utili in fase di
diagnostica di possibili problemi e di amministrazione del server, che sfrutta una nuova
gestione irrobustita delle connessioni, a cui si aggiunge la possibilità di attivare un meccanismo
keep-alive, di sfruttare nuovi filtri per encryption e security, di sfruttare un Session Manager più
evoluto e un supporto a JSON migliorato rispetto alla versione precedente. DataSnap
introduce inoltre i DataSnap Mobile Connectors, trattati ampiamente nella sessione successiva.
Daniele Teti: DataSnap Mobile Connectors
Alle funzionalità migliorate ed estese di DataSnap è stato affiancato un insieme di generatori di
proxy, specificatamente rivolto alle piattaforme mobile, in grado di produrre il codice di una
classe proxy del proprio server DataSnap personalizzato nei linguaggi più diffusi (ad esempio,
Objective-C per iOS, C# per Windows Phone 7 Silverlight, Java per Android e Blackberry).
Con il supporto del componente DSProxyDispatcher e del
tool “Win32ProxyDownloader”, richiamato con parametri
specifici (che definiscono le “coordinate” per l'accesso al
server DataSnap e il linguaggio di destinazione), è
possibile creare una cartella che conterrà i file sorgenti ed
eventuali runtime pronti ad essere utilizzati direttamente
nello sviluppo dell'applicazione con uno degli ambienti e
dei linguaggi di programmazione elencati sopra.
A mio parere, si tratta di una feature di estrema utilità per chi sviluppa tradizionalmente logiche
server in Delphi ma adotta anche altri ambienti e linguaggi per la creazione di applicazioni su
dispositivi mobili (ad esempio, per coloro che utilizzano Eclipse con Android SDK per lo sviluppo
di programmi sui dispositivi che montano il noto e sempre più diffuso sistema operativo
Google), facilitando ulteriormente l'integrazione di Delphi con altre tecnologie, prodotti,
librerie e framework esistenti, quindi valorizzando ancora di più il proprio server nativo
DataSnap.
Per illustrare il funzionamento dei proxy generator, i presenti dotati di smartphone Android
hanno partecipato alla dimostrazione scaricando “CompanyTweet”, un'applicazione che invia
messaggi brevi, simili a “tweet”, a un server DataSnap in grado di raccoglierli e mostrarli su
grande schermo. La presentazione si è conclusa con un “feedback vibrante” inviato dal server
DataSnap a tutti i cellulari connessi.

Conclusione
                                                         La giornata di presentazione, davvero
                                                         ricca di contenuti, si è conclusa con il
                                                         consueto “giro” di domande e risposte
                                                         finali, premiate con simpatici gadget
                                                         (una maglietta e un portachiavi targate
                                                         “FireMonkey”). Molti quesiti sono stati
                                                         particolarmente specifici e riferiti a
                                                         esigenze estremamente soggettive,
                                                         quindi riporto solamente quelli che, a
                                                         mio avviso, hanno riguardato interessi
                                                         di carattere più generale.
Un paio di domande hanno sondato le tempistiche previste per il rilascio di compilatori per
Linux e Android: Jason Vokes ha risposto che l'intenzione di abbracciare queste piattaforme
c'è, con particolare riferimento ad Android, ma al momento non vi sono date certe della loro
disponibilità.
Altri partecipanti hanno espresso preoccupazioni in merito al destino della VCL a fronte
dell'avvento di FireMonkey, senza usare mezze parole: «la VCL farà una brutta fine?». La risposta
di Jason è stata negativa, in quanto la piattaforma a cui fa riferimento la libreria VCL (cioè la
Windows API in generale, a 32 e 64 bit) esiste e continuerà ad esistere ancora per parecchi anni.
FireMonkey è semplicemente la proposta a disposizione di coloro che vogliono espandere il
business delle proprie applicazioni.
Altri sviluppatori hanno chiesto chiarimento in merito allo stato dei tool di reportistica presenti
in XE2. In questo senso, ci sono delle interessanti novità: oltre alla presenza del classico RAVE
Reports, che rimpiazza da anni il precedente QuickReport, all'interno del tool di sviluppo è
inclusa anche una versione di FastReport VCL, assieme a tutti gli altri tool di terze parti già
introdotti nella linea XE, come AQTime, Beyond Compare, CodeSite, FinalBuilder, per citarne
alcuni tra quelli più coinvolti nell'uso quotidiano dell'ambiente di sviluppo.

Considerazioni finali
Aggiungo alcune considerazioni del tutto personali alla giornata di presentazione e ai suoi
contenuti.
Innanzitutto, ritengo un fatto assolutamente positivo, sia per il prodotto sia per la sua
community di sviluppatori, tutte le novità che Embarcadero ha inserito in questa nuova release:
finalmente Delphi torna a far parlare di sé e fornisce agli sviluppatori che decidono di utilizzarlo
nuove e importanti argomentazioni per giustificare la propria scelta, aumentando le
caratteristiche già peculiari del prodotto e “strizzando l'occhio” (in modo abbastanza
energico, per la verità) a nuove piattaforme a cui è possibile espandere il proprio mercato.
Dopo alcuni anni di (relativa) stagnazione, intesa come mancanza di novità eclatanti
(probabilmente causata dalla migrazione faticosa da Borland a CodeGear, poi a Embarcadero)
finalmente si inizia a vedere e toccare con mano il frutto degli investimenti dichiarati in ogni
sede.
Il rilascio di questa versione ha prodotto inoltre parecchio fermento tra i blogger abituali che
espongono quotidianamente le proprie esperienze di sviluppo con Delphi, a cui se ne sono
aggiunti tanti altri che hanno iniziato a produrre articoli di sicuro interesse raccontando i
risultati delle proprie ricerche sulle nuove caratteristiche di XE2, o per avanzare le prime critiche
costruttive a difetti riscontrati o a integrazioni che ritengono indispensabili. Nuovi gruppi si
sono poi formati su vari social network, ad esempio su Facebook, per discutere delle novità o
per cercare aiuto immediato, in attesa di vedere pubblicata nuova manualistica e
documentazione per poter apprendere in modo più “accademico” il funzionamento dei tool
messi a disposizione dalla nuova release. Persino i vetusti “newsgroup” hanno ripreso a
discutere maggiormente rispetto al passato.
In conclusione, XE2 si rileva un'ottima release in grado di risvegliare l'interesse di coloro che
lavorano con Delphi, e magari “costringere” qualcuno a migrare finalmente dal proprio Delphi
7; oltre a questo, XE2 ha senz'altro tutte le carte in regola per cominciare a incuriosire e
attrarre anche quelli che utilizzano abitualmente altri tool di sviluppo, soprattutto laddove
questo avviene per una sorta di “pregiudizio disinformato” nei confronti di Delphi, del suo
linguaggio e delle potenzialità di tutto rispetto che invece è in grado di offrire.


Lunga vita a Delphi! (da oggi, non più solo su Windows)
Informazioni sull'autore

                                Marco Breveglieri
                                Software & Web Developer
                                Sono responsabile legale di ABLS Team, un’azienda di consulenza
                                informatica che si occupa di sviluppo software, realizzazione di siti
                                Web, corsi su linguaggi di programmazione e tecnologie correlate,
                                installazione e configurazione di reti aziendali, networking, Office
                                Automation e altri servizi informatici rivolti ad aziende e utenti
                                finali.
                               Io mi occupo in modo particolare dello sviluppo di software per
Microsoft Windows e .NET Framework, della creazione e design di siti Web e
dell’organizzazione di corsi di programmazione (principalmente su Delphi e C#/VB.NET).
        Per contattarmi,
        www.marco.breveglieri.name




Ringraziamenti
Si ringrazia Paolo Rossi per le fotografie.

Contenu connexe

En vedette

Gfh 2011 presentation abrann
Gfh 2011 presentation abrannGfh 2011 presentation abrann
Gfh 2011 presentation abrann
abrann
 
Correction md2 fabien orienté object
Correction md2 fabien orienté objectCorrection md2 fabien orienté object
Correction md2 fabien orienté object
yahyaoui hamdi
 
Medi tema 3 word
Medi tema 3 wordMedi tema 3 word
Medi tema 3 word
cpnapenyal
 
Presentation from audio skills
Presentation from audio skillsPresentation from audio skills
Presentation from audio skills
Debbi123
 
Proyecto
ProyectoProyecto
Proyecto
Ana01OG
 
SCHOOL MAGAZINE
SCHOOL MAGAZINESCHOOL MAGAZINE
SCHOOL MAGAZINE
miaspicerx
 

En vedette (20)

Code Orange Gfh V3
Code Orange Gfh V3Code Orange Gfh V3
Code Orange Gfh V3
 
Gfh 2011 presentation abrann
Gfh 2011 presentation abrannGfh 2011 presentation abrann
Gfh 2011 presentation abrann
 
Parent resources
Parent resourcesParent resources
Parent resources
 
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, PiacenzaSviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
Sviluppo Web con React e Delphi - Seminario Delphi Day 2016, Piacenza
 
2010 November Career Search Presentation
2010 November Career Search Presentation2010 November Career Search Presentation
2010 November Career Search Presentation
 
Tu aimes...?
Tu aimes...?Tu aimes...?
Tu aimes...?
 
Correction md2 fabien orienté object
Correction md2 fabien orienté objectCorrection md2 fabien orienté object
Correction md2 fabien orienté object
 
20121018104243
2012101810424320121018104243
20121018104243
 
áLbum de fotografías.pptx tina.
áLbum de fotografías.pptx  tina.áLbum de fotografías.pptx  tina.
áLbum de fotografías.pptx tina.
 
Medi tema 3 word
Medi tema 3 wordMedi tema 3 word
Medi tema 3 word
 
Produção de Conteudo em Ambiente Web
Produção de Conteudo em Ambiente WebProdução de Conteudo em Ambiente Web
Produção de Conteudo em Ambiente Web
 
Valores
ValoresValores
Valores
 
Presentation from audio skills
Presentation from audio skillsPresentation from audio skills
Presentation from audio skills
 
Me, Ben and Tamsin
 Me, Ben and Tamsin  Me, Ben and Tamsin
Me, Ben and Tamsin
 
Rumo ao Governo Em Rede - PMSP RH
Rumo ao Governo Em Rede - PMSP RHRumo ao Governo Em Rede - PMSP RH
Rumo ao Governo Em Rede - PMSP RH
 
Conhecimento e Inovação em Gestão Pública CBTIM 2009
Conhecimento e Inovação em Gestão Pública CBTIM 2009Conhecimento e Inovação em Gestão Pública CBTIM 2009
Conhecimento e Inovação em Gestão Pública CBTIM 2009
 
Brechas tecnologicas en perforación
Brechas tecnologicas en perforaciónBrechas tecnologicas en perforación
Brechas tecnologicas en perforación
 
Proyecto
ProyectoProyecto
Proyecto
 
Ser Mujer, Viajante Y Mochilera (Y Iniciar A Viajar A Los diecinueve Años)
Ser Mujer, Viajante Y Mochilera (Y Iniciar A Viajar A Los diecinueve Años)
Ser Mujer, Viajante Y Mochilera (Y Iniciar A Viajar A Los diecinueve Años)
Ser Mujer, Viajante Y Mochilera (Y Iniciar A Viajar A Los diecinueve Años)
 
SCHOOL MAGAZINE
SCHOOL MAGAZINESCHOOL MAGAZINE
SCHOOL MAGAZINE
 

Similaire à Reportage "RAD Studio XE2 World Tour"

Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
Fabio Cozzolino
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
Nicola Pedot
 
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARSviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Giacomo Giovanni Delfini
 

Similaire à Reportage "RAD Studio XE2 World Tour" (20)

Flash Platform su dispositivi mobili
Flash Platform su dispositivi mobiliFlash Platform su dispositivi mobili
Flash Platform su dispositivi mobili
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
 
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...Future Decoded Roma  - Visual Studio, Cordova e Ionic Framework  to create X-...
Future Decoded Roma - Visual Studio, Cordova e Ionic Framework to create X-...
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Flash vs jQuery
Flash vs jQueryFlash vs jQuery
Flash vs jQuery
 
MobileDevCamp2012 - Android
MobileDevCamp2012 - AndroidMobileDevCamp2012 - Android
MobileDevCamp2012 - Android
 
Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)Meego Italian Day 2011 - Francesco Baldassarri (1)
Meego Italian Day 2011 - Francesco Baldassarri (1)
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015Italian C++ MeetUp - 24/10/2015
Italian C++ MeetUp - 24/10/2015
 
Mobile platforms development overview
Mobile platforms development overviewMobile platforms development overview
Mobile platforms development overview
 
Conferenza Pymaemo
Conferenza PymaemoConferenza Pymaemo
Conferenza Pymaemo
 
Tesi
TesiTesi
Tesi
 
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
Xamarin: Shared Library and Portable Class Library - Aristide Di Francesco - ...
 
Mobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web DevelopersMobile Development: una introduzione per Web Developers
Mobile Development: una introduzione per Web Developers
 
Presentazione+Android
Presentazione+AndroidPresentazione+Android
Presentazione+Android
 
Formazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via webFormazione on line (e-learning) e conferenze via web
Formazione on line (e-learning) e conferenze via web
 
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su ARSviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
Sviluppo di una piattaforma CLIENT/SERVER per attività didattiche basate su AR
 

Plus de Marco Breveglieri

Plus de Marco Breveglieri (9)

Delphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del TestingDelphi & Dintorni Webinar - Diventa un mago del Testing
Delphi & Dintorni Webinar - Diventa un mago del Testing
 
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con DelphiDelphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
Delphi & Dintorni Webinar - Padroneggiare i principi SOLID con Delphi
 
Does The Delphi IDE Narrow You? Extend It! - ITDevConX European Delphi Confer...
Does The Delphi IDE Narrow You? Extend It! - ITDevConX European Delphi Confer...Does The Delphi IDE Narrow You? Extend It! - ITDevConX European Delphi Confer...
Does The Delphi IDE Narrow You? Extend It! - ITDevConX European Delphi Confer...
 
Creare un Information Radiator con Delphi
Creare un Information Radiator con DelphiCreare un Information Radiator con Delphi
Creare un Information Radiator con Delphi
 
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
"Non Aprite Quella Unit!" ovvero "Scrivere Clean Code in Delphi
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
Applicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e DelphiApplicazioni Web ultra-performanti con Vue.js e Delphi
Applicazioni Web ultra-performanti con Vue.js e Delphi
 
Create a Bot with Delphi and Telegram - ITDevCon 2016
Create a Bot with Delphi and Telegram - ITDevCon 2016Create a Bot with Delphi and Telegram - ITDevCon 2016
Create a Bot with Delphi and Telegram - ITDevCon 2016
 
Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016Web Development with Delphi and React - ITDevCon 2016
Web Development with Delphi and React - ITDevCon 2016
 

Reportage "RAD Studio XE2 World Tour"

  • 1. Reportage “RAD Studio XE2 World Tour” di Marco Breveglieri Pubblicato il 07/10/11
  • 2. Introduzione Al momento in cui scrivo, Embarcadero ha concluso da alcuni giorni il suo tour per mostrare in giro il mondo la nuova versione di Delphi, o meglio di RAD Studio: XE2. Tra le varie tappe internazionali, il “RAD Studio XE2 World Tour” ha toccato anche l'Italia, precisamente Milano il 21 settembre e Roma il giorno successivo. Le novità introdotte in questa versione del tool di sviluppo sono davvero tante, motivo per cui ho pensato di redigere questo reportage per elencare quelle che – a livello personale e soggettivo – ritengo le innovazioni più interessanti e degne di nota, e magari sciogliere qualche dubbio a coloro che non hanno potuto partecipare, raccontando gli avvenimenti della giornata di presentazione. Il rilascio di XE2 ha senz'altro ravvivato l'interesse di molti sviluppatori: la presentazione a cui ho assistito è quella tenutasi a Milano, che ha visto la presenza di oltre 200 persone, a cui si aggiungono circa altri 100 sviluppatori che hanno partecipato all'appuntamento di Roma previsto per il giorno dopo. Opening La presentazione di Milano si è aperta con il benvenuto di Fabrizio Bitti (bitTime Software, rappresentanza italiana di Embarcadero), che ha introdotto la numerosa platea ai contenuti della giornata e ha preannunciato alcuni eventi imminenti rivolti in modo particolare agli sviluppatori Delphi. In una battuta ironica, ma reale, Fabrizio ha definito XE2 come «la migliore versione di sempre», grazie a tutte le nuove feature presentate di lì a breve. Fabrizio ha ricordato inoltre la possibilità, introdotta di recente da Embarcadero, di conseguire la Delphi Certification, disponibile nei livelli Developer (che può essere ottenuta online ed è in offerta gratuitamente per chi acquista una licenza) e Master (che invece richiede la propria presenza fisica presso un centro di formazione autorizzato). Maggiori informazioni a riguardo si possono trovare alla pagina ufficiale sul sito Embarcadero (http://www.embarcadero.com/certification). A fine ottobre si terrà inoltre ITDevCon, la terza edizione della European Delphi Conference italiana, con diverse sessioni (di durata più lunga rispetto al passato) organizzati in più “track” tematiche, e senz'altro XE2 sarà uno dei protagonisti principali. Tutte le informazioni sull'evento, che avrà luogo a Verona il 27/28 ottobre, si trovano sul sito ufficiale (http://www.itdevcon.it). Pubblicato il 07/10/11
  • 3. Dopo aver preannunciato la disponibilità in palio di una licenza premio di RAD Studio Architect sorteggiata tra i partecipanti al termine della giornata, Fabrizio ha “passato la palla” a Jason Vokes, Director of Technologies and Marketing presso Embarcadero, per il “keynote” iniziale. Jason Vokes: Keynote Jason Vokes ha iniziato il “keynote” illustrando gli obiettivi prefissati nella realizzazione di XE2: portare RAD Studio a raggiungere la maggior parte delle piattaforme attive ad oggi. Con XE2 è possibile produrre veloci applicazioni native non solo per Windows, ma anche per Mac OSX, per il Web e per le piattaforme Mobile, con l'opportunità di scrivere la propria applicazione una sola volta e compilarla su diverse piattaforme e su più dispositivi (come smartphone e tablet) di uso quotidiano. Esistono parecchi linguaggi che consentono di sviluppare applicazioni crossplatform, ma pochi possono contare su una gamma di funzionalità RAD pari a quelle fornite dall'ambiente Delphi, data rich e component based. Nonostante l'ambiente fornisca tool per lo sviluppo rapido di applicazioni, come per le versioni precedenti, anche XE2 consente di scendere nei dettagli architetturali della piattaforma (come avviene con l'uso delle API, delle strutture, dei tipi di dati dei messaggi Windows nella VCL) pur senza rimanere necessariamente legati ad essi. Per dirla con le parole di Jason, «you can get down to the metal, without being tied to it». I programmi ottenuti con XE2 hanno sempre le eccellenti performance tipiche che ci si aspetta dalle applicazioni native prodotte dai compilatori Delphi e C++. A proposito della VCL, è stata introdotta la possibilità di compilare applicazioni a 64 bit per Windows e il supporto ai VCL Styles, un sistema che consente di gestire diversi stili grafici per i principali controlli visuali delle applicazioni, rendendole più moderne e accattivanti. Di queste nuove caratteristiche della libreria VCL si parlerà in dettaglio, con dimostrazioni ed esempi pratici, nelle sessioni successive. La novità più interessante, che ha suscitato un discreto “rumore” sin da prima dell'inizio del “world tour” di Embarcader, è l'avvento di FireMonkey, definita come la piattaforma per applicazioni business della prossima generazione. Si tratta di una libreria grafica vettoriale che permette di creare applicazioni 2D (dette anche “HD”, da High Definition) e 3D. Le applicazioni realizzate con FireMonkey (spesso abbreviato con FMX) sono native e sfruttano la potenza e le prestazioni messe a disposizione delle attuali GPU. La libreria mette a disposizione una suite completa di controlli visuali per lo sviluppo delle applicazioni. I controlli visuali della libreria sono inoltre componibili: ciascun controllo può essere inserito all'interno di un altro, realizzando architetture UI difficili e complesse da ottenere con l'attuale VCL, ad esempio introducendo elementi di tipo eterogeneo, come pulsanti e caselle di testo, all'interno di una ListBox. La gamma dei controlli a disposizione è particolarmente ricca se confrontata con la dotazione di base di altre librerie simili, come WPF (Windows Presentation Foundation), ma tramite la loro composizione è possibile ottenere una serie pressoché infinita di combinazioni di controlli più avanzati.
  • 4. Qualsiasi elemento grafico di FireMonkey, la cui gestione viene affidata alla GPU lasciando molto più scarica e disimpegnata la CPU, è vettoriale: le dimensioni, le posizioni e gli effetti applicati scalano correttamente applicando uno zoom e hanno bordi sempre definiti. A proposito di effetti, la libreria FireMonkey include una pletora di componenti pronti all'uso in grado di fornire animazioni, trasformazioni, filtri, applicabili a qualsiasi controllo grafico relativamente a proprietà quali posizione, dimensioni e contenuti a seconda dei casi, senza la necessità di scrivere nemmeno una riga di codice. Con FireMonkey, usando le parole di Jason, «you can build the app of your dreams». Ma le novità introdotte da XE2 non si fermano alla sfera grafica: grazie al potenziamento della libreria dbExpress (che ora include anche un driver ODBC), dell'architettura DataSnap ancora più funzionale, all'introduzione della tecnologia LiveBindings (di cui si parlerà in seguito), XE2 garantisce possibilità illimitate di connettività a qualsiasi database e data service, anche di propria produzione, non solo per la VCL ma anche per FireMonkey, approdando su altre piattaforme e consentendo quindi di creare applicazioni che si connettono sempre e ovunque a qualsiasi origine dati. XE2 include inoltre nuovi strumenti per lo sviluppo di applicazioni multitier e consente di generare proxy nativi (detti “connector”) dei vostri server DataSnap per la maggior parte dei linguaggi esistenti (Delphi, C++, JavaScript, Java, Android, Objective-C), pronti per essere importati all'interno dei progetti realizzati con questi linguaggi, da voi o da altri collaboratori. Infine, Jason ha presentato le nuove caratteristiche di RadPHP, il tool per lo sviluppo di applicazioni Web in RAD Studio XE2, che include nuovi componenti dedicati al mondo mobile e l'integrazione con PhoneGap, uno strumento che consente di portare applicazioni Web (basate quindi sugli standard HTML, JavaScript e CSS) all'interno di dispositivi mobili come iPhone e Android ed eseguire - come se fossero native – le applicazioni con pieno accesso all'API e alle risorse del dispositivo, come il GPS o la fotocamera, per intenderci. Infine, Jason ha sottolineato anche il valore aggiunto dai numerosi componenti di terze parti, che arricchiscono ulteriormente le opportunità offerte dai tool e dalle librerie della suite. Marco Cantù: FireMonkey Nella sessione successiva, Marco Cantù ha approfondito dal punto di vista tecnico, aiutandosi con alcuni demo autoprodotti, le caratteristiche della nuova libreria “FireMonkey”. Come già detto, FireMonkey è una nuova libreria per lo sviluppo di applicazioni che, a differenza della VCL, non è simbiotica con Windows; ha parecchie somiglianze con altre librerie anch'esse conosciute quali WPF (Windows Presentation Framework) e il fratello minore Silverlight, oppure Adobe Flex, ma FireMonkey è nativa e compilata, è crossplatform e viene fornita con sorgenti, a differenza della concorrenza. La libreria è “GPU powered”: tutta la gestione grafica avviene senza consumare CPU (e questo è facilmente riscontrabile scaricando i numerosi demo a disposizione, compilandoli e lanciandone più istanze contemporaneamente, monitorando l'uso della CPU con il Task Manager).
  • 5. I wizard disponibili consentono di creare nuovi progetti di applicazioni 2D (o HD) e 3D, ma le due modalità grafiche non sono in mutua esclusione: è possibile integrare contenuti 2D in applicazioni 3D, e viceversa, utilizzando appositi pannelli. FireMonkey è una libreria astratta: gli elementi visuali non sono wrapper dei controlli di Windows, non fanno riferimento a handle di alcun tipo, ma vengono completamente disegnati nelle loro parti costituenti, e quindi sono indipendenti da qualsiasi piattaforma specifica, pur consentendo – grazie al supporto degli stili – di adottare il “look & feel” del sistema di riferimento. FireMonkey è una libreria nativa e compilata: le applicazioni sono eseguibili senza bisogno di runtime di supporto, senza dipendenze e senza vincoli sulla piattaforma di destinazione scelta (caratteristiche che la rendono ottimale soprattutto sui dispositivi mobili), e sono in grado di adattarsi e sfruttare le risorse grafiche messe a disposizione dalla libreria GPU presente (OpenGL, DirectX, Quartz e altre). Cantù ha successivamente creato un'applicazione dimostrativa usando l'apposito wizard per mostrare alla platea alcune delle peculiarità di Firemonkey, soprattutto laddove vi sono diversità rispetto alla libreria VCL che tutti conosciamo. Innanzitutto, ciascun controllo – partendo dal più banale e semplice dei pulsanti, ad esempio – in realtà è composto da diversi elementi grafici, quali il rettangolo che ne costituisce il bordo, il testo contenuto al suo interno, la sfumatura del colore di riempimento e gli effetti applicati al passaggio del mouse sull'area del controllo; da qui si comprende la vera potenza della libreria in termini di manipolazione e complessità delle interfacce utente che si possono costruire, potendo comporre liberamente tra di loro tutti gli elementi grafici, partendo da quelli primitivi sino ad arrivare a quelli più complessi forniti “di serie”, in modi assolutamente inarrivabili - se non con pratiche complicatissime di subclassing e custom drawing estremo – con la libreria VCL. In FireMonkey, le proprietà che determinano la posizione e la dimensione dei controlli sono espresse con valori in virgola mobile, e non interi, a cui si aggiungono ulteriori proprietà quali la rotazione e, nel caso del 3D, la profondità. Tutti i controlli che compongono l'interfaccia utente, inoltre, sono perfettamente scalabili e “zoomabili” senza perdere minimamente qualità visiva, mantenendo eccezionali effetti di antialiasing nei bordi e sfumature all'interno dei controlli, senza alcuno sforzo (da qui la definizione di applicazioni HD, da High Definition). Rispetto allo sviluppo con la libreria VCL, viene mantenuta la “logica Delphi” a cui siamo abituati con l'utilizzo dei tipi e delle funzioni della RTL (Run Time Library) e gran parte dei componenti, tra cui quelli per l'accesso ai dati; ciò che cambia completamente è la famiglia dei controlli visuali adottata per creare l'interfaccia utente (UI). Qualsiasi elemento di FireMonkey, che sia separato o incluso in una composizione, può essere “stilizzato”: esiste una finestra integrata nell'IDE che consente di personalizzare tutti gli stili della propria applicazione e di crearne di nuovi, applicandoli agli elementi dell'interfaccia utente. Per quanto riguarda l'accesso ai dati, è LiveBindings a venire in soccorso dello sviluppatore: si tratta di un sistema basato su espressioni che permette di correlare due oggetti tra loro, o meglio le loro proprietà. Di questa nuova risorsa, fruibile anche nelle applicazioni VCL, si parlerà in modo approfondito nella sessione seguente. Per il momento, è sufficiente sottolineare che, attraverso l'uso di componenti dedicati che semplificano il lavoro, il collegamento ai dati (data binding) all'interno di un'applicazione FireMonkey è facile tanto quanto quello tradizionale, se non di più. Infine, è stato mostrato il demo di un'applicazione 3D realizzata con FireMonkey. Anche se
  • 6. l'uso del 3D può apparire come adatto esclusivamente a tipi molto particolari e settoriali di applicazioni, in realtà il suo utilizzo permette di ottenere effetti ben difficilmente riproducibili in 2D. Si pensi alla visualizzazione consecutiva di immagini differenti e al diverso effetto che si può ottenere passando da un'immagine all'altra con una rotazione rispetto al cambio repentino che si ottiene con un normale controllo TImage della VCL. Per concludere, una precisazione doverosa fatta da Marco e Jason in merito al “destino” della libreria VCL. Come ha detto Jason, «VCL is here to stay»: la libreria FireMonkey non va intesa come un rimpiazzo della VCL, né come l'intenzione di abbandonare quest'ultima, che continuerà ad essere supportata fino a quando esisterà la piattaforma nativa Windows su cui si basa, tant'è vero che in XE2 sono state aggiunte interessanti feature alla VCL, anch'esse tra i temi della giornata. Ciò che si può effettivamente dire è che con FireMonkey si aprono nuovi scenari, l'approdo a nuovi tipi di piattaforme e dispositivi, sia nel presente che nel futuro e la possibilità di concepire e realizzare interfacce utente di nuova generazione. Daniele Teti: supporto a 64 bit e “VCL Styles” La sessione successiva, tenuta da Daniele Teti, si è concentrata su quella che fino a pochi giorni prima era considerata la feature principale, la più annunciata e la più attesa da molti sviluppatori, anche se l'arrivo di FireMonkey le ha lecitamente sottratto un po' di curiosità: il supporto a Windows 64 bit. Nella maggior parte dei casi, attivare il supporto alla piattaforma 64 bit in un progetto Delphi è un'operazione semplicissima: è sufficiente fare clic con il tasto destro su Target Platforms nella finestra del Project Manager, scegliere “64-bit Windows” nella finestra di dialogo che viene mostrata e ricompilare l'applicazione. Tuttavia, come è avvenuto nel precedente passaggio a Unicode con Delphi 2009, vi sono trabocchetti e situazioni dove è necessario un intervento di modifica del codice affinché il codice sorgente si compili e funzioni correttamente. Non ripetero qui tutti i dettagli delle operazioni da seguire, delle cose che cambiano e di quelle che rimangono uguali nel passaggio da Win32 a Win64, per cui mi limito ad alcune osservazioni della presentazione degne di nota, rimandando al sito ufficiale di Embarcadero per l'approfondimento dei dettagli, nella sezione appositamente dedicata ai 64 bit (http://www.embarcadero.com/products/delphi/64-bit). Il supporto a Windows 64 bit è stato introdotto per la VCL ma è disponibile – ovviamente – anche per FireMonkey, assieme al supporto per Win32 e a quello per Mac OSX e iOS. Per la libreria VCL, XE2 propone un'altra nuova e interessante feature. Sino a ieri, applicare stili grafici a un'applicazione VCL era possibile esclusivamente tramite componenti di terze parti oppure attraverso complicati “workaround”. Oggi questo non è più necessario, poiché la libreria VCL dispone di un supporto standard a stili personalizzati (custom), denominato VCL Styles. Il nuovo sistema di supporto ai temi sostituisce il precedente sistema (incentrato solo sul “look & feel” di Windows) introducendo un engine configurabile che permette di applicare stili ai controlli visuali (nella gerarchia VCL, a partire dalla classe TGraphicControl), con sole
  • 7. poche eccezioni, come i menu di popup, i “Ribbon Controls” e le finestre di dialogo fornite dal sistema operativo. Nella finestra delle opzioni del progetto è disponibile una nuova voce, “Appearance”, che consente di selezionare un tema fra quelli disponibili e forniti assieme al prodotto, a cui se ne possono aggiungere altri creati ex novo. Tramite un tool integrato nell'IDE, VCL Style Designer, è possibile andare a definire l'aspetto dei controlli con una precisione chirurgica, con l'opportunità di esportare una immagine pronta all'uso che contiene la rappresentazione grafica dei controlli e che può essere modificata attraverso un programma grafico esterno (es. Photoshop) e reimportata per creare una gamma infinita di nuovi stili, in grado di dare un aspetto del tutto rinnovato e accattivante all'applicazione. Esistono poi classi specifiche che consentono di accedere e caricare a runtime diversi temi; in questo modo, all'occorrenza, si può decidere di creare e distribuire un'applicazione che supporta diversi stili grafici selezionabili a piacimento da parte dell'utente finale. Anche la libreria RTL ha visto l'introduzione di novità in XE: sono presenti nuove classi, come TOSVersion (che fornisce informazioni dettagliate sull'ambiente operativo in cui viene eseguita l'applicazione, molto utile nell'ambito crossplatform), TLoginCredentialService (un sistema astratto di gestione delle credenziali), TZipFile (una classe per la gestione di file ZIP, che ha la peculiarità di essere anch'essa crossplatform) e altre ancora. Daniele Teti: LiveBindings A seguire, la presentazione di Daniele Teti dedicata interamente a una delle novità più interessanti di XE2: LiveBindings. LiveBindings è una tecnologia fruibile sia nelle applicazioni VCL sia in quelle basate su FireMonkey. Ma che cos'è esattamente? Si tratta di una feature che si basa su espressioni relazionali, chiamate binding expression, che mettono in comunicazione tra loro oggetti, oppure componenti. Ad esempio, tramite LiveBindings è possibile definire un'espressione che collega due controlli visuali, una casella di testo (TEdit) a un'etichetta (TLabel), in modo che al variare del testo inserito nella casella l'etichetta venga automaticamente aggiornata con il valore presente nella casella. Ciò avviene aggiungendo la chiamata a un semplice metodo, Notify(), quando varia il contenuto nella casella di testo, affinché Delphi possa ricalcolare il valore dell'espressione e aggiornare il controllo di destinazione, cioè l'etichetta. Ovviamente, questo è solo un esempio – forse il più semplice – del meccanismo di funzionamento di LiveBindings, ma le possibilità offerte da questo nuovo sistema integrato in Delphi sono ben più ampie. E' possibile collegare controlli a un database o a un'altra origine dati, utilizzando i componenti preposti a questo scopo. In generale, LiveBindings mette a disposizione diversi componenti che consentono nella sostanza di definire espressioni a designtime affinché vengano valutate a runtime.
  • 8. L'impossibilità di risolvere un'espressione a runtime da luogo a un'eccezione. L'introduzione di LiveBindings, oltre a rappresentare un efficace meccanismo di data binding in FireMonkey (dove non sono presenti controlli specificatamente data aware), apre nuovi scenari alle nostre applicazioni, poiché le espressioni possono rappresentare una parte consistente di business logic. Si pensi ad esempio a una maschera che effettua il calcolo del prezzo di più prodotti moltiplicato per la loro quantità e il totale complessivo: con LiveBindings si potrebbero introdurre tutte le espressioni che correlano i valori mostrati e sarebbe sufficiente informare il sistema del cambiamento di uno o più valori per calcolare e aggiornare automaticamente gli altri e mostrarli a video, analogamente a quanto avviene in un foglio elettronico. Oppure ancora, tali espressioni potrebbero essere caricate a runtime da un file esterno, offrendo opportunità di personalizzazione interessanti alle applicazioni di tipo gestionale e affini, personalizzabili anche dall'utente finale, o in strumenti dedicati al test. Marco Cantù: RAD Cloud API e novità di DataSnap Come nell'edizione precedente, XE2 include i componenti per l'accesso ai servizi cloud, che forniscono applicazioni e dati on demand (al consumo), come Microsoft Azure (http://www.microsoft.com/windowsazure) o Amazon Web Services (http://aws.amazon.com). La novità in termini di connettività al cloud, presentata da Cantù, risiede nell'introduzione di una serie di classi comuni che consentono di astrarre le operazioni che possono essere eseguite sul cloud, indipendentemente dal tipo di service effettivo a cui ci si collega: tali classi costituiscono la nuova “RAD Cloud API”. Attraverso questa API, è possibile creare applicazioni basate sul cloud rimandando la scelta dello “storage” effettivo a un secondo momento, quindi astraendolo nel corso dello sviluppo. Embarcadero ha introdotto inoltre un tool per il debug su cloud e per il deploy remotizzato delle applicazioni, che consente di gestire anche il rilascio di risorse e dei driver utilizzati. Queste feature, non presenti in altri ambienti di sviluppo, rendono XE2 un tool particolarmente innovativo dal punto di vista del supporto al cloud, per estensione delle piattaforme supportate, delle librerie e più in generale degli strumenti a disposizione. Nell'ambito delle architetture multitier, anche DataSnap è stato potenziato con l'introduzione del supporto al monitoraggio e controllo delle connessioni TCP, molto utili in fase di diagnostica di possibili problemi e di amministrazione del server, che sfrutta una nuova gestione irrobustita delle connessioni, a cui si aggiunge la possibilità di attivare un meccanismo keep-alive, di sfruttare nuovi filtri per encryption e security, di sfruttare un Session Manager più evoluto e un supporto a JSON migliorato rispetto alla versione precedente. DataSnap introduce inoltre i DataSnap Mobile Connectors, trattati ampiamente nella sessione successiva.
  • 9. Daniele Teti: DataSnap Mobile Connectors Alle funzionalità migliorate ed estese di DataSnap è stato affiancato un insieme di generatori di proxy, specificatamente rivolto alle piattaforme mobile, in grado di produrre il codice di una classe proxy del proprio server DataSnap personalizzato nei linguaggi più diffusi (ad esempio, Objective-C per iOS, C# per Windows Phone 7 Silverlight, Java per Android e Blackberry). Con il supporto del componente DSProxyDispatcher e del tool “Win32ProxyDownloader”, richiamato con parametri specifici (che definiscono le “coordinate” per l'accesso al server DataSnap e il linguaggio di destinazione), è possibile creare una cartella che conterrà i file sorgenti ed eventuali runtime pronti ad essere utilizzati direttamente nello sviluppo dell'applicazione con uno degli ambienti e dei linguaggi di programmazione elencati sopra. A mio parere, si tratta di una feature di estrema utilità per chi sviluppa tradizionalmente logiche server in Delphi ma adotta anche altri ambienti e linguaggi per la creazione di applicazioni su dispositivi mobili (ad esempio, per coloro che utilizzano Eclipse con Android SDK per lo sviluppo di programmi sui dispositivi che montano il noto e sempre più diffuso sistema operativo Google), facilitando ulteriormente l'integrazione di Delphi con altre tecnologie, prodotti, librerie e framework esistenti, quindi valorizzando ancora di più il proprio server nativo DataSnap. Per illustrare il funzionamento dei proxy generator, i presenti dotati di smartphone Android hanno partecipato alla dimostrazione scaricando “CompanyTweet”, un'applicazione che invia messaggi brevi, simili a “tweet”, a un server DataSnap in grado di raccoglierli e mostrarli su grande schermo. La presentazione si è conclusa con un “feedback vibrante” inviato dal server DataSnap a tutti i cellulari connessi. Conclusione La giornata di presentazione, davvero ricca di contenuti, si è conclusa con il consueto “giro” di domande e risposte finali, premiate con simpatici gadget (una maglietta e un portachiavi targate “FireMonkey”). Molti quesiti sono stati particolarmente specifici e riferiti a esigenze estremamente soggettive, quindi riporto solamente quelli che, a mio avviso, hanno riguardato interessi di carattere più generale. Un paio di domande hanno sondato le tempistiche previste per il rilascio di compilatori per Linux e Android: Jason Vokes ha risposto che l'intenzione di abbracciare queste piattaforme c'è, con particolare riferimento ad Android, ma al momento non vi sono date certe della loro disponibilità. Altri partecipanti hanno espresso preoccupazioni in merito al destino della VCL a fronte dell'avvento di FireMonkey, senza usare mezze parole: «la VCL farà una brutta fine?». La risposta di Jason è stata negativa, in quanto la piattaforma a cui fa riferimento la libreria VCL (cioè la Windows API in generale, a 32 e 64 bit) esiste e continuerà ad esistere ancora per parecchi anni.
  • 10. FireMonkey è semplicemente la proposta a disposizione di coloro che vogliono espandere il business delle proprie applicazioni. Altri sviluppatori hanno chiesto chiarimento in merito allo stato dei tool di reportistica presenti in XE2. In questo senso, ci sono delle interessanti novità: oltre alla presenza del classico RAVE Reports, che rimpiazza da anni il precedente QuickReport, all'interno del tool di sviluppo è inclusa anche una versione di FastReport VCL, assieme a tutti gli altri tool di terze parti già introdotti nella linea XE, come AQTime, Beyond Compare, CodeSite, FinalBuilder, per citarne alcuni tra quelli più coinvolti nell'uso quotidiano dell'ambiente di sviluppo. Considerazioni finali Aggiungo alcune considerazioni del tutto personali alla giornata di presentazione e ai suoi contenuti. Innanzitutto, ritengo un fatto assolutamente positivo, sia per il prodotto sia per la sua community di sviluppatori, tutte le novità che Embarcadero ha inserito in questa nuova release: finalmente Delphi torna a far parlare di sé e fornisce agli sviluppatori che decidono di utilizzarlo nuove e importanti argomentazioni per giustificare la propria scelta, aumentando le caratteristiche già peculiari del prodotto e “strizzando l'occhio” (in modo abbastanza energico, per la verità) a nuove piattaforme a cui è possibile espandere il proprio mercato. Dopo alcuni anni di (relativa) stagnazione, intesa come mancanza di novità eclatanti (probabilmente causata dalla migrazione faticosa da Borland a CodeGear, poi a Embarcadero) finalmente si inizia a vedere e toccare con mano il frutto degli investimenti dichiarati in ogni sede. Il rilascio di questa versione ha prodotto inoltre parecchio fermento tra i blogger abituali che espongono quotidianamente le proprie esperienze di sviluppo con Delphi, a cui se ne sono aggiunti tanti altri che hanno iniziato a produrre articoli di sicuro interesse raccontando i risultati delle proprie ricerche sulle nuove caratteristiche di XE2, o per avanzare le prime critiche costruttive a difetti riscontrati o a integrazioni che ritengono indispensabili. Nuovi gruppi si sono poi formati su vari social network, ad esempio su Facebook, per discutere delle novità o per cercare aiuto immediato, in attesa di vedere pubblicata nuova manualistica e documentazione per poter apprendere in modo più “accademico” il funzionamento dei tool messi a disposizione dalla nuova release. Persino i vetusti “newsgroup” hanno ripreso a discutere maggiormente rispetto al passato. In conclusione, XE2 si rileva un'ottima release in grado di risvegliare l'interesse di coloro che lavorano con Delphi, e magari “costringere” qualcuno a migrare finalmente dal proprio Delphi 7; oltre a questo, XE2 ha senz'altro tutte le carte in regola per cominciare a incuriosire e attrarre anche quelli che utilizzano abitualmente altri tool di sviluppo, soprattutto laddove questo avviene per una sorta di “pregiudizio disinformato” nei confronti di Delphi, del suo linguaggio e delle potenzialità di tutto rispetto che invece è in grado di offrire. Lunga vita a Delphi! (da oggi, non più solo su Windows)
  • 11. Informazioni sull'autore Marco Breveglieri Software & Web Developer Sono responsabile legale di ABLS Team, un’azienda di consulenza informatica che si occupa di sviluppo software, realizzazione di siti Web, corsi su linguaggi di programmazione e tecnologie correlate, installazione e configurazione di reti aziendali, networking, Office Automation e altri servizi informatici rivolti ad aziende e utenti finali. Io mi occupo in modo particolare dello sviluppo di software per Microsoft Windows e .NET Framework, della creazione e design di siti Web e dell’organizzazione di corsi di programmazione (principalmente su Delphi e C#/VB.NET). Per contattarmi, www.marco.breveglieri.name Ringraziamenti Si ringrazia Paolo Rossi per le fotografie.