Ho usato Chrome come browser primario per qualche giorno e ho seguito l’interessante presentazione tecnica disponibile sul sito di Google e queste sono le mie impressioni.
Prima di tutto mettiamo da parte le cose ovvie.
Chrome ha un’interfaccia utente con alcune innovazioni simpatiche e interessanti, che faranno scuola. Molto interessante è la quasi scomparsa dell’interfaccia utente, che prende atto del fatto che ogni pagina è un’applicazione a sé. Ho apprezzato anche la pagina di accoglienza. All’apertura del browser o di una nuova scheda Chrome non si limita a presentare una pagina vuota ma mostra i thumbnail dei nove siti più visitati e i segnalibri creati più di recente. Semplice e efficace, degno di Apple.
L’indipendenza fra le schede ha un effetto gradito sull’interfaccia, che mi permette di portarmi dietro un’abitudine presa con Safari sul Mac. Si può prendere una scheda e promuoverla a finestra o trasferirla in un altro browser, questo mi permette di dividere le finestre per argomento e attività : una finestra con i client di posta di Yahoo e GMail e Google Reader, una finestra per ogni ricerca su Google, accompagnata dalle schede aperte sui risultati. Io normalmente scorro i risultati e apro in background le schede apparentemente più rilevanti per esaminarle poi con calma e cerco di tenere ogni argomento raccolto in una finestra.
Ci sono state preoccupazioni per la privacy, perché ogni browser ha un codice univoco e sono già usciti degli anonimizer.
Google ha pubblicato in modo specifico quali dati sono memorizzati e qual è la politica riguardo la privacy di Chrome. Però la omni bar invia a Google ogni carattere digitato, quindi è innegabile che Google ha una storia molto dettagliata della navigazione di ogni utente.
Lasciando da parte questi due punti, su cui si concentrerà la stampa e la reazione degli utenti, passiamo all’architettura del browser.
Google non ha scritto il motore di rendering Html, che ha preso da un progetto open source: WebKit, come Apple o Nokia, ma dal motore al browser non è solo questione di cromature e vernice.
Uno dei punti più interessanti della realizzazione di Google è la gestione della memoria. A ogni tab è associato un processo diverso. Non solo questo dà quell’indipendenza dai tab di cui abbiamo già parlato, ma si ottengono due grossi benefici. il primo è che la gestione della memoria è più semplice. Un browser tradizionale alloca memoria per ogni richiesta e la libera quando non ne ha più bisogno. La memoria liberata lascia dei buchi riutilizzabili nello spazio indirizzi del browser. Questi buchi possono essere riutilizzati per allocare blocchi di memoria delle stesse dimensioni o più piccoli della dimensione del buco, ma se i requisiti di memoria sono diversi il browser dovrà allocare nuovo spazio. È facile convincersi che si va incontro a due problemi: la crescita nel tempo dello spazio indirizzi e la frammentazione della memoria, quando avremo un sacco di spazi vuoti, ma troppo piccoli e il sistema operativo avrà difficoltà ad allocare nuova memoria.
Associando ogni scheda del browser a un processo si semplifica il problema alla radice: tutto quello che è allocato da una pagina e dalla sua storia viene restituito al sistema operativo quando la scheda viene distrutta. Il sistema operativo può fare l’uso ottimale della memoria liberata: è una delle sue abilità principali.
Un altra innovazione importante di Chrome è l’interprete Javascript V8, che incorpora un generatore di codice nativo che compila just in time (Jit) e quindi è detto jitter.
Un interprete JavaScrip tradizionalmente analizza il codice e naviga l’albero sintattico creato in memoria per eseguire il programma. Questo processo è lento.
Il jitter di V8 produce codice nativo, che gira alla massima velocità possibile. In più il processo di compilazione permette di creare ottimizzazioni nascoste molto interessanti, per esempio classi identiche condividono lo stesso codice e la garbage collection può essere più accurata.
Chrome non è il solo motore a avere cercato di ottimizzare JavaScript, abbiamo visto novità interessanti anche da WebKit, con la macchina virtuale Squirrelfish. Queste innovazioni si possono importare in Safari, come mostriamo sul numero in edicola.
Le innovazioni del JavaScript promettono prestazioni molto migliori in meno spazio, una caratteristica molto importante per le applicazioni web 2.0, mentre l’indipendenza fra le schede assicura che un crash in una pagina non faccia cadere anche un’applicazione importante in qualche altra scheda.
Queste sono le ragioni per cui Google presenta Chrome come un imporante passo avanti verso la creazione di applicazioni Web 2.0, delle ragioni di tutto rispetto e con un fondamento tecnico sero. Ci aspettiamo che i dubbi sulla privacy siano fugati e che l’esempio sia seguito da altri browser.