Страница проекта: http://leaningtech.com/cheerp/

Разрабатывать веб-приложения можно и на С++. Для этого код на С++ нужно скомпилировать компилятором Cheerp. В результате на выходе будет получен код на "чистом" JavaScript. На первый взгляд, это может показаться безумной идеей. Однако, у такого подхода есть несколько преимуществ перед написанием кода непосредственно на JavaScript-е.

1. Представьте, что Вам нужно разработать клиентский код для веб-приложения. А Ваша основная специализация - это С++, и тонкости программирования на JavaScript Вам совершенно не интересны. Вы признаёте только статическую типизацию, имеете опыт использования большого количества библиотек на С++, и вообще отлично знаете именно С++. Тогда Cheerp поможет использовать весь Ваш опыт, и не прибегать к непосредственному программированию на JavaScript. JavaScript код компилятор Cheerp "напишет" сам, за Вас. И этот код будет работать в любом браузере, на любой платформе. Cheerp позаботится и об оптимизации итогового кода.

2. Вам нужно разработать также и серверный код для веб-приложения. И он должен взаимодействовать с клиентским кодом. Не проблема! Пишите всё на С++. Можете даже разместить клиентский код и код сервера в одном модуле. Но забудьте о сериализации и десериализации данных, забудьте про реализацию RPC. Cheerp всё сделает автоматически за Вас! Это выглядит примерно так:

Пишите и клиенстский, и сервервный код в одном месте на одном языке - С++. Кстати, Cheerp полностью совместим с С++11.

3. Есть необходимость предоставить коду на JavaScript доступ к С++ классам? Без проблем. Создавайте объекты, вызывайте методы прямо из JavaScript. (На самом деле никакого С++ кода на клиенте не будет - это просто "прозрачный" экспорт).


Кстати, Cheerp не единственный проект в своём роде. Есть и другие, например, Emscripten. И если Вы по-прежнему скептически настроены к затеи писать код на С++, и компилировать его в JavaScript, то вот Вам неплохой результат такого труда: целая "куча" игр, которые можно запускать прямо в браузере. Лично мы выбрали Quake 3 :) WebGL must have!