Le applicazioni web sono utili, ma ci sono alcuni casi in cui non è desiderabile o necessario hostare un’applicazione su un server remoto. Con HTML5 si introducono nuove funzionalità di basso livello per i browser moderni, come l’abilità di leggere e scrivere sui files. Adesso è possibile creare applicativi javascript single-page, offline usando il browser come una piattaforma.

Mentre molte applicazioni basate su browser presentano alcune possibilità molto interessanti, come l’abilità di eseguire la propria applicazione su sistemi operativi differenti, dall’altro lato presentano anche alcune limitazioni significanti.

Un potenziale problema con le applicazioni web in generale è il rendering che varia da browser a browser. HTML5 è ancora in evoluzione, e varie patch vanno applicate per assicurarsi che tutto funzioni nello stesso modo su tutti i browser principali.
Infine, ma non meno importante, la maggior parte dei browser sono configurati per garantire una certa sicurezza verso contenuti malevoli. La stessa politica sull’origine dei dati è forzata di default, prevenendo la possibilità per un sito su un dominio di effettuare chiamate AJAX verso un altro sito.

Node-webkit

Il progetto node-webit che è stato creato da Intel e reso open source nel 2011, è un tentativo per portare le applicazioni web in ambiente Desktop.
Questo progetto fornisce un browser webkit esteso con l’abilità di controllare gli emenenti dell’interfaccia in piena libertà. La sicurezza del browser è più rilassata e soporattutto integra Node.js, permettendo così a queste app node-webkit di sfruttare un’ampia gamma di funzionalità oltre a quelle già offerte dalle API di HTML5.
I moduli possono essere direttamente integrati nel DOM, così da avere un nuovo modo per scrivere applicazioni native con tecnologie web.
Questa la pagina ufficiale su GitHub.

Caratteristiche

– App scritte in HTML5, CSS3, JS e WebGl.
– Completo supporto alle API di Node.js e i suoi moduli di terze parti.
– Ottime performance: Node e WebKit girano nello stesso thread: gli oggetti risiedono nello stesso heap e possono referenziarsi a vicenda.
– App facili da impacchettare e distribuire.
– Disponibile su Linux, Mac OS X e Windows.

Le applicazioni node-webkit sono create in modo molto simile alla convenzionali applicazioni web, con cartelle adibite a contenere file HTML, CSS, JS e multimediali.
Così come in node, viene usato un file package.json per descrivere l’applicazione.
Nel file package.json, un elemento main specifica quale sia la prima pagina HTML da mostrare: “index.html” per esempio. Così come nelle convenzionali app web single-page, il file HTML “principale” deve contenere tutto il codice javascript e CSS necessario.

Il file package.json è anche usato per configurare le proprietà della finestra di default. Sotto un esempio:

{
  "name": "hello",
  "main": "index.html",
  "window": {
    "toolbar": false,
    "width": 800,
    "height": 600
  }
}

Le applicazioni node-webkit possono persino essere messe a tutto schermo, full-screen (“kiosk” mode), così da prevenire che gli utenti escano per interagire con il sistema operativo.

MW.js vs Electron

Elctron è un framework che permette di scrivere applicazioni desktop cross-platform usando Javascript, HTML e CSS. E’ basato su Node.js e Chromium ed è usato per la realizzazione dell’editor Atom e molte altre app!
MW.js è un progetto sponsorizzato da Intel, Electron invece è un progetto sponsorizzato da GitHub.

In questa pagina si trova un confronto fra i due framework. Tenendo presente che ad oggi i due progetti sono in costante aggiornamento e le differenze si fanno sempre meno marcate. Inoltre sempre più questi framework sono utilizzati in produzione dalle grosse compagnie per distribuire le loro app desktop.

Qui la pagina ufficiale del progetto Electron su Github. Consigliamo anche di seguire l’account su twitter (@ElectronJS), per restare aggiornati.

Fra le tante app scritte con questi framework non possiamo non citare, PopcornTime, Atom o MediacenterJS.