Jump to content

Апачский гобелен

Апачский гобелен
Оригинальный автор(ы) Говард Льюис Шип
Разработчик(и) Фонд программного обеспечения Apache
Стабильная версия
5.8.4 [1]  Отредактируйте это в Викиданных / 06.02.2024; 5 месяцев назад
Репозиторий Хранилище гобеленов
Написано в Ява
Операционная система Кроссплатформенность ( виртуальная машина Java )
Тип Фреймворк веб-приложений
Лицензия Лицензия Апач 2.0
Веб-сайт гобелен .apache .org

Apache Tapestry — это программа с открытым исходным кодом. компонентно-ориентированная [ нужны разъяснения ] Java Фреймворк веб-приложений концептуально аналогичен JavaServer Faces и Apache Wicket . [2] Гобелен был создан Говардом Льюисом Шипом. [ когда? ] и был принят Apache Software Foundation как проект высшего уровня в 2006 году. [3]

Tapestry подчеркивает простоту, удобство использования и продуктивность разработчиков. Он придерживается парадигмы «Конвенция по конфигурации» , исключая почти всю конфигурацию XML . [4] Tapestry использует модульный подход к веб-разработке, обеспечивая строгую привязку между каждым компонентом пользовательского интерфейса (объектом) на веб-странице и соответствующим ему классом Java . Эта компонентная архитектура заимствует многие идеи из WebObjects . [5]

Примечательные особенности

[ редактировать ]
Перезагрузка живого класса
Tapestry отслеживает файловую систему на предмет изменений в классах страниц Java, классах компонентов, классах реализации сервисов, шаблонах HTML и файлах свойств компонентов, а также оперативно заменяет изменения в работающем приложении без необходимости перезапуска. Это обеспечивает очень короткий цикл обратной связи «сохранение-просмотр кода», который, как утверждается, значительно повышает производительность разработчиков. [6]
Компонентный
Страницы могут быть созданы с помощью небольших вложенных компонентов, каждый из которых имеет шаблон и класс компонента. Создавать пользовательские компоненты тривиально. [7]
Соглашение важнее конфигурации
Tapestry использует соглашения об именах и аннотации, а не XML, для настройки приложения. [8]
Экономное использование HTTPSession
Благодаря минимальному использованию HTTPSession, Tapestry обеспечивает высокую эффективность в кластерной среде с репликацией сеансов. [9]
Опубликовать/Перенаправить/Получить
Большинство отправок форм следуют шаблону Post/Redirect/Get (PRG), который уменьшает количество ошибок при отправке форм и делает URL-адреса более удобными и доступными для закладок, а также позволяет кнопкам браузера «Назад» и «Обновить» работать нормально. [10]
Инверсия управления (IoC)
Tapestry построен на легком слое Inversion of Control , похожем на Google Guice , но предназначен для того, чтобы сделать почти все аспекты поведения Tapestry настраиваемыми и заменяемыми. [8]

Привет, мир, пример

[ редактировать ]

Минимальному шаблонному приложению Tapestry требуется всего три файла:

HelloWorld.tml
Шаблон (X)HTML для страницы /helloworld. Шаблоны Tapestry могут содержать любую корректную (X)HTML-разметку.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd">
<body>
    <p>Hello, ${username}</p>
</body>
</html>
HelloWorld.java
Класс страницы, связанный с шаблоном. Здесь он просто предоставляет свойство *username*, к которому может получить доступ шаблон.
package org.example.demo.pages;

/** A page class (automatically associated with the template file of the same name) */
public class HelloWorld {

    /** An ordinary getter */
    public String getUsername() {
        return "World";
    }
}
веб.xml
Дескриптор сервлета приложения- развертывания , который устанавливает Tapestry в качестве фильтра сервлетов.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <display-name>Tapestry Example</display-name>
    <context-param>
        <!-- Tell Tapestry 5 where to look for pages, components and mixins -->
        <param-name>tapestry.app-package</param-name>
        <param-value>org.example.demo</param-value>
    </context-param>
    <filter>
        <!-- Define the Tapestry servlet filter -->
        <filter-name>app</filter-name>
        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
    </filter>
    <filter-mapping>
        <!-- Tell the servlet container which requests to send to the Tapestry servlet filter -->
        <filter-name>app</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

Трансформация класса

[ редактировать ]

Tapestry использует манипуляции с байт-кодом для преобразования классов страниц и компонентов во время выполнения. Этот подход позволяет писать классы страниц и компонентов как простые POJO с некоторыми соглашениями об именах и аннотациями, которые потенциально могут вызвать существенное дополнительное поведение во время загрузки класса. В версиях Tapestry 5.0, 5.1 и 5.2 использовалась библиотека манипуляции байт-кодом Javassist. Последующие версии заменили Javassist новым слоем манипулирования байт-кодом под названием Plastic , основанным на ObjectWeb ASM . [11] [12]

Поддержка на стороне клиента

[ редактировать ]

Версии Tapestry 5 и выше 5.3 включали в себя JavaScript-фреймворки Prototype и script.aculo.us , а также специальную библиотеку Tapestry, чтобы поддерживать операции Ajax в качестве первоклассных граждан. Доступны сторонние модули для интеграции jQuery вместо или в дополнение к Prototype/Scriptaculous.

Начиная с версии 5.4, Tapestry включает новый уровень JavaScript, который устраняет зависимость встроенных компонентов от Prototype, позволяя подключать jQuery или другую среду JavaScript. [13]

В версии 5.4 также представлена ​​поддержка модулей JavaScript с использованием системы загрузки модулей RequireJS.

Основные принципы

[ редактировать ]

В документации проекта Tapestry указаны четыре «принципа», которые определяют все решения по разработке Tapestry, начиная с версии 5 в 2008 году: [14]

  • Статическая структура, динамическое поведение — структура страниц и компонентов по существу статична, что устраняет необходимость создания (и хранения в памяти сеанса) больших деревьев страниц и компонентов.
  • Адаптивный API — платформа предназначена для адаптации к коду, а не для адаптации кода к платформе.
  • Различайте общедоступные и внутренние API — все API явно являются «внутренними» (частными), за исключением тех, которые обязательно являются общедоступными.
  • Обеспечьте обратную совместимость. Сообщается, что разработчики Tapestry стремятся сделать так, чтобы обновление до последней версии Tapestry всегда было простым.

Tapestry подвергался критике за отсутствие обратной совместимости между основными версиями, особенно это было отмечено при переходе от версии 4 к версии 5, когда для существующих приложений не было чистого пути миграции. [15] Члены команды проекта признали это серьезной проблемой для пользователей Tapestry в прошлом, и обратная совместимость стала основной целью дизайна Tapestry в будущем. С самого начала разработки версии 5 обратная совместимость была указана как один из четырех новых «основных принципов» Tapestry, а два из трех других были предназначены для того, чтобы сделать возможным развитие платформы без ущерба для обратной совместимости. Члены команды проекта утверждают, что все выпуски Tapestry, начиная с 5.0, обладают высокой обратной совместимостью.

Ранняя критика Tapestry 5 также упоминала документацию как недостаток. Участники проекта теперь утверждают, что этот недостаток в значительной степени устранен с помощью тщательно переработанного и обновленного Руководства пользователя и другой документации.

Начиная с версии 5.0, Tapestry объединяет библиотеки JavaScript Prototype и Scriptaculous. По мнению Говарда Льюиса Шипа, в период 2008-2009 годов это был разумный выбор. Однако с тех пор популярность Prototype снизилась, а популярность jQuery резко возросла. В ответ сообщество Tapestry разработало модули, позволяющие использовать jQuery в дополнение к Prototype или вместо него. Между тем, текущая версия Tapestry, 5.4, полностью устраняет зависимость от Prototype, заменяя ее уровнем совместимости, к которому можно подключить jQuery или Prototype (или, возможно, любую другую среду JavaScript).

Связь с другими фреймворками

[ редактировать ]

По словам Говарда Льюиса Шипа, Tapestry изначально задумывался как попытка реализовать на Java некоторые общие концепции и подходы, найденные в WebObjects, который в то время был написан на Objective-C и имел закрытый исходный код. [16]

По словам создателя Wicket Джонатана Локка, Apache Wicket был разработан как ответ на сложность ранних версий Tapestry. [17]

Facelets , технология просмотра по умолчанию в JavaServer Faces , как сообщается, была вдохновлена ​​ранними версиями Tapestry как попытка удовлетворить потребность в «фреймворке, подобном Tapestry, поддерживаемом JavaServer Faces в качестве отраслевого стандарта». [18] [19]

Версия Дата Описание
Старая версия, больше не поддерживается: 1.0. 2000 Разработано Howard Lewis Ship для внутреннего использования.
Старая версия, больше не поддерживается: 2.0. 2002-04 Впервые доступен на SourceForge под лицензией GNU Lesser General Public License . [20]
Старая версия, больше не поддерживается: 3.0. 2004-04 Первый выпуск под Apache в рамках подпроекта Джакарты. [21]
Старая версия, больше не поддерживается: 4.0. 2006-01 Введена поддержка аннотаций JDK 1.5, новая подсистема проверки ввода и улучшены отчеты об ошибках. [22]
Старая версия, но все еще поддерживается: 5.0. 2008-12 Почти полная переработка Tapestry 4, в которой представлена ​​новая модель компонентов на основе POJO, в которой упор делается на соглашение, а не на конфигурацию, и заменен Hivemind новым слоем инверсии управления без XML.
Старая версия, но все еще поддерживается: 5.1. 2009-04 Улучшения производительности и памяти, автоматическое сжатие GZIP, агрегация JavaScript, но осталась обратная совместимость с Tapestry 5.0.
Старая версия, но все еще поддерживается: 5.2. 2010-12 Добавлена ​​проверка компонента JSR 303 . [23] Расширенная перезагрузка живых классов в реализации сервисов. Удален пул страниц. [24]
Старая версия, но все еще поддерживается: 5.3. 2011-11 Добавлена ​​поддержка типов документов HTML5, аннотаций JSR-330 для внедрения. [25] улучшения производительности и памяти, новые компоненты, переход с JavaAssist на манипуляции с байт-кодом ASM.
Старая версия, но все еще поддерживается: 5.3.1 – 5.3.8. 2012-2014 Исправлены ошибки и незначительные улучшения
Текущая стабильная версия: 5.4-5.4.5. 2015-2019 Основные улучшения на стороне клиента. Новый уровень JavaScript для переключаемой поддержки jQuery/Prototype использует Require.js в качестве системы модулей JavaScript и Twitter Bootstrap в качестве стиля по умолчанию. [26]
Текущая стабильная версия: 5.5. 2020-03 Текущая стабильная версия. Поддержка байт-кода Java 12, Typescript и Bootstrap 4.

См. также

[ редактировать ]
  • Дробязко, Игорь (2012), Гобелен 5: Быстрая разработка веб-приложений на Java , Игорь Дробязко, с. 482, заархивировано из оригинала 15 декабря 2014 г. , получено 20 января 2013 г.
  • Колесников, Александр (15 января 2008 г.), Tapestry 5: Создание веб-приложений: пошаговое руководство по веб-разработке на Java с помощью удобной для разработчиков инфраструктуры Apache Tapestry , Packt Publishing , стр. 280, ISBN  978-1-84719-307-0
  • Иок Тонг, Ка (1 января 2007 г.), Наслаждайтесь веб-разработкой с помощью Tapestry (3-е изд.), стр. 497, АСИН   B00262M3HS
  • Льюис Шип, Ховард (2004), Гобелен в действии , Мэннинг , с. 580, ISBN  1932394117

Примечания

[ редактировать ]
  1. ^ "Скачать" .
  2. ^ «Интервью Говарда Льюиса «Корабль гобеленов» [часть 1] (22 октября 2012 г.)» . Архивировано из оригинала 22 января 2013 г. Проверено 28 января 2013 г.
  3. ^ Дробязко 2012, стр. 1.
  4. ^ «Tapestry Central: Обновления Tapestry 5» . 24 июля 2006 г.
  5. ^ Гобелен в действии - Предисловие Говарда Льюиса Шипа
  6. ^ «Перезагрузка классов — гобелен Apache» .
  7. ^ Дробязко 2012, с.
  8. ^ Jump up to: а б Дробязко 2012, с.7.
  9. ^ «Производительность и кластеризация — гобелен Apache» .
  10. ^ «Формы и проверка — гобелен Apache» .
  11. ^ «Знакомство с Plastic I: Введение | Магия Java» . 18 апреля 2011 г.
  12. ^ «[asm] Plastic: ASM-обертка для Tapestry 5.3» . Архивировано из оригинала 18 июня 2013 г. Проверено 21 февраля 2013 г.
  13. ^ «Tapestry Central: внимание к Tapestry 5.4» . 19 октября 2012 г.
  14. ^ «Принципы» . 21 декабря 2010 г. Архивировано из оригинала 12 октября 2012 года . Проверено 12 октября 2012 г.
  15. ^ «Будущая совместимость Tapestry5 [ так в оригинале . 30 апреля 2009 г. Архивировано из оригинала 21 января 2013 г. Проверено 21 января 2013 г.
  16. ^ «DevRates | Интервью Говарда Льюиса «Корабль гобеленов» [часть 1]» . Архивировано из оригинала 22 января 2013 г. Проверено 28 января 2013 г.
  17. ^ «Уикет: Нужна ли нам еще одна структура уровня представления?» . www.theserverside.com . Архивировано из оригинала 9 сентября 2004 года . Проверено 11 января 2022 г.
  18. ^ «Фейсеты: Фасеты JavaServer» . facelets.dev.java.net . Архивировано из оригинала 6 июля 2007 года . Проверено 11 января 2022 г.
  19. ^ «JSF Central — Внутренние Facelets, часть 1: Введение» . www.jsfcentral.com . Архивировано из оригинала 13 января 2013 года . Проверено 11 января 2022 г.
  20. ^ «Гобелен: вышла версия 2.0 веб-компонентов Java» . Проверено 20 января 2013 г.
  21. ^ «Финальный выпуск Tapestry 3.0» . Проверено 20 января 2013 г.
  22. ^ «Выпущен Гобелен 4.0» . Проверено 20 января 2013 г.
  23. ^ «Tapestry и API проверки компонентов JSR-303» . 04.01.2010. Архивировано из оригинала 16 апреля 2010 года . Проверено 13 марта 2010 г.
  24. ^ «Анонс Гобелена 5.2» . 17 декабря 2010 г. Архивировано из оригинала 14 ноября 2012 года . Проверено 14 ноября 2012 г.
  25. ^ «Использование стандартных аннотаций JSR 330 — Apache Tapestry» .
  26. ^ «Переписывание JavaScript» . Архивировано из оригинала 14 ноября 2012 г. Проверено 20 января 2013 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 81f8aa4625d05142d9d2f3734b0866ab__1712016240
URL1:https://arc.ask3.ru/arc/aa/81/ab/81f8aa4625d05142d9d2f3734b0866ab.html
Заголовок, (Title) документа по адресу, URL1:
Apache Tapestry - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)