Riprendendo una discussione nata nei commenti di qualche articolo fa vorrei puntualizzare alcune differenze importanti tra due tecnologie: Ajax e Flash.
Premetto che l’ambito di interesse è lo sviluppo di RIA, cioè di applicazioni internet con potenzialità simili a quelle desktop.
Fatte queste premesse, se analizziamo la scena globale ci accorgiamo che ad eccezione delle RIA che si occupano di grafica (come Aviary o Photoshop Express), la maggior parte delle applicazioni web sono sviluppate in AJAX.
Ecco alcuni esempi importanti: tutti gli applicativi Google (Google Documenti, GMail, Google Calendar…), la suite completa per l’ufficio Zoho, ma anche i pannelli di amministrazione dei principali CMS (come la nuova interfaccia amministrativa di Wordpress, dalla quale sto scrivendo), senza contare i Social Network come Facebook che per la loro complessità assomigliano sempre più a vere e proprie RIA.
Inoltre, questo non riguarda solo i “big player“: la quasi totalità delle piccole web-applications 2.0, scritte in PHP o RubyOnRails, continuano a fare uso estensivo di AJAX.
Perchè AJAX
E allora, quali sono questi vantaggi e quali svantaggi nel costruire un’applicazione interamente in Flash?
- Anzitutto, Flash è spaesante per l’utente. Il tasto destro non funziona come ci si aspetta, molte convenzioni che favoriscono l’usabilità non sono rispettate.
- Fare una cosa semplice come selezionare e copiare del testo può diventare complicato o impossibile.
- Le abitudini sulla navigazione sono disattese: spesso le applicazioni Flash non hanno pagine o diversi indirizzi URL.
- Molte funzionalità dei browser vengono annullate: Flash di fatto nega al browser e ai suoi plugin di entrare nell’applicazione e personalizzarne la visualizzazione.
- Ad esempio: impostare la dimesione preferita del testo non ho effetti su Flash, i web accellerator e le web slices di Internet Explorer 8 non funzionano, nemmeno i plugin di Firefox per filtrare la pubblicità, e l’elenco potrebbe essere veramente infinito.
- Per non parlare della stampa, che se già normalmente da spesso risultati inattesi, con Flash non viene nemmeno presa in considerazione.
- Ultimo ma non ultimo, Flash ha maggiori problemi di accessibilità, sia per chi usa screen reader sia per dispositivi alternativi o mobile.
Salvare il bambino
Non buttiamo però il bambino con l’acqua sporca.
Se è vero che usare Flash per l’intera interfaccia ha i suoi svantaggi, anche nell’ambito delle RIA Flash continua ad essere un’ottima scelta per:
- Sfruttare potenzialità avanzate come l’upload multiplo di file (vedi ad esempio la libreria SWFUpload: Flash c’è, ma non si vede) o il salvataggio dati nel browser (vedi dojo.storage)
- Animazioni grafiche circoscritte (anche in questo ambito AJAX offre alternative interessanti, ma Flash resta il top)
- Grafici interattivi animati (vedi Google Analytics)
Che ne pensate?
Ho tralasciato qualche punto importante?
I commenti sono sempre ben accetti.



2 Comments
i miei 2 cents.
Credo che Ajax e Flash non debbano essere messi a confronto, sono 2 tecnologie totalmente differenti.
Ad ogni modo non sono completamente d'accordo, con Flash e più precisamente con Flex ed Air puoi creare veri applicativi desktop utilizzando elementi del tutto simili a quelli html.
Flash ormai è utilizzato solo per produziuoni multimediali quali possono essere siti "da vetrina" e giochi.
hai ragione, sono due tecnologie molto diverse
però ultimamente le possibilità di AJAX si stanno spingendo così avanti(vedi http://www.chromeexperiments.com/detail/monster/) che i due campi di utilizzo talvolta si sovrappongono, per cui sentivo il bisogno di fare un attimo chiarezza e puntualizzare le differenze
l'esempio che hai fatto di Flex (che per il lato client gira nel Flash Player) e di Air mi suggerice un'altra precisazione: in certi casi non si può fare a meno di queste potenzialità, e quindi si è costretti a safricare quei punti che ho scritto sopra
Air merita un'altro appunto: dal momento che richiede un'installazione e gira fuori dal browser viene percipito come una applicazione desktop, per cui le aspettative dell'utente (e le questioni sull'usabilità) sono completamente diverse