Apache Tapestry

редактировать
Apache Tapestry
Логотип Apache Tapestry
Автор (ы) Говард Льюис Шип
Разработчик (и) Apache Software Foundation
Стабильная версия 5.5.0 / 20 марта 2020 г.; 7 месяцев назад (2020-03-20)
Репозиторий Репозиторий гобеленов
Написано наJava
Операционная система Кросс-платформенная (Виртуальная машина Java )
Тип Структура веб-приложения
Лицензия Лицензия Apache 2.0
Веб-сайтгобелен.apache.org

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

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

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

Минимальному шаблонному приложению Tapestry требуется только t hree файлы:

HelloWorld.tml
HTML-шаблон (X) для страницы / helloworld. Шаблоны гобеленов могут содержать любую правильно сформированную (X) разметку HTML.

Здравствуйте, $ {username}

HelloWorld.java
Класс страницы, связанный с шаблоном. Здесь он просто предоставляет свойство * username *, к которому шаблон может получить доступ.
package org.example.demo.pages; / ** Класс страницы (автоматически связанный с одноименным файлом шаблона) * / public class HelloWorld {/ ** Обычный метод получения * / public String getUsername () {return "World"; }}
web.xml
сервлет приложение Дескриптор развертывания, который устанавливает Tapestry в качестве фильтра сервлета.
Tapestry Exampleгобелен. app-packageorg.example.demoapporg.apache.tapestry5.TapestryFilterapp/*
Преобразование класса

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

клиентской поддержке

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

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

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

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

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

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

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

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

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

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

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

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

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

История
ВерсияДатаОписание
Старая версия, больше не поддерживается: 1.02000Разработано Howard Lewis Ship для внутреннего использования
Старая версия, больше не поддерживается: 2.02002-04Впервые стала доступна на SourceForge в рамках GNU Lesser Широкая публика Лицензия.
Старая версия, больше не поддерживается: 3.02004-04Первый выпуск под Apache, как подпроект Джакарты.
Старая версия, больше не поддерживается: 4.02006-01Добавлена ​​поддержка аннотаций JDK 1.5, новая подсистема проверки ввода и улучшенная система отчетов об ошибках
Старая версия, но все еще поддерживается: 5.02008-12Практически полностью переделанный из Tapestry 4, представляющий новую компонентную модель на основе POJO, подчеркивающую конвенцию над конфигурацией, и заменяющий Hivemind новым слоем управления без XML-инверсии.
Более старая версия, но все еще поддерживается: 5.12009-04Улучшения производительности и памяти, автоматическое сжатие GZIP, агрегация JavaScript, но оставалась обратно совместимой с Tapestry 5.0.
Более старая версия, но все еще поддерживается: 5.22010-12Добавлен JSR 303 Bean Validation. Расширенная перезагрузка живого класса для реализации служб. Удален пул страниц.
Старая версия, но все еще поддерживается: 5.32011-11Добавлена ​​поддержка типа документа HTML5, аннотации JSR-330 для внедрения, улучшения производительности и памяти, новые компоненты, переключился с JavaAssist на управление байт-кодом ASM
Более старая версия, но все еще поддерживается: 5.3.1 - 5.3.82012-2014Исправлены ошибки и незначительные улучшения
Текущая стабильная версия: 5.4-5.4.52015-2019Основные улучшения на стороне клиента. Новый уровень JavaScript для переключаемой поддержки jQuery / Prototype, использует Require.js для своей модульной системы JavaScript, Twitter Bootstrap для стиля по умолчанию.
Текущая стабильная версия: 5.52020-03Текущая стабильная версия. Поддержка байт-кода Java 12, Typescript и Bootstrap 4.
См. Также
Ссылки

Примечания

Внешние ссылки
Последняя правка сделана 2021-06-11 20:11:10
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте