Tapestry

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Apache Tapestry
Apache Tapestry Logo1.png
Тип

Веб-фреймворк

Разработчик

Apache Software Foundation

Написана на

Java

Операционная система

Кроссплатформенное ПО

Последняя версия

5.3.7 (12 мая 2013)

Состояние

Active

Лицензия

Apache License 2.0

Сайт

tapestry.apache.org

Tapestry (англ. гобелен, тканое полотно) — объектно-ориентированный Java фреймворк для создания веб-приложений реализующих модель MVC. Tapestry был создан Howard Lewis Ship (рус. Говард Льюис Шип), и сегодня продолжает активно развиваться. Фреймворк является проектом верхнего уровня в организации Apache Software Foundation. Основной акцент в Tapestry сделан на продуктивность разработчика, лёгкость использования, невозможность программистами создания больших кусков «glue code». Tapestry использует модульный подход к веб-разработке, используя биндинг между компонентами (объектами) пользовательского интерфейса на веб-странице и соответствующими им java-классами. Эта компонентно-ориентированная архитектура почерпнула большое количество идей из WebObjects[1].

Tapestry 4[править | править исходный текст]

Текущим стабильным релизом Tapestry является версия 5.3.7. Версия 4 и более ранние довольно похожи, в то время как версия 5 содержит значительные изменения.

В Tapestry 4 веб-приложения разбиваются на страницы и компоненты. Страницы описывают уровень компонент, в то время как компоненты определяют функциональность. Этот подход разделяет цельное веб-приложение на легкоуправляемые фрагменты кода, которые управляют взаимодействием с пользователем, бизнес логикой и состоянием (en). Компоненты также делятся на базовые (core) и дополнительные (supplemental). Базовые компоненты являются основными «строительными кирпичами» приложения, такие как валидаторы форм, средства для построения интерфейса или объекты состояния. Дополнительные компоненты определяют, каким образом группа базовых компонент может взаимодействовать с другими базовыми компонентами в группе.

Шаблоны компонентов в Tapestry представляют собой XHTML файлы. Как правило, маппинг между java-классами и XHTML-объектами, которыми они управляют описывается в XML файле. Взаимодействие между backend'ом (java класс) и frontend'ом (XHTML объект) осуществляется с помощью OGNL. Разметка страницы производится иным образом, нежели в PHP, ASP, и JSP, в которых используются специальные теги для разделения переменных шаблона и кода.

Tapestry 5[править | править исходный текст]

Разработка пятой версии Tapestry началась вскоре после релиза версии 4. Разработчики поняли, что оригинальная архитектура, основанная на наследовании от базовых классов, затрудняет улучшение и развитие фреймворка с сохранением обратной совместимости в каждом релизе. Кроме того, она не позволяла решить большое количество проблем преследовавших разработчиков которые использовали данный фреймворк. Новый подход (и новая кодовая база) основывался на POJO, аннотациях и конвенции об именовании. Аннотации и конвенции об именовании практически полностью вытеснили файлы дескрипторов в формате XML предыдущих версий. Единственный XML файл требуемый проектом — web.xml. Кроме того, была устранена необходимость в перекомпилировании, архивировании, деплое и перезапуске сервлетов при каждом изменении в коде. Данная возможность получила название «живая перезагрузка классов» («live class reloading»). Все перечисленные возможности делают Tapestry 5 необычайно гибкой платформой для разработки веб-приложений.

Version 5 объединяет фреймворки Prototype и Scriptaculous Javascript со специфическими библиотеками Tapestry для поддержки технологии Ajax. Начиная с версии 5.4 Tapestry использует более современную библиотеку jQuery.

В Tapestry 5.1 была улучшена производительность и снижено потребление памяти, а также добавлены дополнительные фичи для улучшения производительности, такие как автоматическая компрессия трафика с помощью GZIP и агрегация JavaScript библиотек. Несмотря на большое количество нововведений и улучшений, Tapestry 5.1 полностью сохраняет обратную совместимость с Tapestry 5.

Tapestry 5.2 объединяет спецификацию JSR 303 (валидация данных) со своими внутренними механизмами проверки. Живая перезагрузка классов (Live class reloading) была усовершенствована, и теперь также поддерживает перезагрузку реализаций сервисов (под сервисом имеется в виду связка интерфейса и класса реализации).

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

Tapestry 5.4 находится в активной разработке и доступна только в виде исходного кода. Релиз несет серьезные изменения в работе с JavaScript. Tapestry 5.4 включает в себя RequireJS, асинхронный загрузчик JavaScript, на основе которого строится вся работа с JS файлами (модулями и библиотеками). Также новый релиз поддерживает автоматическую компиляцию LESS файлов. Обновлен пользовательский интерфейс — Tapestry использует Twitter Bootstrap UI фреймворк.

Связанные проекты[править | править исходный текст]

  • Tapestry 4 используется в фреймворке Trails Framework.
  • В Tapestry 5 по умолчанию доступна Blackbird консоль для отладки JavaScript[2]. Начиная с версии 5.3 консоль Blackbird убрана из фреймворка без замены[3].
  • Tapestry5-jQuery[4] — проект заменяет Prototype на jQuery и предлагает множество компонентов из jQuery UI[5]
  • Множество других компонентов и библиотек доступны на сайте фреймворка[6].
  • Поддержка IDE — для Tapestry 5 доступны плагины для Eclipse и IntelliJ IDEA.
  • Tapestry JumpStart — демонстрация возможностей фреймворка без использования дополнительных плагинов, и объяснение принципов его работы.[7]

Интеграция с другими фреймворками[править | править исходный текст]

В Tapestry 5 по умолчанию предусмотрена интеграция с

  • Twitter Bootstrap UI фреймворк. Доступен начиная с версии 5.4.
  • Require JS JS фреймворк асинхронной загрузки JS модулей. Доступен начиная с версии 5.4.
  • jQuery JS фреймворк. Доступен начиная с версии 5.4.
  • Spock фреймворк для модульного тестирования, написанный на Groovy. Базовый артефакт в maven repository: tapestry-spock.
  • Hibernate для поддержки ORM
  • Spring для внедрения зависимостей, DI англ. Dependency Injection
  • Spring Security (ранее Acegi) для обеспечения безопасности
  • JBoss Seam для упрощения реализации бизнес логики
  • prototype/scriptaculous — со стороны пользователя (англ. frontend) Tapestry использует связку из двух JavaScript фреймворков.

Примечания[править | править исходный текст]

Литература[править | править исходный текст]

Ссылки[править | править исходный текст]