Использование MPS для разработки веб приложений и не
только
Евгений Щепотьев
2
YouTrack
YouTrack – баг-трекинговая система полностью написанная на MPS
3
Workflow Editor
Workflow Editor – редактор workflow правил для YouTrack
4
Voices Demo Application
5
Фреймворк• Стек языков для разработки веб-приложений:
o HTML languageo JavaScript languageo CSS language
• Языки для доступа к базе данных:o Collections language
• DNQ (Data Navigation & Query)o Business Rules language
• Вспомогательные языки:o Component languageo Dependency Injection language (Spring language)o REST languageo Wiki languageo StateMachine languageo …
6
Web languages
XML
HTML
JavaScript
Java
CSS
7
Дополнительные языки
• Component language• Dependency Injection language (Spring language)• REST language• Wiki language• StateMachine language• I18N language• KeyStrokes language• Diagramming language• Selenium support language• …
8
StateMachine
9
Diagramming
11
DSL or not DSL• Строгая типизация• Кодогенерация• Смешивание языков• DSL on top of library• Поддержка IDE
12
Строгая типизация• MPS:
• Сгенерированный код:
13
Кодогенерация
JavaScript Java
14
Смесь языков
Ссылка на CSS класс
Ссылка на компонент
Ссылка на property
15
Библиотека
16
Поддержка IDE
18
Недостатки• Очень легко писать языки• Текстоподобный проекционный редактор• Требуется время на разработку языка
19
Паттерныbootstrapping
20
Паттерныперегрузка генераторов
21
Ссылки• YouTrack
o http://www.jetbrains.com/youtrack/
• MPSo http://www.jetbrains.com/mps/
• MPS Additional Languageso http://confluence.jetbrains.net/display/MPS/MPS+Languages+Repositor
y
• Webr-DNQo скоро