sabato 3 novembre 2007

Che cosa e' una Rich Internet Application?

Fonte Originale

Cosa e' una Rich Internet Application? James Ward dice che e' difficile dare una esatta definizione di cosa sia una applicazione RIA. Un po' come dire cosa e' un albero. Forse e' più facile identificare una applicazione RIA quando se ne ha una davanti, come un albero quando lo si ha davanti a se.

Forse e' più semplice dire quali caratteristiche si vuole che abbia una applicazione di questo genere, rispetto a quello che ci si aspetta abbia una semplice pagina web.

Di sicuro entrambe sono applicazioni web. Non c'e' dubbio. Occorre allora definire il termine "Rich", ovvero "Ricca". Ma ricca di cosa?

Ricca di esperienze fornite all'utente finale che usufruisce di una tale applicazione. Una ricchezza non tanto di contenuti - una normalissima pagina web può essere molto ricca di contenuti, magari con audio, video, animazioni flash ed altro. Ma probabilmente non fornisce molta interattività all'utente, ne' velocita' di risposta, di reazione alle operazioni dell'utente.

Non sono d'accordo con James Ward quando parla del fatto che una RIA deve essere "Alive", ovvero viva. Secondo lui deve essere una modellizzazione del movimento e della bellezza che possiamo trovare nel mondo reale. Effetti di zoom, di transizioni dolci sugli elementi grafici, ombre degradanti, angoli arrotondati sarebbero elementi delle RIA che aiuterebbero a rendere il software più simile al mondo reale.

Questi elementi secondo me non hanno nulla di distintivo rispetto ad una pagina web tradizionale, se fini a se stessi. Non credo che un utente guardi più di tanto all'impatto emozionale come modo per raggiungere una soddisfazione complessiva nell'uso del software. Un altro conto invece se tali elementi servono a migliorare altri aspetti come l'interattivita' con l'utente.

Se stiamo salvando dei dati utilizzando la nostra applicazione rimaniamo abbastanza perplessi se non abbiamo nessun mezzo per essere consapevoli di ciò che avviene e semplicemente l'interfaccia grafica si blocca fino a quando compare un messaggio che ci avvisa che il salvataggio dei dati e' terminato correttamente nel modo desiderato. Quindi in quel caso ben vengano effetti di transizione come una finestra di dialogo che ci avvisi del progresso della nostra operazione di salvataggio dei dati e magari ci faccia capire se sta andando tutto bene e quanto può mancare alla sua terminazione.

Non mi preoccuperei tanto poi dell'interazione multimediale invocata nel suo articolo. Già e' difficile trovare forme più elementari di interazione, che forse e' meglio concentrarsi per migliorare quello, prima di esplorare forme di interazione più complesse.

Ad esempio ultimamente era comparso un articolo che parlava di quello che idealmente ci si aspetta da un widget che implementa un menu ad albero da utilizzare nelle nostre applicazioni. Ovvero le specifiche che l'oggetto TreeMenu dovrebbe soddisfare. E sinceramente, benché si possa usufruire all'interno dei nostri framework di molti buoni widget TreeMenu fatti in molti modi, nessuno ancora e' aderente a tali specifiche.

Sulla responsività, ovvero sulla reattività di risposta della nostra applicazione web, sono concorde. Il grosso problema e' che per fare RIA complesse occorre utilizzare pesantemente Javascript. Già il fatto di non ricaricare completamente tutta una pagina web, paradigma fondamentale dell'approccio Ajax, migliora moltissimo la reattività della nostra applicazione. Pero' ci sono aspetti poco o per niente controllabili, quali aspetti riguardanti la connettività di rete, le limitazioni di processamento, che ci obbligano ad attendere che la nostra applicazione finisca di compiere una operazione pesante quale può essere il caricamento di una tabella con molti dati da mostrare, oppure il riordinamento alfabetico dei dati mostrati nella tabella per una determinata colonna.

Javascript e' un linguaggio interpretato in tempo reale, perdipiu' dentro una macchina virtuale non efficientissima, fornita dal nostro browser. Perdipiu' Javascript non supporta il multithreading. Non si riesce a parallelizzare l'esecuzione delle operazioni.

Benché le ultime versioni degli interpreti Javascript abbiano avuto significativi miglioramenti nelle performance, può facilmente capitare di avere punti critici all'interno del nostro codice, con operazioni che richiedono anche dieci secondi od oltre per essere eseguite.

Se i tempi di attesa di una operazione superano qualche secondo di sicuro l'utente non percepisce la nostra applicazione come "ricca".

Per questo motivo in alcune classi di applicazioni RIA hanno assunto sempre più importanza macchine virtuali disponibili sul client diverse dal browser oppure alcuni meccanismi di caching locale, perché sicuramente questi meccanismi riducono i tempi di latenza, ed aumentano la responsivita' della nostra applicazione.

Esempi di ciò sono dati dalla piattaforma Adobe AIR (Ex Flex), di cui vi parlerò in un prossimo post.

Di sicuro le applicazioni RIA stanno assumendo sempre più rilevanza perché sono più connesse, vive, e reattive rispetto alle semplici pagine web tradizionali, e ci si aspetta che a mano a mano tutto sia fatto come una RIA.

Come dire che, una volta che l'utente ha provato una RIA, ci si aspetta che tutte le altre applicazioni abbiano le stesse caratteristiche.

Trasformazione di una vecchia Web Application

Fonte Originale

Una delle cose migliori della Ext community è il modo innovativo in cui fa uso del framework.
Molti utenti stanno sviluppando applicazioni per l'ambiente "Corporate" e cio' di per se stesso richiede un discreto livello di flessibilità per poterlo integrare con il complesso set di tecnologie associate al funzionamento di una applicazione "enterprise-level". Il membro della comunità Ext noto come kubens (AKA Wolfgang) ha fatto ciò creando una applicazione front-end molto bella che si integra con un sistema AS-400.
AS-400 è un potentissimo server creato da IBM per essere usato nella gestione di sistemi con elevate richieste date da applicazioni OLTP (Online Transaction Processing) e DSS (Decision Support Systems).
E' sufficiente dire che tali server non si trovano se non in ambienti aziendali di un certo livello.




Wolfgang ha lavorato con uno sviluppatore AS-400 per creare una interfaccia per la visualizzazione di diagrammi di dati. Utilizzando diagrammi basati su JSON e Flash , hanno prodotto una interfaccia davvero brillante con capacità di drill-down intuitive.

Per trovare maggiori informazioni sulla sua applicazione o per fare domande specifiche riguardo alla su integrazione con la piattaforma AS-400, visitate il forum e guardate il suo thread riguardante la sua esperienza.

venerdì 2 novembre 2007

Scegliere il giusto Framework Javascript

Fonte Originale

Cos'e' un framework Javascript, e a cosa dovrebbe servire?

Nelle Rich Internet Applications Ajax, se state utilizzando la metodologia che prevede l'uso massiccio di Javascript per governare il comportamento dell'interfaccia grafica sul browser occorre spesso, più di quanto si vorrebbe, manipolare gli elementi dell'interfaccia stessa e gestire il comportamento dei vari elementi in risposta a qualche evento innescato dall'utente che sta interagendo con la vostra interfaccia grafica.

Per far ciò occorre referenziare gli elementi e gli eventi della pagina utilizzando il Document Object Model del browser.

Già solo avere una scorciatoia per il metodo "document.getElementById('idElemento')" che diventa "$('id')" potrebbe aumentare la nostra efficienza e diminuire il tempo di scrittura del nostro codice.

Ecco, in termini molto semplicistici questo e' quello che ci può offrire un framework Javascript. Ovvero la semplificazione del nostro lavoro tramite l'utilizzo di scorciatoie e alias delle funzioni più comunemente utilizzate dagli sviluppatori di applicazioni Ajax.

Pensate ad una libreria di scorciatoie per abbreviare il codice necessario per scrivere un comando, per collegare un gestore di evento all'evento "onclick" associato ad un bottone, per creare un effetto di dissolvenza su un elemento grafico, per far comparire un tooltip esplicativo quando il cursore passa sopra ad una immagine.

I framework attuali permettono di fare questo, e molto di più. Addirittura alcuni di essi forniscono librerie di widget grafici avanzati, come potrebbe essere una tabella/griglia con la gestione dell'ordinamento dei dati per colonna, o addirittura la possibilità di fare analisi di gruppo sui dati mostrati (una caratteristica dell'oggetto Grid su Ext 2.0). Con inclusa la gestione dell'oggetto XMLHttpRequest che sta alla base del paradigma Ajax.

A questo punto, quale framework scegliere? Quale e' il migliore?

Sinceramente non saprei quale risposta darvi.

Con cosi' tanti buoni framework Javascript disponibili, diventa difficile sceglierne uno.

Un framework JavaScript può non rendervi un programmatore migliore, ma vi renderà più efficienti. Questa sola dovrebbe essere la ragione sufficiente per scegliere un framework Javascript, o libreria se preferite. Fino a quando non decidiate di costruirvene una vostra, ce ne sono moltissime piene di opzioni disponibili ai programmatori. Comunque, la scelta del giusto framework può essere complicata, e spulciare tra nel mare di opinioni date su questa o quella libreria da parte dei vari fanboy può intimidire chiunque.

L'articolo di Brian Reindel analizza come possono influire sulla scelta questioni come il supporto ad un determinato browser, la maturità del progetto, la documentazione disponibile per imparare ad usare la libreria, la presenza di una comunità vasta di utilizzatori alle spalle.

Benché molte considerazioni siano già note agli sviluppatori esperti, si tratta di considerazioni molto utili per coloro che si trovano ora per la prima volta a considerare quale libreria utilizzare.

Personalmente negli ultimi tempi sto utilizzando principalmente ActiveWidgets come Object Framework con l'integrazione di alcuni widgets presi da Ext.

Per il resto mi sono creato un framework personale, perchè due anni fa i framework esistenti non avevano la maturità necessaria attuale o addirittura non esistevano nemmeno.

Sinceramente se iniziassi ora da zero probabilmente farei una scelta diversa e mi indirizzerei su uno dei seguenti, che sono i più noti:

Dojo
Ext JS
jQuery
MooTools
Prototype
Script.aculo.us/
Yahoo!UI

Hello World!!!

Come si inizia qualsiasi nuovo linguaggio di programmazione? Con il più' classico dei programmi, quello che permette di scrivere "Hello World!!!"

Sinceramente ho sempre pensato che non ci fosse nulla di più' stupido che scrivere "Hello World!!!" come primo passo quando si cerca di imparare un linguaggio di programmazione. Che si tratti del C, del C++, di Java o di Javascript, a che serve saper scrivere un semplice messaggio sulla console?

Ma per fortuna questo non e' un corso su un linguaggio di programmazione.

Ma allora cosa sto cercando di cominciare qui ed ora?

Questo mio e' un tentativo di raccogliere e condividere informazioni riguardanti un metodo di progettazione di pagine web - Ajax - di cui molti parlano in modo sparso nel mondo dei "Web Developers".

Ormai da un po' si parla di Ajax, RIAs, Web 2.0. Personalmente ho cominciato a interessarmi a questi argomenti circa due anni fa, all'inizio del 2006. Fino ad allora mi sono occupato primariamente dello sviluppo di applicazioni software "desktop" ed occasionalmente mi capitava di dover costruire qualche sito web qui e la'.

Poi ho cominciato ad interessarmi a questi nuovi scenari e ad applicare sul campo quello che imparavo di volta in volta, prevalentemente per lo sviluppo di applicazioni aziendali distribuite in Intranet.
In un certo senso si tratta di pagine web interne ad una azienda per distribuire agli utenti interni delle applicazioni sui browser.

Da allora lo scenario delle Rich Internet Applications sta prendendo sempre piu' piede, anche se molti sviluppi stanno andando in direzioni divergenti tra loro. Adesso ad esempio una applicazione RIA si puo' fare con molti strumenti. In Ajax o in Flex, ad esempio. In JavaFX o in Silverlight. Usando Google.Gears, Ext, Dojo, Prorotype, MooTools, ActiveWidgets o un'altro tra gl iinnumerevoli framework che sono nati nel frattempo per facilitare i progettisti finali.

O se fate come me magari ne usate diversi prendendo il meglio da ognuno spruzzandoci sopra un po' di masochismo costruendovi un framework personale!!!!

Comunque ora come ora il mondo delle RIAs e' in pieno subbuglio, perche' ancora un mondo giovane, ed ogni giorno nascono strumenti tecniche ed applicazioni.

La maggior parte delle fonti di informazione ora disponibili e' in inglese, e per chi vorra' attingere direttamente alla fonte forniro' i link ad esse.

Per chi invece e' ancora ai primi passi nella progettazione delle Rich Internet Applications, ma ha gia' un buon background di conoscenze sulla programmazione di pagine web tradizionali, statiche o dinamiche, sto finendo di scrivere un Tutorial introduttivo sulla metodologia Ajax che rilascero' il prima possibile su questo blog.

Per iniziare, la fonte principale di informazioni sul mondo Ajax e', secondo me, il seguente: http://ajaxian.com/

A presto.