domenica 9 aprile 2017

Le novità di Delphi 10.2 Tokyo in dettaglio



Alla fine di marzo è stata rilasciata la versione 10.2 (Tokyo) di Delphi, vediamo nel dettaglio la serie di novità che ha portato.

Benvenuto Linux!


La principale feautore di Delphi 10.2 Tokyo è ovviamente il supporto di Linux 64 bit (server -side) tra i target di compilazione (per sfruttare questa caratteristica è però necessaria almeno la versione Enterprise di Delphi).


Con questa versione di Delphi è possibile creare applicativi (console, dll, package) nativi per Linux che possono girare in qualsiasi distibuzione Linux per architettura x86 a 64bit.

Non c'è (per ora) il supporto a FMX per Linux, non si possono cioè realizzare applicativi con interfaccia utente.. vedremo se questo verrà aggiunto nelle le prossime release.

Il supporto ufficiale delle distribuzioni è limitato a Ubuntu e Red Hat ma personalmente ho già provato i binari prodotti su un elevato numero di distribuzioni senza nessun problema.

Per lo sviluppo invece consiglio di installare le distribuzioni ufficialmente supportate se volete evitare qualsiasi intervento manuale di configurazione dell'ambiente.


Tecnicamente la compilazione e il deployment per Linux usano le stesse tecniche e strumenti delle altre piattaforme.



Nello specifico:
  1. Compilazione su Windows con il compilatorre Delphi (basato su LLVM)
  2. Pachettizazione usando le informazioni di deployment
  3. Spedizione alla macchina Linux target usando il PAServer (da installare sulla macchina Linux)
  4. Debug (eventuale) nell'IDE usando PAServer

E comunque possibile prendere il binario generato, copiarlo e lanciarlo su una qualsiasi macchina Linux (attenzione ai permessi del file quando lo copiate)


Come accennato prima, il compilatore Linux è basato su LLVM come quello per i sistemi operativi mobile (iOS e Android) quindi dovete ricordarvi alcune cose quando scrivete il codice sorgente:

  • ARC (Automatic Reference Count) per gli oggetti (non dovete quindi distruggerli)
  • Le stringhe non sono sempre 1-based come nel compilatore tradizionale ma:
    • Sono 0-based nei compilatori iOS e Android
    • Sono 1-based nel compilatore Linux

Se a prima vista la scelta per le stringhe può sembrare un po'.. fuorviante, devo dire che mi trova daccordo: Nella costruzione di applicazioni mobile il porting di grosse porzioni di codice Win32 è piuttosto raro, nel caso di Linux invece, è proprio una delle caratteristiche più interessanti. In questo caso dover rifattorizzare completamente l'accesso alle stringhe sarebbe un lavoro lungo e pericoloso. Come consiglio usate comunque gli helper per i tipi base per usare le stringhe 0-based su tutte le piattaforme.

Il livello di compatibilità del codice sorgente è ottimo, ho già compilato su Linux la mia libreria JWT (https://github.com/paolo-rossi/delphi-jose-jwt) e il progetto WiRL (https://github.com/delphi-blocks/WiRL) senza particolari problemi.

Altre novità nella 10.2

Ci sono anche altre novità nonostante sia una release incentrata principalmente su Linux. Di seguito elenco solamente queste novità riservandomi di espanderle in altri articoli. In particolare il prossimo articolo verterà su RTL e linguaggio comparando i sorgenti rispetto alla versione 10.1 Berlin per evidenziare tutte le modifiche.

FireDAC


Il componente TFDMemTable guadagna un design time editor che consente di visualizzare e modificare i dati della memory table a design-time!


Altre feature in FireDAC:

  • Supporto per MariaDB (v5.5)
  • New GUID access for TField
  • Supporto per la versione 5.7 di MySQL
  • Support Firebird per Direct I/O
  • Grazie al BLOB streaming ridotta memoria sui client
  • Il componente VCL TDBImage supporta direttamente i formati JPEG e PNG

IDE


Il menu View dell'IDE è stato completamente riorganizzato per consentire una miglior categorizzazione delle numerose voci (nelle passate versioni rischiavano di uscire dallo schermo!)


Anche il supporto per le alte risoluzioni è stato migliorato, ormai i monitor High DPI sono arrivati a prezzi accessibili ed è sempre più facile che ci chiedano supporto nelle nostre applicazioni.

Altre funzionalità nell'IDE:
  • Migliorato supporto per Azure e AWS con nuove API
  • Il compilatore a riga di comando supporta ora large-memory-address
  • Supporto per il debugging e simulatore nei nuovi macOS e iOS

FireMonkey


  • Supporto Multi-Threading per le classi TBitmap, TCanvas e TContext3D
  • Maggior velocità dell'interfaccia utente (UI) Android grazie ad un miglior supporto multi-thread
  • Migliorata l'esperienza utente in TMultiView
  • Possibilità di modifica di SystemStatusBar.Color in iOS tramite nuove proprietà nella classe TForm
  • Nuovo stile FMX per macOS e Android

RTL


  • Nuova proprietà SynchronizeEvents per le classi TTetheringManager e TTetheringProfile per controllare la sincronizzazione con il thread principale
  • Supporto delle funzioni di hashing MD5 e SHA1 per file e stream

Installer/GetIt


L'installer basato su GetIt è ulteriormente migliorato come velocità ed esperienza utente. Consiglio a tutti l'installazione di Delphi con questo nuovo strumento che oltre ad una esperienza di installazione sicuramente migliore consente anche di aggiungere/rimuovere piattaforme e funzionalità in un quasiasi momento.

Anche GetIt sta guadagnando sempre più consenso in quanto l'installazione di componenti tramite questo tool è facile e immediata.

In questo momento sono già presenti una buona selezioni di componenti/expert già aggiornati a RAD Studio 10.2 Tokyo.



Considerazioni finali

Per me la 10.2 Tokyo è un'importantissima release grazie all'introduzione di Linux come target ma introduce anche una buona lista di feature in altre aree e una lista di bug fissati decisamente lunga.

Avendo usato 10.2 Tokyo per qualche settimana posso dire che la stabilità sembra buona, il mio consiglio finale è sicuramente di installarlo e usarlo per lo sviluppo dei vostri applicativi.

Link a risorse

DocWiki What's New
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/What%27s_New

What's New in RAD Studio 10.2
https://www.embarcadero.com/products/rad-studio/whats-new-in-10-2-tokyo

New features and customer reported issues fixed in RAD Studio 10.2 Tokyo
https://edn.embarcadero.com/article/44747


Un saluto