Opa è un linguaggio di programmazione open source per lo sviluppo di applicazioni web scalabili.
Può essere usato sia per programmazione lato client e lato server, dove programmi completi scritti in Opa sono compilati in Node.js sul server e JavaScript sul client, con un compilatore che rende automatiche tutte le comunicazioni tra i due.Opa actually supports various server-side backends, Nodejs being the most popular one Opa implementa una tipizzazione forte e statica, utile nella protezione conto attacchi informatici come SQL injection e cross-site scripting.
Il linguaggio è stato presentato ufficialmente per la prima volta alla conferenza OWASP nel 2010, e il codice sorgente rilasciato su GitHub nel giugno 2011, sotto la GNU Affero General Public License. Successivamente, la licenza è stata sostituita con la licenza MIT per la parte del framework (librerie) e la AGPL per il compilatore cosicché le applicazioni scritte in Opa possono essere rilasciate sotto qualunque licenza, che essa sia proprietaria o open source.
Design e funzionalità Opa è formata da un server web, un database ed un motore di esecuzione distribuito. Il codice scritto in Opa viene compilato in JavaScript utilizzando Node.js lato server e in JavaScript utilizzando jQuery per garantire una compatibilità cross-browser sul lato client. Il vantaggio di questo approccio rispetto ad altri come le piattaforme Rich Internet Application (RIA) è che gli utenti non devono installare un plugin nel loro browser. Opa condivide l'ideale dei framework per applicazioni web, ma utilizza un approccio alternativo. I suoi designer affermano che ciò aiuta Opa ad evitare molti problemi di sicurezza, come gli attacchi SQL injections o cross-site scripting (XSS).
Il linguaggio di base è di tipo funzionale e ha un sistema dei tipi statico con l'interferenza dei tipi. Opa fornisce inoltre le sessioni che incapsulano uno stato imperativo e comunicano utilizzando una comunicazione a scambio di messaggi, simile ai processi Erlang. Opa fornisce molte strutture e funzioni comuni nello sviluppo web come oggetti first-class, per esempio l'HTML e i suoi parser, basati sulle Parsing Expression Grammars. A causa di questa adesione tra il linguaggio ed i concetti legati al web, Opa non è concepito per la creazioni di applicazioni non web (e quindi applicazioni desktop).
La versione stabile 0.9.0 del febbraio 2012 ha introdotto una tecnologia di mappatura per il database non relazionale orientato ai documenti MongoDB, simile alla object-relational mapping. La versione 1.1.0 rilasciata nel febbraio 2013 aggiunge inoltre il supporto per PostgreSQL, spianando la strada per il supporto a diversi database SQL.
Esempi
Hello world Il tradizionale programma Hello World, che produce un web server che serve una pagina statica con "Hello, web!" come contenuto, può essere in scritto in Opa così:Server.start(Server.http,
title: "Hello", page: function() { <h1>Hello, web!</h1>
)Può quindi essere compilato in un file codice eseguibile JS con:$ opa hello_web.opaL'esecuzione del file risultato JS lancia l'applicazione web:$ ./hello_web.js
Linguaggi correlati
Dart - un'alternativa a JavaScript per le web app Haxe - un linguaggio di programmazione simile per web app CoffeeScript - un linguaggio di programmazione transcompilato a Javascript per web app
Note
Bibliografia Opa: Up and Running, 2013, O'Reilly Media
Collegamenti esterni
Categoria:Software del 2011 Categoria:Software con licenza GNU AGPL Categoria:Software libero multipiattaforma Categoria:Linguaggi di programmazione funzionali