LINUX.ORG.RU

Opa 1.0 — JavaScript-фреймворк со строгой статической типизацией

 ,


1

0

Представлен первый релиз фреймворка Opa 1.0. Авторы Opa считают его одним из наиболее сложных и мощных JavaScript-фреймворков из всех существующих: он включает в себя полную реализацию всего стека возможностей JavaScript, расширенных поддержкой статической типизации и обеспечивающий полную поддержку Node.js и MongoDB. Код фреймворка доступен под лицензией Affero GPL.

Данный фреймворк также может использоваться в качестве самостоятельного языка программирования: приложение, будучи написанным на Opa, будет автоматически проверено на качество его кода, после чего может быть автоматически сгенерировано аналогичное по функциональности JavaScript-приложение. Все основные аспекты разработки веб-приложений любого уровня сложности изначально реализованы в данном фреймворке: это и типовой код фронтенда и бэкенда, генерация запросов к базе данных и варианты различных типовых конфигураций. Разработчики утверждают, что на разработку Opa потрачено более 100 человеко-лет, не беря в расчет тот код, который был безвозмездно инвестирован сторонними проектами и исследовательскими лабораториями.

Основные особенности Opa:

  • AJAX и COMET-вызовы с прозрачной JSON-сериализацией;
  • генерация HTML;
  • определение модели использования данных;
  • генерирование запросов к базе данных (пока только для MongoDB);
  • поддержка событийно-ориентированного подхода с неблокирующей архитектурой;
  • встроенные парсеры и генераторы;
  • фреймворк использует строгую статическую типизацию;
  • уделено большое внимание вопросам безопасности;
  • быстрый компилятор реализован на OCaml.

    В конце этого лета планируется выход следующей версии — Opa 1.1, в которой планируется улучшить стандартную библиотеку и API, расширить сообщения об ошибках в выводе компилятора и улучшить производительность Node.js-бэкенда. Разработчики также заявляют, что хотят сделать Opa фреймворком де-факто для всех корпоративных JavaScript-приложений.

>>> Подробности (OpenNet)

★★★

Проверено: catap ()
Ответ на: комментарий от firsttimeuser

причём полная. хочу виртуальную машину в браузер, так чтобы не важно было, какой использовать ЯП, чтобы не было подобных костылей.

Binary ★★★★★ ()

А классы там нормальные (как в плюсах, яве) имеются?

dismal_faun ★★ ()

Из текста новости вообще не понять, что это за зверь. Вот описание из блога:

When I started the Opa project five years ago, my goal was to clean up the mess and build a clean technology for writing web applications. At the time, Web 2.0 applications based on AJAX were increasingly popular and most technology stacks were growing in complexity, surpassing 5 technologies: A web server, a programming language for the server, another for the client, a database and at least one framework. Not counting an ORM layer, caching mechanism, etc., etc. There was room for improvement!

The design was based on two principles:

*There should be a single, unique language for writing web applications.

*There should be a single, clean, runtime on the servers.

Короче говоря, Ein Volk, ein Reich, ein Führer универсальный язык для web-приложений, пишем в одном месте код на opa, далее умный кодогенератор формирует клиентский код на JS и серверный код на JS.

Пример: вместо:

// Will be on server side:
function db_update(value) {
    /mydb/counter <- value
}

// Will be on client-side:
function dom_update(value) {
    #counter = value
}
можно написать так:
function update(value) {
    /mydb/counter <- value;
    #counter = value
}
и даже так:
// Just write _what_ you want to do, without worrying about _how_ to do that
function init() {
    #counter = /mydb/counter
}
Зачем - отдельный вопрос :) Ну и концепция «Just write _what_ you want to do, without worrying about _how_ to do that» для клиент-серверного взаимодействия откровенно смущает.

ollowtf ★★★ ()
Ответ на: комментарий от Binary

ты не один такой который считает что назрела острая необходимость включить _стандартную_ виртуальную машину в браузер, чтобы язык был любой, а не не-жаба-скрипт в который от безысходности перегоняют все прочие языки

I-Love-Microsoft ★★★★★ ()

Чё вы ржёте, der Opa по-немецки, например, «дедушка».

Virtuos86 ★★★★★ ()
Ответ на: комментарий от Virtuos86

Чё вы ржёте, der Opa по-немецки, например, «дедушка».

ты че тут самый умный? Мы в школе тоже шпрехензидойч учили.

firsttimeuser ★★★★★ ()
Ответ на: комментарий от ollowtf

пишем в одном месте код на opa, далее умный кодогенератор формирует клиентский код на JS и серверный код на JS

Удивительно, у проекта действительно подходящие название! Опа опой.

AntonK ()
Ответ на: комментарий от dismal_faun

А классы там нормальные (как в плюсах, яве) имеются?

Научитесь уже работать с прототипными языками программирования и не позорьтесь.

Wizard_ ★★★★★ ()
Ответ на: комментарий от firsttimeuser

Да ну? Да ты сейчас, наверное, решил блеснуть всем своим накопленным в школе немецким словарным багажом, получи в отместку индишулегеенвирундбекомменфюнфундфир. :Р

Virtuos86 ★★★★★ ()

срочно нужна интеграция проекта с zope

anonymous ()
Ответ на: комментарий от Wizard_

А покажи нормальный код на прототипах? Не, серьёзно: я кругом вижу, что каждый тащит свои инхериты, а чтобы использовали прототипы днём с огнём. Пытаюсь напрячь фантазию, чтобы придумать, как программировать на прототипах, но увы. Так вот, есть примеры хорошего кода на прототипах?

Binary ★★★★★ ()
Ответ на: комментарий от anonymous

Как например Clojure или Scala.

Оба языка всё-таки мультипарадигменными должны считататься, как я понимаю. К тому же, я не слышал об их использовании на клиентской стороне (в браузере).

Wizard_ ★★★★★ ()
Ответ на: комментарий от Wizard_

Научитесь уже работать с прототипными языками программирования

«Но зачем?» (c)

tailgunner ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

назрела острая необходимость включить _стандартную_ виртуальную машину в браузер

уже есть же, называется jvm

Karapuz ★★★★★ ()

возможно, в Роисси, такой фреймворк станет самым ПОПУлярным. Или наоборот

Karapuz ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

назрела острая необходимость включить _стандартную_ виртуальную машину в браузер

это что за такая виртуальная машина?

anonymous ()
Ответ на: комментарий от GblGbl

У них нет доступа к дом-дереву, не канает.

Binary ★★★★★ ()
Ответ на: комментарий от Karapuz

возможно, в Роисси, такой фреймворк станет самым ПОПУлярным.

Не соблоговолите ли вы, милый господин Карапуз, оставить Россию-матушку в покое? Да будет вам известно, к вашему сведению, чтоб вы знали, знайте, что чтобы дабы завоевать популярность, надо быть посредственностью.

anonymous ()

со строгой статической типизацией

Не нужно, это чистой воды деградация.

kranky ★★★★★ ()

почему называют это фрэймворком? этоже DSL! причем уже не первый в таком духе

wwwsevolod ()

очередной универсальный инструмент для всего. [имхо] как и все его собратья не нужен. для каждой части веб разработки нужно применять свой заточенный и проверенный инструмент а не лупить обухом топора - иначе жопа как раз и выйдет [/имхо]

punya ★★ ()

что только не придумают лишь бы на хаскеле не писать

proofit404 ()
Ответ на: комментарий от proofit404

что только не придумают лишь бы на хаскеле не писать

К сожалению, на хаскеле можно только писать. Компилировать и исполнять неписанное уже нереально.

AVL2 ★★★★★ ()
Ответ на: комментарий от Hertz

Девки вые^W^W зачем оно надо, если уже есть соль от гугла? Или оно загнулось уже?

TOXA ★★ ()

В опере их мануал лагает при прокрутке - в топку.

gh0stwizard ★★★★★ ()

Affero GPL?
То есть, придется отдавать не только код того, что уйдет клиенту, но еще и коды сервера?

Нужность вызывает сомнения.

proud_anon ★★★★★ ()
Ответ на: комментарий от Virtuos86

индишулегеенвирундбекомменфюнфундфир.

Не. Сознаюсь, такой считалочки мы не учили — я бы запомнил. Хотя в мои годы максимальная оценка в школе таки была еще пятерка. А шас уже не срифмуешь.

firsttimeuser ★★★★★ ()
Ответ на: комментарий от anonymous

вот потому, что вы говорите то что не думаете, и думаете то что не думаете вот в клетках и сидите и вообще весь этот горький катаклизм который я тут наблюдаю

Karapuz ★★★★★ ()
Ответ на: комментарий от proud_anon

не только код того, что уйдет клиенту, но еще и коды сервера?

кому отдавать и зачем отдавать?

Karapuz ★★★★★ ()
Ответ на: комментарий от Karapuz

кому отдавать и зачем отдавать?

«Сообществу», согласно AGPL.

proud_anon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.