mercoledì 19 ottobre 2016

FireMonkey o VCL, questo è il dilemma!

Inauguriamo con questo articolo una sezione del blog dedicata alle traduzione in italiano degli articoli più interessanti pubblicati sul blog #Embarcadero! Abbiamo l'onore di battezzare questa rubrica proprio con un articolo di Jim McKeeth, Lead Developer Evangelist, su un tema molto discusso: FireMonkey o VCL?

FireMonkey vs VCL.

Di frequente, quando parlo di VCL o FireMonkey, ricevo alcune tra le domande più comuni:
  • La VCL è obsoleta?
  • È migliore FMX o VCL?
  • Se iniziassi a pensare ad un app oggi, dovrei usare VCL o FMX?
Alla prima domanda è facile dare una risposta, le altre due sono un po’ più difficili. 

La VCL (o Visual Component Library) non è obsoleta, e non lo sarà nemmeno a breve. Finché ci saranno Windows e le Windows API, ci sarà la VCL. Di recente, Marco Cantù nel webinar su Windows 10 dice: “La VCL è la miglior libreria per lo sviluppo Windows desktop e sfrutta pienamente Windows 10”.
La VCL ha molto spesso nuovi componenti e caratteristiche e i suoi bug vengono corretti, ma forse non così spesso come per FireMonkey. La ragione è che la VCL è un framework maturo, mentre FireMonkey va via via crescendo rispetto alle versioni passate (sebbene ultimamente si sia stabilizzato molto e stia raggiungendo uno stato più maturo).
Dunque qual è meglio usare? Non c’è una risposta inequivocabile, posso però dirvi i vantaggi di ciascuno, così che possiate fare una scelta consapevole per il vostro prossimo progetto.

Visual Component Library (VCL)


La VCL è stata rilasciata con la prima versione di Delphi. 

Si tratta più che altro di un wrapper sui controlli Windows API. Ma include anche molti controlli Owner Draw. Usa gli handle di Windows ed è basata sui Windows Messages. Ciò la rende soggetta allo stesso comportamento del 90% delle altre applicazioni Windows. Se vuoi, puoi trasferire un pulsante VCL dalla tua app ad un’altra o inoltrare i messaggi inviati ad un’app differente e reindirizzarli alle tue.
Come già detto, la VCL è una libreria matura, così come i componenti di terze parti. Ci sono migliaia di controlli, librerie e componenti VCL di alta qualità.

Probabilmente i più notevoli sono le griglie. Le griglie VCL sono le migliori nel settore e, per ovvie ragioni, i nostri partner tecnologici hanno creato griglie VCL prima che qualche altra piattaforma avesse l’idea del controllo sulle terze parti. Dunque, se vuoi la migliore griglia al mondo, devi probabilmente usare la VCL (sebbene le griglie di FireMonkey stiano guadagnando terreno velocemente).
Siccome la VCL è più che altro un wrapper sui Windows API, le applicazioni sono molto più piccole di quelle di FireMonkey.  Ad ogni modo, questo non sarebbe un grosso vantaggio vista la velocità di download e le grandi dimensioni di dischi di oggi. Ma se vuoi un’applicazione piccola e leggera, allora VCL potrebbe essere una buona scelta.
Dato che la VCL è uscita da un po’, è possibile trovare pezzi di codice già scritti da integrare nella tua applicazione. Puoi usare una utility come Mida converter per convertirli per FireMonkey, o anche Monkey Mixer o TFireMonkeyContainer per mettere insieme FireMonkey e VCL.
Generalmente, se sto costruendo una semplice applicazione con dbgrid e so che girerà su Windows, allora userò VCL, oppure se ho bisogno di manipolare un controllo di terze parti, o elementi di Windows API che richiedono dei messaggi Windows. Sebbene sia sempre meno frequente.


FireMonkey Cross Platform Framework (FMX)


Dato che FireMonkey è un framework più nuovo, tendi a vederlo più sicuro.

Molte persone stanno ancora imparando ad usarlo e come affrontare lo sviluppo della cross platform. Il vantaggio principale di FMX è che è stato pensato da cima a fondo per essere un cross platform development. Questo ti permette di definire un’interfaccia singolo utente che giri bene e si adatti a Windows, iOS, macOS e Android. Ma non è l’unica ragione per usare FireMonkey.

FireMonkey è basato sugli ultimi framework GPU: DirectX per Windows e OpenGL per gli altri.

Supporta modelli rendering sia 3D che 2D, entrambi “hardware accelerated”. Se vuoi effetti grafici d’impatto o il 3D, allora FireMonkey dovrebbe essere la tua prima scelta. Ne esistono di potenti anche per VCL, ma FireMonkey ce li ha radicati nel suo “DNA”.
FireMonkey è anche molto flessibile.  Puoi integrare ogni altro controllo con FireMonkey. L’abilità di costruire controlli eterogenei trasforma il più piccolo set di controlli che FireMonkey include in un set di controllo molto più consistente. Ci sono anche animazioni ed effetti che ti permettono di costruire, con il mimino sforzo, ricche interfacce utente.
VCL ha un set di containers e alignments di tutto rispetto, ma quello di FireMonkey lo è molto di più e, di nuovo, è molto più flessibile. Un’altra grande differenza è che FireMonkey usa un numero preciso di "floating point number" invece di integrarli nel laying out dei controlli.

Una precisione molto più elevata, ma in genere questo non è molto interessante. Ciò che fa la differenza è che quando fai una scala su FireMonkey, questo supporta una densità multi-pixel.
La ragione più ovvia per usare FireMonkey è se stai pensando di indirizzarti verso le multi piattaforma o se pensi di farlo in futuro (il che è molto probabile). Altre ragioni sono se vuoi una UI più flessibile o se sta pensando di approfittare dei vantaggi che hanno il 3D o altri effetti che FireMonkey fornisce.

Conclusione


In breve, VCL è incredibile è continua ad avere correzioni e nuovi elementi. È il miglior framework interfaccia utente che esista, eccetto forse FireMonkey. 
Perciò, potresti utilizzare VCL quando destini a Windows i tuoi progetti o quando non hai bisogno del 3D, degli effetti o della flessibilità di FireMonkey. Potresti invece usare FireMonkey quando sei indirizzato verso le multi piattaforme, o hai bisogno di più flessibilità, specie per la parte grafica.

Entrambi i framework resisteranno a lungo. Se li userai entrambi potrai capire quale utilizzare in ogni circostanza.

Nessun commento:

Posta un commento