Il settore dello sviluppo software è ormai sempre più orientato verso la creazione di Web application. A riprova si ciò basti pensare che uno dei framework più gettonati è Electron, strumento che consente lo sviluppo di applicazioni Desktop tramite componenti originariamente pensate per il Web come il runtime NodeJS ed il motore di rendering di Chromium.
Ma non tutta la community è pienamente soddisfatta dall'evoluzione di JavaScript e parallelamente starebbe crescendo l'interesse verso Golang, un linguaggio sviluppato da Google che se ben padroneggiato consente di ottenere prestazioni elevate con un consumo di risorse limitato rispetto a JavaScript.
Durante il FOSDEM 2019, tenutosi la scorsa settimana a Bruxelles, lo sviluppatore Serge Zaitsev ha presentato un interessante progetto basato sulle librerie Webview e Lorca. Tramite questi due componenti Zaitsev è riuscito a sviluppare un'applicazione Desktop in HTML5 e Golang.
Webview è una libreria per C/C++/Golang pensata per realizzare GUI, riesce ad interfacciarsi con Cocoa/Webkit, con le GTK-webkit2 e con MSHTML in modo da offrire un'interfaccia nativa a seconda della piattaforma di riferimento.
Lorca invece è un'altra piccola libreria pensata per lo sviluppo di applicazioni Desktop multipiattaforma tramite HTML5 e Golang.
Il team di Lorca sfrutta l'engine di Chromium per genere un UI layer. Tuttavia a differenza di Electron i componenti di Chromium non sono implementati all'interno dell'App package ma vengono usati invece quelli già presenti sul sistema, in modo da risparmiare spazio su disco.
Lorca funziona stabilendo una connessione alla browser window e dando la possibilità allo sviluppatore di eseguire chiamate al codice Go. Inoltre è anche possibile manipolare l'interfaccia utente, sempre tramite Go, ogni volta che lo sviluppatore lo ritiene necessario.
È quindi sempre più probabile che nel prossimo futuro il settore dello sviluppo web si sposti verso soluzioni che comprendano Golang come alternativa a JavaScript o ad altri linguaggi similari.
Via Serge Zaitsev