Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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.1 · MLstate / opalang" . GitHub . Источник 2021-01-29 .
  2. ^ "Отличные новости об Опа" . Источник 2021-01-29 .
  3. ^ Адам Копровский (24 февраля 2012). «Node.js против Opa: Web Framework Showdown» . developer.com.
  4. ^ Opa на самом деле поддерживает различные серверные части, из которых Nodejs является самым популярным.
  5. ^ Робертсон, Уильям; Джованни, Винья (2009). «Статическое обеспечение целостности веб-приложений с помощью строгой печати» . SSYM'09 Труды 18-й конференции, посвященной симпозиуму по безопасности USENIX .[ постоянная мертвая ссылка ]
  6. ^ «OPA: языковая поддержка разумного, безопасного и безопасного Интернета на OWASP 2010» . OWASP. Июнь 2010 г.
  7. ^ "Репозиторий GitHub" .
  8. ^ «Opa ​​- масштабируемый облачный язык с открытым исходным кодом» . WebAppers. 22 июля 2011 г.
  9. ^ «Интервью: Франсуа-Режис Синот на Opa, платформе веб-разработки» . InfoQ. 7 сентября 2011 г.
  10. Нил Макаллистер (8 сентября 2011 г.). «Представляем Opa, язык веб-разработчиков, который управляет ими всеми» . InfoWorld.
  11. ^ "Обзор InfoWorld: Инструменты для быстрой веб-разработки" . InfoWorld . 12 мая 2010 г.
  12. ^ "Auch Opa ist für Cloud-Anwendungen" . Heise Online . 29 июля 2011 г.
  13. ^ «Опа - единый подход к веб-программированию» . i-Программист. 28 августа 2011 г.
  14. ^ Копровский, Binsztok (2011). «TRX: официально проверенный интерпретатор парсера» . Логические методы в информатике.
  15. ^ «Опа, новый язык для разработки веб-приложений» (на французском). LinuxFr. 22 июня 2011 г.
  16. ^ "Привет, база данных" . Документация опа. Архивировано из оригинала на 2014-01-12 . Проверено 22 февраля 2012 .
  17. ^ "Низкоуровневая поддержка MongoDB" . Документация опа. Архивировано из оригинала на 2014-01-12 . Проверено 22 февраля 2012 .
  18. ^ «Программирование Opa: переосмысление веб-разработки» . Компьютерный мир . 1 февраля 2012 г.
  19. Аластер Эйткен (26 июля 2011 г.). «Опа, облачный язык - тест-драйв» . Морган Хилл. Архивировано из оригинального 25 сентября 2011 года . Проверено 6 сентября 2011 года .

Библиография [ править ]

  • Opa: Up and Running , 2013, O'Reilly Media ISBN 978-1449328856. 

Внешние ссылки [ править ]

  • Официальный веб-сайт