Opa — мова програмування з відкритим вихідним кодом для розробки масштабованих вебдодатків.

Мову можна використовувати як для клієнтських, так і для серверних сценаріїв, де програми пишуться в Opa і згодом компілюються в Nodejs на сервері в на JavaScript на стороні клієнта.Adam Koprowski (24 February 2012). Opa actually supports various server-side backends, Nodejs being the most popular one Opa має сильну статичну типізацію, яка може бути корисна в захисті проти безпеки таких проблем, як в SQL-ін'єкції і міжсайтовий скриптинг.Robertson, William; Giovanni, Vigna (2009).

Мову було вперше офіційно представлено на конференції OWASP 2010 року,"OPA: Language Support for a Sane, Safe and Secure Web, at OWASP 2010".  а вихідний код викладено на github«GitHub repository» . у червні 2011-го.

Design and features Opa складається з вебсервера, бази даних та розподіленого рушія.«Opa — The Scalable Open Source Cloud Language» . Код компілюється в JavaScript за допомогою Node.js на серверній стороні і в JavaScript з використанням jQuery для крос-браузерної сумісності на стороні клієнта.«Interview: François-Régis Sinot on Opa, a Web Development Platform» . Перевага даного підходу в порівнянні з деякими платформами Rich Internet Applications (RIA) є те, що користувачам не потрібно встановити плагін для браузера.Neil McAllister (8 September 2011).  Opa розподіляє дії вебфреймворками, але використовує трохи інший підхід.«InfoWorld review: Tools for rapid Web development» . Його конструктори стверджують, що це допомагає мові уникнути багатьох проблем безпеки, на кшталт SQL ін'єкцій і міжсайтового скриптингу (XSS).«Auch Opa ist für Cloud-Anwendungen» .

Ядро мови функціональне і має статичний тип за видами типів. Мова також забезпечує роботу сесій, які інкапсулюють імперативні стани і взаємодіють за допомогою передачі повідомлень, схожими на роботу Erlang. Opa надає безліч структур або функцій, які є спільними в веброзробці, як об'єкти першого класу. Наприклад, HTML«Opa — a unified approach to web programming» . i-Programmer. 28 August 2011. та аналізатори, засновані на парсингу граматичних виразів.Koprowski, Binsztok (2011).  Через це ця мова не призначена для створення не-вебдодатків (наприклад, додатків для настільних комп'ютерів).«Opa, un nouveau langage pour le développement d'applications Web» (in French).

У релізі 0.9.0, що вийшов у лютому 2012 року, з'явилась підтримка відображення нереляційних, документ-орієнтованих баз даних MongoDB, схожих на об'єктно-реляційні відображення.«Hello, database» .«Low-level MongoDB support» .«Programming Opa: Web development, reimagined» . В версії 1.1.0 в лютому 2013 року також додано підтримку PostgreSQL.

Приклади

Hello world Традиційна програма Hello world! створює вебсервер, який відобразить статичну сторінку з текстом «Hello world!», її код буде наступним:Alastair Aitken (26 July 2011). Server.start(Server.http, { title: "Hello" , page: function() { <h1>Hello, web!</h1> }

)Він може бути скомпільований в окремий JS-файл:$ opa hello_web.opaЗапуск JS-файлу запускає вебдодаток:$ ./hello_web.js

Див. також Dart — JS-альтернатива для вебдодатків Haxe — подібна мова програмування для вебдодатків CoffeeScript — мова програмування, що компілюється в JavaScript

Примітки

Бібліографія Opa: Up and Running, 2013, O'Reilly Media ISBN 978-1449328856

Посилання Офіційний сайт