lunedì 20 giugno 2016

Usare OpenSSL da Delphi

Per chi ha fretta

Su bitbucket (principale) o github (copia) è possibile scaricare una libreria Delphi che consente di usare alcune funzioni crittografiche di OpenSSL.

Introduzione

Nei mesi scorsi mi è capitato di dover cifrare dei messaggi tramite un algoritmo a chiave pubblica, in particolare RSA. Inizialmente, vista anche l'esegua mole di dati, abbiamo scelto di lanciare da linea di comando OpenSSL. Ovviamente non eravamo particolarmente soddisfatti della soluzione e appena abbiamo trovato un po' di tempo abbiamo creato una piccola collezione di classi attorno a libeay32, la libreria che espone tutte le API di OpenSSL.


openssl1.png

Funzionalità

Le funzionalità al momento si riducono alla cifratura con RSA (quindi a chiave pubblica) e con AES (chiave simmetrica). Visto che il progetto era nato chiamando OpenSSL attraverso la linea di comando anche le classi sono state modellate seguendo le funzionalità offerte da OpenSSL.EXE. In particolare l'area OpenSSL RSA è implementata dalla classe TRSAUtil, mentre l'area OpenSSL ENC da TEncUtil.


Le idee per il futuro sono diverse, innanzitutto togliere le dipendenze dai componenti Indy, infatti al momento, uso le unit IdSSLOpenSSLHeaders e IdSSLOpenSSL che contengono alcune dichiarazioni necessarie (prototipi, record, costanti, ecc). Poi implementare le restanti funzioni di RSA, in particolare firma e verifica della firma. Inoltre aggiungere altri algoritmi di cifratura a chiave simmetrica.

Licenza di Delphi-OpenSSL

Delphi-OpenSSL è distribuita secondo i termini della Apache License che consente di usare il software senza restrizioni di sorta, di distribuirlo, modificarlo e di distribuire versioni modificate del software.


La Licenza Apache NON richiede che versioni modificate del software siano distribuite secondo i termini della stessa licenza o come software libero ma solo che si includa un'informativa del fatto che si è utilizzato software licenziato secondo i termini della Licenza Apache.

Licenza di OpenSSL

Dovete tenere anche conto che per usare Delphi-OpenSSL sicuramente dovrete installare anche OpenSSL stesso. La licenza è un po' particolare ma fondamentalmente potete farci quello che volete a patto che includiate da qualche parte questa dicitura: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit".


Leggetevi bene anche il README.txt compreso nella distribuzione di OpenSSL perché in alcuni paesi, per esempio gli Stati Uniti, ci sono delle restrizione sull'esportazione di tecnologie crittografiche.

Luca Minuti

martedì 19 aprile 2016

La nuova versione di Delphi: 10.1 Berlin

RAD Studio10.1 Berlin


Da poche ore è stata rilasciata la nuova versione di Delphi/C++/RAD Studio: 10.1 Berlin.

La prima sorpresa nel nome, dopo che sulla roadmap era stata segnalata con il code name "BigBen", ecco invece che il nome ufficiale vira sul teutonico Berlin :-)

Fortunatamente non è l'unica novità da segnalare, anzi in quest'articolo mi soffermerò solo su quelle che ritengo più interessanti, per una lettura completa vi rimando quindi all'elenco delle novità di questa versione.

Nuovo installer

La novità più visibile (anche perchè è la prima che si incontra) è il nuovo installer, completamente rifatto e sensibilmente più veloce e snello.

Opzioni installer

Dopo una prima selezione di percorso di destinazione e alcune opzioni generali, viene installata in pochissimi minuti una prima versione di RAD Studio (funzionante, è possibile infatti usarla come generico editor), in seguito verrà presentata una finestra per selezionare le successive funzionalità che si desidera installare.

Feature Installer: platform selection
Come potete vedere adesso è possibile selezionare in modo chiaro le piattaforme da installare salvando quindi spazio su disco e tempo di installazione.
Con una successiva finestra è poi possibile scegliere di installare alcuni componenti aggiuntivi come l'help, gli esempi ed alcuni componenti tipicamenti distribuiti con Delphi.

Feature Installer: option selection
L'aspetto interessante è che, se in un secondo momento volessimo aggiungere ulteriori piattaforme basterebbe invocare ancora il "Feature Installer/Manager" per aggiungerla alla nostra installazione.
Ricordatevi, una volta terminata l'installazione, di lanciare GetIt per installare componenti opzionali che prima invece erano parte dell'installer (CodeSite, IoT, ecc...)


GetIt Package Manager - IoT components

Personalmente mi sembra un enorme passo in avanti rispetto all'attuale "esperienza di installazione".

Il nuovo installer funziona solamente "online" (per questa versione almeno), se qualcuno avesse bisogno di una installazione offline può usare il vecchio installer che sarà comunque possibile scaricare.

IDE


Floating Form Designer

Un gradito ritorno, adesso Delphi può essere usato anche in modalità "floating" (alla Delphi 7 per intenderci), per abilitare la modalità andate nel menu:
Tools -> Options > Form Designer e togliete il check sull'opzione Embedded Designer

FireUI Live Preview

FireUI Live Preview

Fa la comparsa in 10.1 Berlin un nuovo strumento, la FireUI Live Preview, che serve a vedere come si presenta l'applicazione sui diversi device, tutto ciò mentre si lavora nell'IDE, Un tool davvero molto potente che IMO amplia ulteriormente il divario di Delphi rispetto ad altri strumenti di sviluppo per app mobile per quanto riguarda la progettazione visuale delle viste.

Lo strumento si basa sull'architettura client/server dove l'IDE funge da server accettando connessioni dai client (i vari device) per spedire "live" la form in progettazione.

La tecnologia usata per realizzare questo tool la conosciamo già bene: App Tethering, framework di comunicazione introdotto in Delphi XE6.

High DPI Awareness

L' IDE è adesso completamente DPI-aware. Una feature richiesta a gran voce soprattutto con l'introduzione degli schermi ad altissima densità di pixel (maggiore di 96 PPI)

Bookmark Stack

Questa è un'interessante funzionalità per una navigazione nel codice più potente e allo stesso tempo semplice. E' possibile ora definire una serie di bookmark che verranno visualizzati in una pila (stack)  potendo navigare, con una logica LIFO, su questi bookmark.

Selection Expansion

Da fanatico della tastiera quale sono questa funzionalità mi fa molto piacere, premendo Ctrl-W  è possibile espandere la selezione dall'identificatore, alla riga selezionata, al blocco di statement, all'intera procedura, alla sezione implementation fino ad arrivare all'intera unit. Ho qualche perplessità solo sulla scelta del tasto rapido, visto che in altri sistemi operativi e (anche in molte applicazioni Windows) questo tasto rapido corrisponde alla chiusura della finestra attiva!

Method Toxicity Metrics


Metrica Method Texicity

Altra cosa molto interessante che dovrebbe essere usata a tappeto su tutti i metodi delle nostre applicazioni. E' una metrica che ci suggerisce quando un metodo avrebbe bisogno di refactoring, ovvero di una bella.. rivisitata. La metrica si basa su parametri quali: la lunghezza (numero di righe), il numero di parametri, il numero di livelli di if, dando come risultato un numero che ci dice appunto quanto il metodo sia.. "tossico" :-)

Come tutte le metriche ricordate che cercano solo di aiutarci a migliorare la struttura del nostro codice cercando di farci abbandonare quelle "brutte abitudini" e farci adottare uno stile di scrittura del codice più... sano, quindi, usatele!

Altre modifiche migliorie nell'IDE includono:

  • Structure View Improvements for C++
  • Android Service Improvements
  • Support for Running iOS Ad hoc Applications
  • Customizable info.plist File
  • Design-Time Improvements for Android Smart Watches
  • GetIt Dependencies
  • New Options Page for File Associations
  • New Option to Show Information Messages from the Delphi Compiler


Utilities


The Java2OP.exe tool now works with JDK 8.
New SdkTransform.exe tool. It can be used to convert Objective-C or C++ headers to Delphi headers.

Per tutti quelli che abitualmente si devono interfacciare con codice scritto in altri linguaggi questi due tool sono fondamentali soprattutto (per quanto mi riguarda) il nuovo strumento SdkTransform che (promette) di convertire automaticamente gli header C++ in Pascal. Sono curioso di testarlo, staremo a vedere.

FireMonkey


Supporto Android 6.0

Supporto ufficiale per Android 6 (API Level 23)

Componente TAddressBook


Address Book
 Per le piattaforme mobile è disponibile un nuovo componente (TAddressBook) che permette alle app di accedere alla rubrica :


  • Sending a request to access a device Address Book and getting the access status.
  • Accessing all sources defined in the device Address Book.
  • Fetching all or individual contacts from specified source.
  • Fetching all contacts from specified group(s).
  • Editing or removing existing contacts and groups.
  • Creation of new contacts, creation of new groups.



Improved Style Designer


Style Designer

Altra cosa attesa da tutti gli sviluppatori FireMonkey: un deciso miglioramento allo Style Designer con una finestra di preview, il supporto allo zoom e il supporto alla multi selezione nella vista struttura.

New ListView Item Designer

ListView Item Designer

Sempre su FireMonkey, il controllo ListView ha un nuovo tipo di ItemAppearance: DynamicAppearance che si può usare per personalizzare il contenuto di ogni singolo item. In aggiunta se si clicca con il pulsante destro la ListView nel Form Designer e si seleziona la voce Toggle DesignMode, è possibile visualizzare un editor che consente di editare visualmente i controlli piazzati sugli item.

Altre migliorie/novità sulla piattaforma FireMonkey:

  • Extended Clipboard Support Service
  • Improvement on the Image List Editor
  • TGrid Improvements
  • High DPI Support on Windows
  • Improved Support for Accelerator Keys
  • Support for Extended Font Styles
  • Hint Property Changes
  • Simplified Dialog API


RTL


Miglioramenti su TStrings e TStringList

C'è poco da dire, TStringList è forse la classe più utilizzata di tutta la RTL. E' sempre stata una classe versatilissima adatta a diversi "task" e, anche se ultimamente è stata affiancata dalle altrettanto utili classi: liste di oggetti, dictionary, stack e queue, la string list è indubbiamente quella più usata.

Dalla versione 10.1 Berlin la classe TStrings guadagna queste funzionalità:

  • Metodo AddPair, per aggiungere coppie key-value alla lista potendo anceh usare lo stile "fluent": LList.AddPair('Nome', 'Paolo').AddPair('Cognome': 'Rossi');
  • Proprietà KeyNames, per ottenere una lista di key da una lista di stringhe in formato key-value
  • Proprietà Options, per controllare le opzioni associate alla stringlist
  • Metodo SetStrings, per copiare stringhe da un altro oggetto TStrings. E' simile al metodo Assign ma SetStrings copia solo le stringhe senza toccare le altre proprietà (che invece Assign copia)
  • Proprietà TrailingLineBreak, determina se la proprietà deve contenere un line break alla fine oppure no.
  • Proprietà di sola lettura Updating, indica se la lista è impegnata in una operazione di update
  • Proprietà UseLocale, determina quali funzioni sono usate per il confronto delle stringhe, se True vengono usate AnsiCompareStr/AnsiCompareText, se False vengono invece usate CompareStr/CompareText
  • La classe TStringList ha nuovi costruttori (overloaded) che consentono maggior libertà in fase di inizializzazione

Miglioramenti sulla classe TMemIniFile

Per chi usa la classe TMemIniFile queste sono interessanti aggiunte, vediamole:
  • E' possibile adesso specificare la proprietà CaseSensitive nel costruttore
  • La nuova proprietà Modified indica se il file INI è stato modificato dal suo caricamento da disco.
  • La nuova proprietà AutoSave determina se l'istanza di TMemIniFile deve automaticamente salvare su disco i cambiamenti al momento della sua distruzione.

Supporto buffering per la classe TFileStream

Un grazie a FireDAC che "regala" alla RTL una sua classe, la classe TFDFileStream è stata infatti spostata nella unit System.Classes ed è stata rinominata in TBufferedFileStream.
La classe TBufferedFileStream è un TFileStream discendente che ottimizza sensibilmente brevi letture o scritture consecutive, ovvero, aggiunge il supporto al buffering ai file stream.

Support Bluetooth LE e Beacon su Windows 10


Finalmente la possibilità di usare Bluetooth LE e Beacon anche in Windows 10, per me molto utile soprattutto per testare un'applicazione BluetoothLE/Beacon in Windows senza continuamente passare per il deploy sul device. Il supporto in Windows 10 include:
  • Improved Bluetooth LE Discovery Performance
  • Bluetooth LE Includes New Events to Handle Subscriptions to Characteristics
  • Eddystone Beacon Format Support
  • Improved Beacon Scan Performance
  • TBeaconDevice Component Supports Eddystone Beacon Format

Ottimizzazione delle Regular Expressions

Buonissimo risultato di ottimizzazione delle RegEx (che uso sempre di più nella gestione di stringhe). L'ottimizzazione è sia sul tempo di esecuzione sia sull'uso di memoria!
Se guardate la wiki mostra una prova in cui il tempo di esecuzione di una serie di match passa da 5900ms a 29ms, un guadagno di oltre 300 volte!

Ottimizzazione sulla funzione StringReplace 

Le performance della funzione StringReplace sono state particolarmente ottimizzate, può sembrare un miglioramento insignificante ma in tutti i programmi che ho visto StringReplace è pesantemente utilizzata e quindi... benvenuta a questa miglioria.

Migliorie App Tethering

App Tethering è una interessante tecnologia che, introdotta in Delphi XE6, ha conosciuto release dopo release significanti aggiunte, migliorie e ottimizzazioni. Vediamo quelle in questa release:
  • Due nuovi network adapters che forniscono il supporto multicast per IPv4 e IPv6.
  • E' possibile specificare un range di indirizzi IPv4 come target del remote manager per l'auto discovery.
  • Supporto per il Log filtering. E' adesso possibile dis/abilitare il log per uno specifico item dell'architettura app tethering.
  • I profili possono permettere o meno connessioni da profili remoti.

Comunicazione HTTP, web programming

Le prossime funzionalità sono particolarmente interessanti a tutti quelli che si occupano di programmazione web oppure di framework di comunicazione (come la libreria REST MARS). Nel dettaglio:
  • Supporto per le operazioni asincrone HTTP
  • Supporto per i file ZIP criptati
  • Supporto per i client HTTP per la decompressione automatica di un contenuto "gzippato" spedito dal server
  • Migliorie sulla connessione HTTP
  • Funzioni di URLEncode/URLDecode
  • Le stringhe UTF8String and RawByteString sono adesso supportate anche sulle piattaforme mobile (iOS, Android)


Compilatore


Anche queste aggiunte e migliorie sono "nascoste" ma comunque importantissime, vediamole nel dettaglio.

Miglioramenti delle performance nella compilazione dei generics

I compilatori Delphi hanno visto numerosi cambiamenti che riguardano la gestione dei generici risultanti in diversi miglioramenti:
  • Il parsing dei generici è adesso fino a 3 volte più veloce
  • Le performance dei compilatori DCC32, DCC64 e DCCOSX quando linkano progetti che usano estensivamente i generici estensivamente sono decisamente aumentate.

Attributi supportati da tutti i compilatori

Adesso tutti i compilatori Delphi supportano i seguenti attributi:
  • unsafe: permette di annotare il risultato di una funzione per non farla gestire al sistema ARC
  • volatile: utile per annotare un campo di classe che possono essere cambiati dall'interno di differenti thread (il codice quindi per questi campi non viene ottimizzato dal compilatore copiando il contenuto nei registri CPU)
  • weak: Utile per annotare un campo come una "weak reference" ovvero che non incrementa il reference count del'oggetto a cui punta

Modifica su class e record helper

Attenzione! Questa modifica potrebbe avere un impatto sul codice già scritto se avete usato (o usato da librerie impiegate da voi) i class e record helper. Dalla versione 10.1 Berlin infatti gli helper non hanno più visibilità siu membri privati. A mio avviso una chiusura di una falla logica (non sicuramente un bug vero e proprio) che rischiava di far nascere codice "sporco".

Altre migliorie sui compilatori Delphi

  • The memory allocated to conditional symbols has been extended from 256 bytes to 4096 bytes.
  • The size of Extended is now 16 bytes to be compatible with BCCOSX

EMS (Enterprise Mobility Services)

EMS System Diagram

EMS sta conoscendo un'evoluzione costante da quando è stato introdotto e, pur avendo una policy di deployment che non è graditissima alla stragrande maggioranza dei programmatori Delphi, dobbiamo dire che tecnologicamente si appresta a diventare un framework davvero interessante. Le aggiunte e migliorie in questa release;
  • Apache Server Support
  • Cross-Domain API Calls to the EMS Server
  • EMS EdgeModules
  • EMS EdgeModules Resource
  • ThingPoints Overview
  • EMS API Resource
  • Custom API Documentation

(Mie) Opinioni sulla release 10.1 Berlin


Ovviamente adesso posso giudicare solo sulla carta tutte queste novità e funzionalità, è chiaro che il responso definitivo verrà espresso dopo un adeguato uso di questa versione.
Ma... vedendo la lista di novità e l'impegno effettivo nel bug fixing e in una generale revisione anche di dettagli (ma sempre importanti) si denota un'attenzione reale verso il prodotto e non solo focalizzata sulle "selling features". Date uno sguardo anche all'impressionante lista di bug fissati in questa release!

Concludo la recensione della release 10.1 Berlin puntandovi al documento della feature matrix per avere un dettaglio (anche troppo) su tutte le funzionalità divise a seconda della edition (Starter, Professional, Enterprise) in vostro possesso.

Embarcadero focalizzata sugli sviluppatori

L'ultimo paragrafo è relativo ad un recente annuncio.

Embarcadero, da poco acquisita da IDERA (leggi qui l'articolo), dopo aver svelato la roadmap per i prossimi mesi annuncia di focalizzarsi esclusivamente sugli strumenti di sviluppo (Delphi, C++ Builder, RAD Studio, Interbase) mentre gli strumenti database entreranno a far parte del portafoglio prodotti di IDERA.

Per prevenire eventuali dubbi, faccio notare che per prodotti database non si intendono FireDAC o altri componenti DB per Delphi/C++ Builder ma solo i prodotti originali di Embarcadero: E/R Studio, DB Change Manager, ecc...

Speriamo che questa svolta consenta ad Embarcadero di concentrarsi su Delphi e C++ rilasciando versioni sempre più stabili e ricche di funzionalità.


Un saluto.





mercoledì 24 febbraio 2016

Delphi nei primi 10 nell'indice TIOBE

Con questo articolo mi lascio andare ad un po' di gossip... da programmatore :-)


Qualcuno di voi avrà sentito parlare dell'indice TIOBE che, analizzando i dati delle ricerche effettuate sui principali search engine, compila una statistica dei linguaggi più usati (o per meglio dire più ricercati) al mondo.

Indice TIOBE febbraio 2016

Per la prima volta, dopo tanti anni, Delphi ritorna nella top-ten dei linguaggi più usati e non solo, se guardate i trend è anche in crescita!

Quale importanza riveste questa notizia per noi programmatori Delphi? beh praticamente nessuna :-)

Serve però forse ad inquadrare meglio l'impatto e l'importanza reale di Delphi all'interno della community "globale" dello sviluppo, ovvero non è per nulla quel linguaggio dimenticato ed "antico" che a volte ho sentito definire da alcuni in giro per conferenze...  la prossima volta che quindi vi capita di incontrarne qualcuno di questi tizi, fategli mandatelo a questo link! :-)




lunedì 22 febbraio 2016

Hotfix per RAD Studio XE8 e XE7



Nei giorni scorsi Embarcadero ha reso disponibili due hotfix per RAD Studio XE7 ed XE8. Una piacevole novità che risponde finalmente con i fatti alla promessa di allargare il periodo di supporto sulle precedenti versioni di Delphi.

Potete trovare a queste pagine i due update:
Gli update in questione saranno disponibili a tutti quelli che hanno attiva assieme alla licenza Delphi una "Update Subscription", se già non l'avete contattate il vostro rivenditore e chiedete una quotazione, il mio consiglio è quello di muovervi verso questa forma di "abbonamento" che vi assicura, oltre ad avere automaticamente tutte le versioni di Delphi che escono, anche tutti gli update anche per le versioni precedenti.



Roadmap e novità di Delphi e C++ per il 2016

Negli ultimi giorni ci sono state interessanti novità su Delphi, è stata infatti pubblicata dal Product Manager Marco Cantù la roadmap relativa al 2016 per Delphi e C++Builder (RAD Studio)

Alcune news già ce le aspettavamo ma ci sono anche piacevoli sorprese... vediamole nel dettaglio.

Embarcadero + IDERA


Embarcadero + IDERA
Innanzitutto per chi si fosse perso l'annuncio di qualche mese fa ricordiamo che Embarcadero Technologies è stata acquisita da IDERA Inc. un'azienda americana con sede ad Austin, Texas specializzata in prodotti database che, con un importante investimento, ha acquisito totalmente Embarcadero. Acquisizione centrata ovviamente sul ventaglio degli ottimi prodotti database di Embarcadero ma con un grande interesse da parte di IDERA verso il settore, per loro nuovo, degli strumenti di sviluppo di cui fanno parte Delphi e C++ Builder.

Che dire sull'acquisizione... il risultato lo potremo vedere solo tra diversi mesi, per ora possiamo notare che c'è grande interesse nella community per questa operazione che, speriamo, possa portare nuova linfa e nuove idee per portare avanti il nostro strumento di sviluppo preferito. Come in tutti i cambiamenti societari, c'è stato e ci sarà movimento di personale, qualcuno se ne andrà e qualcun altro arriverà. Proprio di questi ultimissimi giorni è l’annuncio di Allen Bauer (storica figura dai tempi di Borland Delphi 1) che inizierà una nuova esperienza lavorativa con Alphabet (Google). Oltre a fare un grande augurio ad Allen per il nuovo lavoro chiediamo ad IDERA un impegno ad investire in modo deciso sul team di sviluppo Delphi e C++.

Volendo tracciare un bilancio (chi vi scrive ha vissuto l'epoca Borland, Inprise e CodeGear) possiamo dire che Embarcadero ha rappresentato il rilancio di Delphi, lo ha preso in consegna da una situazione non propriamente brillante e a suon di investimenti (sia acquisendo ditte e framework esterni, sia come forza lavoro interna) ha trasformato il miglior strumento di sviluppo per Win32 nel miglior strumento di sviluppo multi-piattaforma, ha introdotto decine di migliaia di sviluppatori Delphi al mondo mobile, ha trasformato il l'Object Pascal rendendolo un linguaggio moderno, con potenti funzionalità senza farci perdere la produttività tipica di Delphi che ha permesso a tanti di sfornare prodotti eccezionali in una frazione del tempo richiesta con altri strumenti.

Certamente rimane ancora molto da fare e quindi nel chiudere il precedente capitolo non ci resta che augurare ad IDERA un buon lavoro nel portare Delphi e C++Builder ancora più in alto!

Delphi e C++ Roadmap 2016

Delphi e C++ roadmap per il 2016
Delphi e C++ roadmap per il 2016


Il documento contiene davvero numerosi spunti interessanti riguardo il (probabile) futuro di Delphi. Dico probabile perchè vale la pena menzionare che le informazioni presentate nella roadmap, pur rappresentando più che un suggerimento, sono da considerarsi non definitive o vincolanti.

Cominciamo col dire che la versione corrente (10 Seattle) già rappresenta un prodotto completo e pieno di funzionalità con il pieno supporto a Windows 10, iOS 64bit, supporto IoT, il nuovo package manager GetIt, integrazione con i principali version control e tante altre novità.

La prima cosa che ci dice la roadmap è che nel 2016 ci saranno ancora 2 versioni, la prima (con il numero di versione 10.1) chiamata in codice BigBen uscirà in primavera e la seconda (10.2) Godzilla, in autunno.. provate ad indovinare voi il nome delle città che probabilmente avranno i prodotti finali.
Sulla questione del doppio rilascio annuale qualcosa si sta muovendo viste le numerose richieste di “rallentare” la corsa di Delphi con meno rilasci di versioni e magari update incrementali e l’aggiunta di nuove funzionalità. Quindi per il futuro staremo a vedere, per il 2016 prepariamoci però ancora a fare spazio per due major release.

A questo proposito volevo menzionare una aspetto importante per tutti gli utenti Delphi e C++ Builder per quanto riguarda le licenze... ormai già da qualche tempo Embarcadero spinge verso l’adozione di un modello a “subscription” da abbinare alla classica licenza, infatti con l’introduzione di tutte le nuove piattaforme, Embarcadero è stata obbligata (tecnicamente) ad effettuare rilasci semestrali per coprire le varie versioni dei sistemi operativi mobile (iOS e Android in primis).
Da un punto di vista economico quindi l'acquisto delle singole release comincia ad avere poco senso e se a questo aggiungiamo gli importanti bonus associati alla subscription (potete far riferimento a questa pagina), possiamo concludere che ad ogni acquisto di una licenza Delphi o C++ andrebbe sempre associata l’opzione “Update Subscription”.

Delphi 10.1 (Big Ben)


Vediamo gli aspetti tecnici della roadmap: parlando di Big Ben, il team di sviluppo si è concentrato sull’esperienza dell’utente nell’installazione e in generale sulla qualità del prodotto. La prima novità sarà apprezzata da numerosi utenti, infatti un processo di installazione più snello e moderno risulta più in linea con un prodotto che ormai ha raggiunto notevoli dimensioni e complessità.

Le altre novità dovrebbero essere:
  • Form designer floating sia per progetti VCL che FMX, per molti un piacevole ritorno al passato! sento già i numerosi "io l'avevo detto" :-)
  • Operazioni di refactoring in C++ 
  • FireUI App Preview, ovvero la possibilità di vedere un’anteprima delle form su qualsiasi target (desktop oppure mobile) mentre si sta lavorando nell’IDE 
  • Migliorie FireMonkey per progetti Windows, Mac, mobile 
    • Nuovo componente Address Book /Contatti 
    • Un nuovo / migliorato Style Designer e ListView Items Designer 
    • Animazioni touch per la ListView, miglioramenti sulle griglie, supporto ai tasti rapidi Windows , miglior gestione font 
  • Miglioramenti sul Multi-Device Designer 
    • Stili per Android e nuove viste FireUI 
  • Supporto per IoT (Internet of Things) 
    • Supporto per Bluetooth LE migliorato 
    • Framework per la connettività IoT 
    • ThingPoint - Enterprise access points per i dispositivi IoT (estende le funzionalità EMS) 
  • Window/VCL 
    • Supporto Bluetooth LE per Windows 10 
    • Miglioramenti al bridge per WinRT 
    • Supporto DirectX 12 
  • Delphi Compiler & Language 
    • Supporto per le stringhe Utf8String su tutte le piattaforme 
    • Supporto per per [weak] e [unsafe] per i reference ad interfacce per i compilatori non-ARC 
  • C++ CLANG 3.3 su tutte le piattaforme 
  • Aggiornamenti driver FireDAC (Oracle, DB2, Interbase, SQLite e Advantage) 
Due parole su questa lunga ed interessante lista di novità:

Interessante il supporto nativo (del compilatore) per le stringhe UTF8, una feature che semplificherà la vita agli sviluppatori web/rest.
Non vedo l’ora di provare il nuovo form designer floating (un po’ alla Delphi 7) anche secondo me (come so tanti di voi) il float designer delle prime versione di Delphi era strutturalmente migliore per la progettazione di form di una certa dimensione.
Buono il supporto Bluetooth LE per Windows 10 ed in generale l’ondata di novità relative al mondo (sempre più in espansione) degli IoT. In altre parole: Delphi 10.1 sarà davvero una buona release !

Delphi 10.2 (Godzilla)


Passando a Godzilla possiamo dire senza dubbi che la novità davvero eclatante è l'introduzione di una nuova piattaforma: Linux Intel 64bit
Supporto Linux 64bit!

Noi (Wintech Italia) aspettiamo il supporto per Linux fin dai tempi di Kylix! (che internamente usiamo ancora).
Il supporto a Linux sarà solo per gli applicativi server, non per la parte visuale. Ad onor del vero dobbiamo dire che la prima difficoltà nell’introdurre la programmazione GUI in Linux è che di GUI non ne esiste solo una, ma tante (KDE, Gnome, Xfce, ecc…) e quindi Embarcadero si troverebbe a dover moltiplicare gli sforzi per raggiungere una fetta consistente di utenti, quindi per adesso basta e avanza la parte server!

Il supporto Linux Server dovrebbe essere rivolto a queste tecnologie:
  • Moduli Apache in WebBroker
  • Progetti DataSnap e EMS 
  • Accesso ai database su Linux con FireDAC 
  • Applicativi console con supporto IoT
Le prime due distribuzioni supportate saranno Ubuntu Server & RedHat Enterprise (ma gliapplicativi console sviluppati dovrebbero girare su tutte le versioni di Linux 64 intel). Lo sviluppo come sempre sarà sotto Windows con il cross-compiler, deploy e debug via PAServer. I compilatori Linux saranno quindi per macchine Intel 64-bit, basati sulla tecnologia LLVM e con la gestione di memoria basata su ARC. 
Embarcadero ha anche promesso che ci farà provare in anteprima una preview tecnica del compilatore Linux prima dell’uscita del prodotto, quindi non ci resta che... aspettare (speriamo poco :-)

Le altre novità di Delphi 10.2 dovrebbero essere
  • Migliorie sull’IDE e sulla parte degli stili 
  • Aggiornamento di tutte le versioni dei compilatori C++ compilers alle nuove versioni di Clang 
  • Continuo lavoro sul componente ormai chiave per l’IDE, l’installazione e per la gestione dei pacchetti: GetIt 
  • Nuovi controlli VCL per Windows 10 
  • Nuovi controlli FireMonkey nativi per le piattaforme supportate 
  • Supporto a Windows 10 Centennial (ovviamente dipende se Microsoft porterà avanti questi progetto) 
  • Supporto per le nuove versioni (già in fase di sviluppo da Apple e google) di iOS e Android 

Conclusione


Che dire, Embarcadero ci ha riversato addosso una carico di novità notevole, novità che si realizzeranno nel corso del 2016 con due release importanti e sicuramente da non mancare!



lunedì 19 ottobre 2015

Disponibili i replay della CodeRage X!

Anche se ancora non c'è un annuncio ufficiale (probabilmente qualche video è ancora in fase di upload), per molte sessioni della CodeRage X (conclusasi settimana scorsa) sono disponibili i replay.

Trovate la playlist Delphi sul canale YouTube di Embarcadero a questo link.
Inutile dire che la quantità di materiale tecnico disponibile è impressionante e copre una ampia gamma di argomenti.

C'è anche il replay della mia sessione su TFrameStand, potete trovare maggiori dettagli e il link al video sul mio blog.

Update: a questa pagina trovate alcune risorse utili relative alle varie sessioni della CodeRage X (link vari, download di esempi mostrati ecc).

A presto,
Andrea

giovedì 15 ottobre 2015

CodeRage X - Giovedì 15 Ottobre


Eccoci arrivati all'ultimo giorno della CodeRage X, ecco le sessioni di oggi che vi segnalo:


  1. 14:00, FastReport Deep Dive: Build Efficient Multi-Thread Reporting
  2. 16:00, Parallel Programming Deep Dive: Task Monitoring, Resource Locking, Thread Pool, Design Patterns and more!
  3. 17:00, Simplify MultiThreading with System.Threading for Mobile and Desktop Apps
  4. 18:00, TFrameStand Deep Dive: Build Visually Stunning and Consistent UI/UX with FMX Frames
  5. 20:00, Background Tasks and Inter-App Communication with Android Services and Intents
  6. 21:00, Create IoT solutions with Delphi and Arduino
  7. 22:00, Debug Tips and Tricks: Effective Multi-Device App Debugging Strategies for Win32, Win64, OS X, iOS and Android
  8. 23:00, NoSQL with MongoDB and FireDAC - Part 1 e 2
Come vedete oggi giornata piena! ;-)
Vi ricordo la mia sessione su TFrameStand (alle 18:00)!


A presto,

Andrea