Tapestry
![]() |
|
| Тип | |
|---|---|
| Разработчик | |
| Написана на | |
| Операционная система | |
| Последняя версия |
5.3.6 (12 октября 2012) |
| Состояние |
Active |
| Лицензия | |
| Сайт |
http://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.5. Версия 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.
В 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 включает в себя RequireJS, и может динамически подгружать JS библиотеки и файлы.
Связанные проекты [править]
- 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 по умолчанию предусмотрена интеграция с
- Hibernate для поддержки ORM
- Spring для внедрения зависимостей, DI англ. Dependency Injection
- Spring Security (ранее Acegi) для обеспечения безопасности
- JBoss Seam для упрощения реализации бизнес логики
- prototype/scriptaculous — со стороны пользователя (англ. frontend) Tapestry использует связку из двух JavaScript фреймворков.
Примечания [править]
Литература [править]
- Igor Drobiazko Tapestry 5 - Rapid web application development in Java. — Сентябрь, 2012. — 396 p.
- Alexander Kolesnikov Tapestry 5: Building Web Applications: A step-by-step guide to Java Web development with the developer-friendly Apache Tapestry framework. — Packt Publishing, January 15, 2008. — 280 p. — ISBN 1847193072
- Howard M. Lewis Ship Tapestry in Action. — Manning, March 2004. — 580 p. — ISBN 1932394117
- Ka Iok Tong Enjoying Web Development with Tapestry. — 3rd. — January 1, 2007. — 497 p.
Ссылки [править]
- Tapestry Home Page (англ.)
- Tapestry 5 Home Page (англ.)
- Howard Lewis Ship (англ.)
- Enjoying Web Development with Tapestry book (англ.)
- Trails Framework (англ.)
- Tapestry — централизованная система управления (рус.)
| Веб-фреймворки | |
|---|---|
| ASP.NET | |
| ColdFusion |
ColdSpring • Fusebox • Mach-II • Model-Glue |
| Java |
Apache (Cocoon • Struts • Velocity • WebWork 2) • AppFuse • Aranea • Eclipse • Facelets • Flexive • FreeMarker • Google Web Toolkit • Grails • Hamlets • ItsNat • JavaServer Faces • Jspx • JBoss Seam • jZeno • Makumba • OpenLaszlo • OpenXava • Reasonable Server Faces (RSF) • Restlet • RichFaces • RIFE • Shale • SmartClient • Spring • Stripes • Tapestry • ThinWire • Vaadin • WebMacro • WebWork • WebObjects • Wicket • ZK |
| JavaScript |
node.js • AJILE • Clean AJAX • Dojo Toolkit • Echo • Ext JS • jQuery • jMaki • Microsoft AJAX Library • MochiKit • MooTools • Prototype • qooxdoo • Rialto Toolkit • Rico • script.aculo.us • SmartClient • Spry • SproutCore • Yahoo! UI Library • Underscore • PhoneGap |
| Perl |
Catalyst • Interchange • Titanium • Maypole • HTML:Mason • Mojolicious |
| PHP | |
| Python | |
| Ruby | |
| Прочие языки |
Alpha Five • Fusebox (ColdFusion • PHP) • Helma Object Publisher (Server-side) • Lift (Scala) • Magic (Scheme) • OpenACS (Tcl) • Seaside (Smalltalk) • UnCommon Web (Common Lisp) • Yaws (Erlang) • Oracle Application Express (PL/SQL) • Play |
