Tapestry

Поделись знанием:
Перейти к: навигация, поиск
Apache Tapestry
Тип

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

Разработчик

Apache Software Foundation

Написана на

Java

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

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

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

5.4.1 (20 марта 2016)

Состояние

Active

Лицензия

Apache License 2.0

Сайт

[tapestry.apache.org y.apache.org]

К:Википедия:Статьи без изображений (тип: не указан)

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





Tapestry 4

Текущим стабильным релизом Tapestry является версия 5.3.8. Версия 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 используется во фреймворке [www.trailsframework.org/ 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
  • [github.com/code8/tapestry-boot Spring-Boot] для запуска внутри embedded-контейнера и поддержки двусторонней связи между tapestry и spring сервисами
  • Spring Security (ранее Acegi) для обеспечения безопасности
  • JBoss Seam для упрощения реализации бизнес логики
  • prototype/scriptaculous — со стороны пользователя (англ. frontend) Tapestry использует связку из двух JavaScript фреймворков.

Напишите отзыв о статье "Tapestry"

Примечания

  1. [www.manning.com/lewisship/excerpt_preface.html Tapestry in Action — Preface] by Howard Lewis Ship
  2. [tapestry.apache.org/tapestry5.1/guide/ajax.html Apache Tapestry — Tapestry Ajax Support]
  3. [tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/SymbolConstants.html#BLACKBIRD_ENABLED SymbolConstants (Tapestry API Documentation)]
  4. [tapestry5-jquery.com/ Tapestry5-jQuery]
  5. [jqueryui.com/ jQuery UI — Home]
  6. [tapestry.apache.org/community.html Community — Apache Tapestry]
  7. [jumpstart.doublenegative.com.au/jumpstart JumpStart Home]

Литература

  • Igor Drobiazko. [www.indiegogo.com/tapestry5book?c=home Tapestry 5 - Rapid web application development in Java]. — Сентябрь, 2012. — 396 p.
  • Alexander Kolesnikov. [www.packtpub.com/tapestry-5/book 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. [www.manning.com/lewisship/index.html 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.apache.org/ Tapestry Home Page]  (англ.)
  • [tapestry.apache.org/tapestry5/ Tapestry 5 Home Page]  (англ.)
  • [howardlewisship.com/ Howard Lewis Ship]  (англ.)
  • [www.agileskills2.org/EWDT/ Enjoying Web Development with Tapestry] book  (англ.)
  • [www.trailsframework.org/ Trails Framework]  (англ.)
  • [www.javable.com/javaworld/06_01/02/ Tapestry — централизованная система управления]  (рус.)
  • [github.com/code8/tapestry-boot Tapestry-Boot - интеграция со spring-boot]

Отрывок, характеризующий Tapestry

«7 го декабря.
«Видел сон, будто Иосиф Алексеевич в моем доме сидит, я рад очень, и желаю угостить его. Будто я с посторонними неумолчно болтаю и вдруг вспомнил, что это ему не может нравиться, и желаю к нему приблизиться и его обнять. Но только что приблизился, вижу, что лицо его преобразилось, стало молодое, и он мне тихо что то говорит из ученья Ордена, так тихо, что я не могу расслышать. Потом, будто, вышли мы все из комнаты, и что то тут случилось мудреное. Мы сидели или лежали на полу. Он мне что то говорил. А мне будто захотелось показать ему свою чувствительность и я, не вслушиваясь в его речи, стал себе воображать состояние своего внутреннего человека и осенившую меня милость Божию. И появились у меня слезы на глазах, и я был доволен, что он это приметил. Но он взглянул на меня с досадой и вскочил, пресекши свой разговор. Я обробел и спросил, не ко мне ли сказанное относилось; но он ничего не отвечал, показал мне ласковый вид, и после вдруг очутились мы в спальне моей, где стоит двойная кровать. Он лег на нее на край, и я будто пылал к нему желанием ласкаться и прилечь тут же. И он будто у меня спрашивает: „Скажите по правде, какое вы имеете главное пристрастие? Узнали ли вы его? Я думаю, что вы уже его узнали“. Я, смутившись сим вопросом, отвечал, что лень мое главное пристрастие. Он недоверчиво покачал головой. И я ему, еще более смутившись, отвечал, что я, хотя и живу с женою, по его совету, но не как муж жены своей. На это он возразил, что не должно жену лишать своей ласки, дал чувствовать, что в этом была моя обязанность. Но я отвечал, что я стыжусь этого, и вдруг всё скрылось. И я проснулся, и нашел в мыслях своих текст Св. Писания: Живот бе свет человеком, и свет во тме светит и тма его не объят . Лицо у Иосифа Алексеевича было моложавое и светлое. В этот день получил письмо от благодетеля, в котором он пишет об обязанностях супружества».
«9 го декабря.
«Видел сон, от которого проснулся с трепещущимся сердцем. Видел, будто я в Москве, в своем доме, в большой диванной, и из гостиной выходит Иосиф Алексеевич. Будто я тотчас узнал, что с ним уже совершился процесс возрождения, и бросился ему на встречу. Я будто его целую, и руки его, а он говорит: „Приметил ли ты, что у меня лицо другое?“ Я посмотрел на него, продолжая держать его в своих объятиях, и будто вижу, что лицо его молодое, но волос на голове нет, и черты совершенно другие. И будто я ему говорю: „Я бы вас узнал, ежели бы случайно с вами встретился“, и думаю между тем: „Правду ли я сказал?“ И вдруг вижу, что он лежит как труп мертвый; потом понемногу пришел в себя и вошел со мной в большой кабинет, держа большую книгу, писанную, в александрийский лист. И будто я говорю: „это я написал“. И он ответил мне наклонением головы. Я открыл книгу, и в книге этой на всех страницах прекрасно нарисовано. И я будто знаю, что эти картины представляют любовные похождения души с ее возлюбленным. И на страницах будто я вижу прекрасное изображение девицы в прозрачной одежде и с прозрачным телом, возлетающей к облакам. И будто я знаю, что эта девица есть ничто иное, как изображение Песни песней. И будто я, глядя на эти рисунки, чувствую, что я делаю дурно, и не могу оторваться от них. Господи, помоги мне! Боже мой, если это оставление Тобою меня есть действие Твое, то да будет воля Твоя; но ежели же я сам причинил сие, то научи меня, что мне делать. Я погибну от своей развратности, буде Ты меня вовсе оставишь».


Денежные дела Ростовых не поправились в продолжение двух лет, которые они пробыли в деревне.
Несмотря на то, что Николай Ростов, твердо держась своего намерения, продолжал темно служить в глухом полку, расходуя сравнительно мало денег, ход жизни в Отрадном был таков, и в особенности Митенька так вел дела, что долги неудержимо росли с каждым годом. Единственная помощь, которая очевидно представлялась старому графу, это была служба, и он приехал в Петербург искать места; искать места и вместе с тем, как он говорил, в последний раз потешить девчат.
Вскоре после приезда Ростовых в Петербург, Берг сделал предложение Вере, и предложение его было принято.
Несмотря на то, что в Москве Ростовы принадлежали к высшему обществу, сами того не зная и не думая о том, к какому они принадлежали обществу, в Петербурге общество их было смешанное и неопределенное. В Петербурге они были провинциалы, до которых не спускались те самые люди, которых, не спрашивая их к какому они принадлежат обществу, в Москве кормили Ростовы.
Ростовы в Петербурге жили так же гостеприимно, как и в Москве, и на их ужинах сходились самые разнообразные лица: соседи по Отрадному, старые небогатые помещики с дочерьми и фрейлина Перонская, Пьер Безухов и сын уездного почтмейстера, служивший в Петербурге. Из мужчин домашними людьми в доме Ростовых в Петербурге очень скоро сделались Борис, Пьер, которого, встретив на улице, затащил к себе старый граф, и Берг, который целые дни проводил у Ростовых и оказывал старшей графине Вере такое внимание, которое может оказывать молодой человек, намеревающийся сделать предложение.
Берг недаром показывал всем свою раненую в Аустерлицком сражении правую руку и держал совершенно не нужную шпагу в левой. Он так упорно и с такою значительностью рассказывал всем это событие, что все поверили в целесообразность и достоинство этого поступка, и Берг получил за Аустерлиц две награды.
В Финляндской войне ему удалось также отличиться. Он поднял осколок гранаты, которым был убит адъютант подле главнокомандующего и поднес начальнику этот осколок. Так же как и после Аустерлица, он так долго и упорно рассказывал всем про это событие, что все поверили тоже, что надо было это сделать, и за Финляндскую войну Берг получил две награды. В 19 м году он был капитан гвардии с орденами и занимал в Петербурге какие то особенные выгодные места.
Хотя некоторые вольнодумцы и улыбались, когда им говорили про достоинства Берга, нельзя было не согласиться, что Берг был исправный, храбрый офицер, на отличном счету у начальства, и нравственный молодой человек с блестящей карьерой впереди и даже прочным положением в обществе.
Четыре года тому назад, встретившись в партере московского театра с товарищем немцем, Берг указал ему на Веру Ростову и по немецки сказал: «Das soll mein Weib werden», [Она должна быть моей женой,] и с той минуты решил жениться на ней. Теперь, в Петербурге, сообразив положение Ростовых и свое, он решил, что пришло время, и сделал предложение.
Предложение Берга было принято сначала с нелестным для него недоумением. Сначала представилось странно, что сын темного, лифляндского дворянина делает предложение графине Ростовой; но главное свойство характера Берга состояло в таком наивном и добродушном эгоизме, что невольно Ростовы подумали, что это будет хорошо, ежели он сам так твердо убежден, что это хорошо и даже очень хорошо. Притом же дела Ростовых были очень расстроены, чего не мог не знать жених, а главное, Вере было 24 года, она выезжала везде, и, несмотря на то, что она несомненно была хороша и рассудительна, до сих пор никто никогда ей не сделал предложения. Согласие было дано.
– Вот видите ли, – говорил Берг своему товарищу, которого он называл другом только потому, что он знал, что у всех людей бывают друзья. – Вот видите ли, я всё это сообразил, и я бы не женился, ежели бы не обдумал всего, и это почему нибудь было бы неудобно. А теперь напротив, папенька и маменька мои теперь обеспечены, я им устроил эту аренду в Остзейском крае, а мне прожить можно в Петербурге при моем жалованьи, при ее состоянии и при моей аккуратности. Прожить можно хорошо. Я не из за денег женюсь, я считаю это неблагородно, но надо, чтоб жена принесла свое, а муж свое. У меня служба – у нее связи и маленькие средства. Это в наше время что нибудь такое значит, не так ли? А главное она прекрасная, почтенная девушка и любит меня…
Берг покраснел и улыбнулся.
– И я люблю ее, потому что у нее характер рассудительный – очень хороший. Вот другая ее сестра – одной фамилии, а совсем другое, и неприятный характер, и ума нет того, и эдакое, знаете?… Неприятно… А моя невеста… Вот будете приходить к нам… – продолжал Берг, он хотел сказать обедать, но раздумал и сказал: «чай пить», и, проткнув его быстро языком, выпустил круглое, маленькое колечко табачного дыма, олицетворявшее вполне его мечты о счастьи.