Парадигма | мультипарадигма : функциональная , императивная |
---|---|
Разработчик | MLstate |
Впервые появился | 2011 г. |
Стабильный выпуск | |
Печатная дисциплина | статичный , сильный , предполагаемый |
Операционные системы | Linux , OS X , Windows |
Лицензия | Лицензия MIT , AGPLv3 |
Интернет сайт | opalang |
Под влиянием | |
OCaml , Erlang , JavaScript |
Opa - это язык программирования с открытым исходным кодом для разработки масштабируемых веб-приложений .
Его можно использовать как для клиентских, так и для серверных сценариев , где полные программы пишутся на Opa и впоследствии компилируются в Node.js на сервере и JavaScript на клиенте , при этом компилятор автоматизирует все коммуникации между ними. [3] [4] OPA реализует сильная , статическая типизация , который может быть полезным в защите от проблем безопасности , таких как инъекции SQL и межузловых сценариев атак. [5]
Впервые язык был официально представлен на конференции OWASP в 2010 году [6], а исходный код был выпущен на GitHub [7] в июне 2011 года под лицензией GNU Affero General Public License . Позже лицензия была изменена на лицензию MIT для части фреймворка (библиотеки) и AGPL для компилятора, так что приложения, написанные на Opa, могут быть выпущены по любой лицензии, проприетарной или с открытым исходным кодом.
Дизайн и особенности [ править ]
Opa состоит из веб-сервера , базы данных и механизма распределенного выполнения. [8] Код, написанный на Opa, компилируется в JavaScript с использованием Node.js на стороне сервера и в JavaScript с использованием jQuery для кроссбраузерной совместимости на стороне клиента . [9] Преимущество этого подхода по сравнению с некоторыми платформами Rich Internet Application (RIA) заключается в том, что пользователям не требуется устанавливать подключаемый модуль в своем браузере. [10] Opa разделяет мотивацию с веб-фреймворками , но использует другой подход.[11] Его разработчики утверждают, что это помогает Opa избежать многих проблем безопасности, таких как SQL-инъекции илиатаки межсайтового скриптинга (XSS). [12]
Базовый язык является функциональным и имеет систему статических типов с выводом типов . Opa также предоставляет сеансы, которые инкапсулируют императивное состояние и общаются с помощью передачи сообщений , аналогично процессам Erlang . Opa предоставляет множество структур или функций, которые являются общими для веб-разработки, как объекты первого класса , например HTML [13] и парсеры , основанные на грамматиках выражений синтаксического анализа . [14] Из-за этой связи между языком и концепциями, связанными с Интернетом, Opa не предназначен для приложений, не связанных с Интернетом (например,настольные приложения ). [15]
В выпуске 0.9.0 в феврале 2012 года была представлена технология сопоставления баз данных для нереляционной документно-ориентированной базы данных MongoDB , аналогичная объектно-реляционному сопоставлению . [16] [17] [18] В выпуске 1.1.0, выпущенном в феврале 2013 года, также была добавлена поддержка PostgreSQL , что открыло путь для поддержки нескольких баз данных SQL .
Примеры [ править ]
Привет, мир [ править ]
Традиционная программа Hello world , создающая веб-сервер, который обслуживает статическую страницу со словами «Hello, web!». в качестве его содержания может быть записано в Opa как: [19]
Сервер . start ( Сервер . http , { title : "Привет" , page : function () { <h1> Привет, Интернет! </h1> } } )
Его можно скомпилировать в автономный исполняемый файл JS с помощью:
$ opa hello_web.opa
Запуск полученного исполняемого JS-файла запускает веб-приложение:
$ ./hello_web.js
См. Также [ править ]
- Ур (язык программирования) - функциональный язык программирования для веб-разработки
- Dart - альтернатива Javascript для веб-приложений
- Haxe - аналогичный язык программирования для веб-приложений
- CoffeeScript - язык программирования, преобразованный в Javascript для веб-приложений.
Ссылки [ править ]
- ^ "Выпуск 1.1.1 · MLstate / opalang" . GitHub . Источник 2021-01-29 .
- ^ "Отличные новости об Опа" . Источник 2021-01-29 .
- ^ Адам Копровский (24 февраля 2012). «Node.js против Opa: Web Framework Showdown» . developer.com.
- ^ Opa на самом деле поддерживает различные серверные части, из которых Nodejs является самым популярным.
- ^ Робертсон, Уильям; Джованни, Винья (2009). «Статическое обеспечение целостности веб-приложений с помощью строгой печати» . SSYM'09 Труды 18-й конференции, посвященной симпозиуму по безопасности USENIX .[ постоянная мертвая ссылка ]
- ^ «OPA: языковая поддержка разумного, безопасного и безопасного Интернета на OWASP 2010» . OWASP. Июнь 2010 г.
- ^ "Репозиторий GitHub" .
- ^ «Opa - масштабируемый облачный язык с открытым исходным кодом» . WebAppers. 22 июля 2011 г.
- ^ «Интервью: Франсуа-Режис Синот на Opa, платформе веб-разработки» . InfoQ. 7 сентября 2011 г.
- ↑ Нил Макаллистер (8 сентября 2011 г.). «Представляем Opa, язык веб-разработчиков, который управляет ими всеми» . InfoWorld.
- ^ "Обзор InfoWorld: Инструменты для быстрой веб-разработки" . InfoWorld . 12 мая 2010 г.
- ^ "Auch Opa ist für Cloud-Anwendungen" . Heise Online . 29 июля 2011 г.
- ^ «Опа - единый подход к веб-программированию» . i-Программист. 28 августа 2011 г.
- ^ Копровский, Binsztok (2011). «TRX: официально проверенный интерпретатор парсера» . Логические методы в информатике.
- ^ «Опа, новый язык для разработки веб-приложений» (на французском). LinuxFr. 22 июня 2011 г.
- ^ "Привет, база данных" . Документация опа. Архивировано из оригинала на 2014-01-12 . Проверено 22 февраля 2012 .
- ^ "Низкоуровневая поддержка MongoDB" . Документация опа. Архивировано из оригинала на 2014-01-12 . Проверено 22 февраля 2012 .
- ^ «Программирование Opa: переосмысление веб-разработки» . Компьютерный мир . 1 февраля 2012 г.
- ↑ Аластер Эйткен (26 июля 2011 г.). «Опа, облачный язык - тест-драйв» . Морган Хилл. Архивировано из оригинального 25 сентября 2011 года . Проверено 6 сентября 2011 года .
Библиография [ править ]
- Opa: Up and Running , 2013, O'Reilly Media ISBN 978-1449328856.
Внешние ссылки [ править ]
- Официальный веб-сайт