mercoledì 10 settembre 2014

FreeDrawing e XE7: multitouch, nuovo menù, immersive mode e splashscreen!

A pochi giorni dall'uscita di RAD Studio XE7, sono riuscito ad aggiungere (con facilità) alcune nuove funzionalità introdotte con XE7 anche alla mia applicazione FreeDrawing (versione 1.0.14)!

I principali cambiamenti:


Supporto multitouch

Ora è possibile usare più di un dito per comporre il proprio disegno. Inoltre, il passaggio dal tradizionale evento OnMouseMove al nuovo OnTouch ha portato anche un sensibile miglioramento nel riconoscimento del tocco;

Disegno multitouch

Immersive Full-Screen mode

l'utente ora può concentrarsi sul proprio disegno sfruttando tutta la superficie tattile disponibile, anche questo grazie al supporto introdotto con XE7 a questa funzionalità di Android 4.4+ ;


Nexus 5, Immersive Full-Screen mode

Nexus 5, Immersive Full-Screen mode, con sticky flag


Splashscreen

Aggiunto senza sforzo grazie al supporto introdotto in XE7;

Nuovo menù con TMultiView

In occasione della semplificazione delle impostazioni relative al tratto, ho reimplementato il menù dell'applicazione utilizzando il TMultiView (altra novità di XE7). Anche in questo caso, tutto è stato molto semplice e ora su dispositivi differenti (smartphone e tablet) si ottiene una rappresentazione del menù idonea al contesto (per esempio con un drawer sui dispositivi più piccoli e con un docked panel sui tablet in orientamento orizzontale).


Tablet Nexus 7, orientamento verticale (notare il pulsante del menù in alto a sinistra)

Tablet Nexus 7, orientamento verticale, drawer aperto


Tablet Nexus 7, orientamento orizzontale, docked panel
Una cosa molto piacevole (che non avevo ancora letto da nessuna parte) è che il drawer si apre anche facendo uno scorrimento del tocco dal bordo sinistro del tablet all'interno del display (quello che chiamano "inward swipe").

Considerazioni:

  • Il nuovo XE7 mi sembra davvero più stabile e veloce delle versioni precedenti, anche nelle fasi di compilazione per le piattaforme mobile (non ho misurato precisamente ma la sensazione è abbastanza netta compilando per Android);
  • Il componente TMultiView è veramente comodo da usare e risolve un problema decisamente ostico da affrontare altrimenti (offrire la migliore esperienza d'uso all'utente a prescindere dal dispositivo che sta usando);
  • Veramente semplice sfruttare anche il supporto multitouch (comunque concordo con Andrey Yefimov e mi sarebbe piaciuto [se possibile] che il parametro Action di OnTouch fosse declinato per ogni elemento di Touches);
  • Il prossimo passo è aggiornare anche la versione iOS (e nell'occasione sfruttare le nuove tecnologie FireUI per differenziare leggermente l'interfaccia fra le versioni iOS e Android)!
  • Ho fatto provare il supporto multitouch ad un paio di amici (Davide & Davide, che ringrazio) possessori di Microsoft Surface Pro e funziona, a breve cercherò di compilare una versione di FreeDrawing anche per Windows (su dispositivi touchscreen)!
Un'applicazione Delphi XE7 di test multitouch in esecuzione su Surface Pro
Microsoft Surface Pro (Tablet Windows)


A presto e buon lavoro!

Andrea

martedì 9 settembre 2014

Delphi XE7: Le novità in dettaglio

Delphi XE7

Da qualche giorno Embarcadero ha rilasciato la versione XE7 dei suoi strumenti RAD (Delphi XE7, C++ Builder XE7, RAD Studio XE7), questa nuova release introduce davvero tante funzionalità distribuite in diverse aree: RTL, FMX e VCL. Vediamo di seguito le principali.

Risorse online



FireUI: Revolutionary Multi-Device Development


In XE7 lo sviluppo Multi-Device, ovvero dispositivi con fattore di forma e dimensioni diverse, è stato semplificato con la modalità di progettazione di FireUI. Il classico "Form Designer" è stato infatti esteso e rinominato "Multi-Device Designer". La nuova modalità dello sviluppo delle form si basa sul concetto di form "master" per condividere tutto il codice e l'interfaccia utente e di viste ereditate (ad esempio per differenti dimensioni e fattori di forma) che contengono la UI o il codice particolare. Queste viste (form) ereditate contengono solo il codice specifico differente dalla vista master, mentre si può continuare a cambiare la vista master avendo la sicurezza che i cambiamenti saranno propagati alle viste ereditate.

XE7 contiene già un set di viste predefinite: Windows Desktop, Surface Pro, Mac Desktop, iPhone, iPad, diversi telefoni e tablet Android ed anche la vista ottimizzata per i Google Glass.

Interessante anche il nuovo componente MultiView Smart Menu (TMultiView) che gestisce automaticamente la posizione, l'orientamento e lo stile di un'area (ad esempio usata per mostrare il menu dell'applicazione) a seconda del fattore di forma e della piattaforma su cui gira l'applicazione. Ad esempio un menu può essere mostrato come un "drawer" in dispositivi con un piccolo schermo o come un pannello "docked" sui dispositivi con schermo grande, tutto ciò avviene semplicemente mettendo il componente sul form ed impostandone alcune proprietà. Ovviamente è anche possibile una personalizzazione via codice completa.

Altra funzionalità molto importante per la gestione di dispositivi hardware molto diversi è la nuova API (FMX) chiamata "Behavior Services". I Behavior Services consentono di ottenere informazioni dai dispositivi hardware su cui gira l'applicazione. Questa API è ad esempio sfruttata proprio dal componente TMultiView per recuperare il tipo di piattaforma, l'orientamento, il fattore di forma, ecc...

Risorse online sull'argomento


Bluetooth e Bluetooth LE con supporto AppTethering

Questa a mio avviso è una delle novità più interessanti, soprattutto per il supporto Bluetooth LE che giocherà un ruolo fondamentale nei prossimi anni nel mondo degli smartphone e più in generale dei dispositivi portatili (e indossabili).
Grazie a ciò AppTethering, acquista quindi il supporto Bluetooth in aggiunta all'attuale supporto WiFi. Da XE7 AppTethering permette anche di connettersi fuori dalla propria subnet.
Da notare che il supporto Bluetooth e Bluetooth LE è inserito a livello di RTL, ciò significa che potranno beneficiarne tutte le applicazioni scritte con Delphi: VCL e FMX

Sempre restando in tema di dispositivi mobili, indossabili e "gadget" vari, XE7 può interfacciarsi con dispositivi anche molto diversi dai tradizionali smartphone, per citarne alcuni: Google Glass, Emotiv Epoc, Amazon FireTV, Ouya, Leap Motion, Kinect, Parrot: AR Drone, Chromecast.
Come vedete non avete che l'imbarazzo della scelta per divertirvi usando i gadget "del momento"! :-)

Risorse online sull'argomento

Parallel Programming library

In Delphi XE7 c'è un'aggiunta molto interessante, la nuova libreria di programmazione parallela (Parallel Programming Library). Potete trovare la libreria in questione nella unit System.Threading (essendo nella RTL è quindi a disposizione di tutte le piattaforma supportate da Delphi). Con la nuova libreria è possibile scrivere codice che riesce a sfruttare al massimo le caratteristiche dell'hardware a disposizione sulla macchina in deployment (numero di core e carico di lavoro). La libreria mette a disposizione diverse classi che consentono operazione quali il "Parallel For", la schedulazione di task, il wait for tasks e i "Future".  
A mio avviso l'introduzione di questa libreria va a colmare una mancanza storica nella class library di Delphi permettendo la scrittura di codice "parallelo" facilmente scalabile su architetture Multi-Core. 

Risorse online sull'argomento

Enterprise Mobility Services (EMS)

Enterprise Mobility Services (EMS) è una soluzione pronta all'uso per mettere in deployment application server che usano tecnologie standard (chiamate REST e dati JSON) e che possono ospitare moduli di accesso dati e business logic. 
Per far capire meglio di che si tratta, dico subito EMS va a posizionarsi nello stesso dominio applicativo di DataSnap ma l'approccio è sicuramente differente: DataSnap consente di costruire un server REST da zero (o quasi, sfruttando wizard e codice del framework) mentre EMS fornisce un server pronto all'uso e facile al deployment, personalizzabile tramite moduli (packages).
Con EMS è possibile esporre API REST in modo molto semplice creando un package Delphi registrando una o più risorse con i rispettivi metodi di accesso, il tutto tramite i comodi wizard messi a disposizione da Delphi.
EMS fornisce anche una semplice ma efficace interfaccia amministrativa da cui poter tracciare gli accessi, gli utenti, l'uso delle risorse (REST) e provvedere statistiche in tempo reale (real-time analytics).
Vedremo se questo modello di costruzione di server REST incontrerà il favore degli sviluppatori Delphi, sicuramente è un modello interessante in alternativa a DataSnap.

Risorse online sull'argomento

Nuova libreria XML Cross-Platform

Con Delphi XE7 viene introdotta una nuova libreria (un nuovo vendor) XML: OmniXML, un progetto open source (ora su Google Code) iniziato da Miha Remec e portato avanti da Primož Gabrijelčič.
OmniXML è una libreria interamente Delphi molto performante e completa con accesso al DOM classico e tramite XPath. Il progetto originale (che io uso da diversi anni) contiene anche un serializzatore (in XML ovviamente) di oggetti Delphi davvero molto comodo soprattutto come gestore della configurazione.

Risorse online sull'argomento

String-Like Operations Supported on Dynamic Arrays

L'unico cambiamento del compilatore in XE7 (almeno cambiamento visibile) è il supporto degli operatori classici sugli array dinamici, ad esempio questo codice  in XE è valido:


Oltre agli operatori standard è possibile usare le funzioni stringa classiche: Insert, Delete, Concat, ecc...
La funzionalità può non essere da "slogan" ma io ritengo le aggiunte al linguaggio sempre importantissime e segno che Delphi viene spinto dal team di sviluppo Embarcadero sempre più avanti aggiornando anche il compilatore!

Risorse online sull'argomento

Altre novità XE7

Le novità non finiscono certo qui, io ho dettagliato quelle più importanti per me ma ce ne sono davvero tante (spazio magari per un prossimo articolo).
Ho categorizzato le altre novità (così come il documento what's new di Embarcadero) in FireMonkey, IDE, VCL, ecc...

FireMonkey

  • New Google Mobile Ads API for Android
  • Native Presentation of TEdit and TCalendar on iOS
  • Multi-Monitor Support
  • Multi-Touch Support and Gestures Changes
  • Full-Screen Immersive Mode for Android
  • FireMonkey Save State Feature
  • Dialog Box Methods Support Anonymous Methods to Handle Their Closing
  • General refactoring of FireMonkey Libraries
  • Platform Assistant Changes for XE7

IDE

  • Changes in the Form Designer for Multi-Device Applications
  • Project Files Automatically Added to the Deployment Manager
  • Entitlement List Added for Android
  • Splash Screen Support for Android
  • Git Version Control System Integrated in the IDE
  • Add Java Libraries to Your Applications for Android from the Project Manager

RTL

  • New Unit for Web Encoding and Decoding
  • PCRE 8.35 for Windows and Mobile Platforms
  • Zlib 1.2.8

VCL

  • New Component for Windows Taskbar Jump Lists

Database

  • FireDAC Changes
  • Parse Provider Support for Your Android Push Notification Applications
  • BDE Removed (ma questa è una novità?? Si!)
  • Enhancements to the Data Explorer

Debugger

  • New PAServer Manager App on the Mac
  • MultiByte Support for Mobile Debuggers
  • Binary info.plist File Deployed

Conclusioni

Beh, che dire.. Wow! E' stato un lungo lavoro elencare e dettagliare alcune novità, figuratevi provarle e cominciare ad integrare queste funzionalità nel nostro codice! ;-)

A parte gli scherzi, una release davvero importante! Importante di sicuro per gli sviluppatori mobile e FireMonkey ma anche per gli sviluppatori classici VCL che possono scegliere XE7 come versione su cui standardizzare (magari per qualche versione) lo sviluppo dei vostri applicativi Windows.

Se dopo la lettura di questo articolo avete deciso che non potete non avere XE7 vi rimando al nostro shop per l'acquisto!





Al prossimo articolo!
Paolo.


giovedì 4 settembre 2014

Rilasciato Delphi XE7!


Due giorni fa (il 2 settembre 2014), Embarcadero Technologies ha rilasciato la nuova versione di Delphi (e RAD Studio): si tratta della XE 7, numero che per molti delphisti è sicuramente di grande auspicio (visto il grande successo di Delphi 7 e Delphi 2007 anni fa).

Qui trovate il blog post di Marco Cantù (Delphi and RAD Studio Product Manager) con l'annuncio e la descrizione di alcune nuove funzionalità.

Fra le principali novità non possiamo non elencare:

  • FireUI (video): nuovi strumenti a design-time (designer) e runtime (componente MultiView e Behavior services di FireMonkey) per lo sviluppo di applicazioni multi-device;
  • Supporto per la programmazione parallela (multi-thread, multi-core, cicli for paralleli, futures, thread-pooling...);
  • Novità in ambito di supporto Bluetooth (incluso Bluetooth LE e l'utilizzo con la tecnologia AppTethering);
  • Una nuova soluzione per lo sviluppo multi-tier, chiamata EMS (Enterprise Mobility Services), per lo sviluppo di application server REST HTTP;

Fra le novità introdotte in FireMonkey, segnalo il supporto multi-touch, la possibilità di usare controlli nativi per alcuni componenti (TEdit e TCalendar) e il supporto (Android) per l'immersive-mode (KitKat) e gli splash-screen.

Qualche link utile (non perdete il Webinar di oggi!):


Qualche articolo apparso su Internet:

Buon lavoro e a presto!

Andrea