Apache Tapestry

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:43, 2 июня 2019.
Apache Tapestry
Apache Tapestry Logo1.png
Разработчики: Apache Software Foundation
Выпущена: 2000 г.
Постоянный выпуск: 5.4.4 (18 декабря 2018)
Предыдущий выпуск: 5.4.3 (24 апреля 2017)
Состояние разработки: Активное
Операционная система: Кросплатформенное ПО
Лицензия: Apache License 2.0
Веб-сайт http://tapestry.apache.org

Apache Tapestry— это фреймворк, то есть некий шаблон, с открытым кодом, предназначенный для создания веб-приложений в Java, а также Groovy и Scala (язык программирования). Tapestry является проектом верхнего уровня в организации ASF (Apache Software Foundation) и построен на стандартной Java API Servlet.[Источник 1]

Особенности

Основной особенностью Tapestry является легкость его использования. Процесс создания приложений с использованием Tapestry, максимально соответствует концепции RAD. Tapestry делит веб-приложение на ряд страниц, каждая из которых состоит из компонентов. Таким образом, процесс разработки приложений становится более структурированным и легким. Кроме того, Tapestry самостоятельно выполняет такие функции, как создание URL-адресов, постоянное хранение состояния приложения, проверка введенных пользователем данных и т.д . Важно отметить, что высокая скорость разработки веб-приложений с помощью Tapestry не вредит её безопасности и стабильности.

Tapestry создан для разработки любых приложений, начиная от самых маленьких и заканчивая огромными приложениями с тысячами страниц, над которыми работают целые команды разработчиков.

Еще одной немаловажной особенностью Tapestry является функция перегрузки классов в режиме реального времени. Так при изменении кода и последующей перезагрузке браузера изменения будут видны мгновенно, а потеря данных сеанса не произойдет. Это обеспечивает очень короткий цикл сохранения и просмотра кода.

Кроме того, фреймворк предоставляет вам все инструменты, необходимые для решения вашей проблемы, например, подробную информацию о том, что делал Tapestry и почему, что пошло не так и как это исправить.

История

Версия 1.0

Была создана в 2000 году разработчиком Говардом Льюисом Шипом для собственного использования.

Версия 2.0

Стала доступна на одном из самых больших в мире сайтов для разработчиков программного обеспечения SourceForge.net в 2002 году. Каркас Tapestry стал выполнять практически всю тяжелую работу по созданию веб-приложений, такую как создание всех URL-адресов, их интерпретацию и отправку кода пользователю.[Источник 2]


Версия 3.0

Релиз этой версии произошел в 2004 году в рамках проекта Apache Jakarta. Было добавлено множество новых функций, направленных на производительность труда разработчиков, а также была улучшена и расширена документация, были улучшены существующие компоненты и функциональные возможности инфраструктуры.[Источник 3]

Версия 4.0

Она была выпущена в 2006 году и представляла собой значительный шаг вперед по сравнению с Tapestry 3.0. Так например, строка с точным отчетом об ошибках стала отображать содержимое файлов, содержащих ошибки, кроме того, была добавлена ​​полная встроенная поддержка разработки портлетов JSR-168, а также синтаксис, используемый для привязки параметров внутри шаблона HTML (HyperText Markup Language) и внутри спецификации XML (eXtensible Markup Language), стал согласован, и многое другое.[Источник 4]

Версия 5.0

Разработка пятой версии началась почти сразу после релиза четвертой версии. Разработчики поняли, что оригинальная архитектура, основанная на наследовании от базовых классов, затрудняет развитие и улучшение фреймворка. К 2008 году был почти полностью переписан Tapestry 4, в 5-ой версии была внедрена новая, основанная на POJO, компонентная модель, подчеркивающая соглашения по конфигурации, был заменен Hivemind с новой не XML инверсией слоя управления. Кроме того, была устранена необходимость перекомпилирования, архивирования и перезапуска сервлетов при каждом изменении в коде. Эта возможность получила название "Live class reloading", то есть "живая перезагрузка классов".[Источник 5]

Версия 5.1

Версия была разработана в 2009 году. Произошло большое количество изменений: были улучшены производительность и память, были исправлены многие ошибки, и добавлены новые функции, такие как автоматическое сжатие трафика с помощью gzip и агрегация JavaScript библиотек. Но несмотря на все эти изменения, у версии 5.1 полностью сохранилась совместимость с Tapestry 5.0.[Источник 6]

Версия 5.2

Релиз состоялся в 2010 году. Было устранено значительное количество ошибок, были улучшены многие процессы, а также добавлены новые опции или удалены старые. Tapestry версии 5.2 больше не объединяет экземпляры страниц. Он создает один экземпляр каждой страницы и переписывает ваши классы компонентов так, что все изменяемые состояния хранятся в HashMap для каждого потока. Это значительно уменьшило объем памяти Tapestry, особенно на сильно загруженных сайтах, а также облегчило совместное использование объектов между потоками. ClassTransformation API, используемый для реализации метапрограммирования компонентов, был переписан с целью облегчения реализации преобразований классов при удалении зависимости от библиотеки Javassist. Были обновлены зависимости Spring до версии 3.0.0.RELEASE, была добавлена перезагрузка класса Live для реализаций сервисов и т.д.[Источник 7]

Версия 5.3

Версия была выпущена в 2011 году, но с течением времени, а именно до 2014 года, она дополнялась и исправлялась. За это время было выпущено 8 версий Tapestry 5.3(5.3.1-5.3.8). Многие классы и интерфейсы, которые устарели в предыдущих выпусках Tapestry, были удалены в Tapestry 5.3. Кроме того, в этой версии появились новые возможности. Так например, Tapestry теперь имеет центральный механизм для обработки пользовательских предупреждений; это включает в себя сервис AlertManager и компонент Alerts. Оповещения могут быть добавлены как во время традиционных, так и в AJAX-запросов, и могут быть временными (отображаться в течение нескольких секунд), обычными или фиксированными (сохраняться до тех пор, пока пользователь явно не отклонит их). Tapestry больше не проверяет изменения файлов классов компонентов Tapestry, шаблонов или каталогов сообщений в производственном режиме. Это изменение повысило пропускную способность и снизило потребление памяти в производственных приложениях. Также была добавлена ​​новая дополнительная библиотека, tapestry-yuicompressor, куда добавлена ​​поддержка сжатия библиотек JavaScript и CSS-файлов. Также теперь у Tapestry есть подходящий компонент Tree для навигации по иерархическим данным. Он эффективен, поддерживает Ajax и полностью настраивается. [Источник 8]

Версия 5.4

Это текущая версия Tapestry. Версия 5.4.1 была выпущена в 2016 году и с тех пор претерпела некоторое количество изменений. Использование Tapestry библиотеки байт-кода Javassist было полностью удалено вместе со многими связанными сервисами, такими как ClassFactory , которые были объявлены устаревшими в 5.3. также в предыдущих версиях Tapestry все поля экземпляров компонентов должны были быть приватными. Теперь поля компонента могут быть защищены или могут быть частными. Это облегчает работу страниц с другими страницами в том же пакете, а подклассам - более легкий доступ к полям, предоставляемым базовыми классами. Релиз последней версии, версии 5.4.4, состоялся в 18 декабря 2018 года.[Источник 9]

Создание проекта Tapestry

Самый простой способ запустить новое приложение - использовать Apache Maven.[Источник 10] После настройки среды разработки и установки Maven, мы можем создать Tapestry проект. Для этого необходимо выполнить следующую команду:

mvn archetype:create
  -DarchetypeGroupId=org.apache.tapestry
  -DarchetypeArtifactId=quickstart
  -DgroupId=com.packtpub
  -DartifactId=QuickStart 
  -DpackageName=org.apache.tapestry5.tutorial

Важно понимать, что команда и ее ключи (параметры) вводятся в одну строку! В примере команда разбита на несколько строк для наглядности.

В результате выполнения команды в текущей директории будет создана директория типового проекта со всеми основными файлами и структурой каталогов.

Файлы с исходными кодами Java будут находиться в src/main/java Веб-страницы в src/main/webapp (включая src/main/webapp/WEB-INF) Ресурсы в src/main/resources

Для успешного выполнения этой команды необходимо установленное подключение к Интернет. Если вы используете «прокси», то перед выполнением команды вы должны описать настройки «прокси» в файле настроек Maven — settings.xml:

<settings>
 <proxies>
    <proxy>
       <active>true</active>
       <protocol>http</protocol>
       <host>myProxyServer.com</host>
       <port>8080</port>
       <username>joeuser</username>
       <password>myPassword</password>
       <nonProxyHosts></nonProxyHosts>
    </proxy>
 </proxies>
</settings>

Мы сразу можем проверить работоспособность проекта. Для этого нам необходимо перейти в корневую директорию проекта:

cd QuickStart

и выполнить команду:

mvn jetty:run

В результате Maven сначала загрузит все зависимости, а затем запустит веб-сервер и наш проект будет доступен по адресу:

http://localhost:8080/QuickStart/

Прервать работу jetty в командной строке можно нажав сочетание клавиш <Ctrl+C>. Все что нам остается, открыть проект в среде разработки NetBeans. Для этого необходимо перейти в File → New Project и в открывшемся диалоговом окне выбрать Web → Web Application with Existing Sources. Далее необходимо указать местоположение нашего проекта, отметить, что он будет запускаться с помощью сервера TomCat и прописать другие настройки. Все можно запускать проект на выполнение.

Источники

  1. Официальный сайт Apache Tapestry [Электронный ресурс]: Главная / Дата обращения: 08.04.2019. Режим доступа: http://tapestry.apache.org/index.html.
  2. TheServerSide [Электронный ресурс]: Tapestry: Java Web Components Release 2.0 is Out / Дата обращения: 09.04.2019. Режим доступа: https://www.theserverside.com/discussions/thread/12750.html.
  3. TheServerSide [Электронный ресурс]: Tapestry 3.0 Final Release / Дата обращения: 09.04.2019. Режим доступа: https://www.theserverside.com/discussions/thread/25354.html.
  4. TheServerSide [Электронный ресурс]: Tapestry 4.0 Released / Дата обращения: 09.04.2019. Режим доступа: https://www.theserverside.com/discussions/thread/38407.html.
  5. DZone [Электронный ресурс]: Apache Tapestry 5.0 / Дата обращения: 09.04.2019. Режим доступа: https://dzone.com/refcardz/apache-tapestry-50.
  6. Официальный сайт Apache Tapestry [Электронный ресурс]: Release Notes 5.1 / Дата обращения: 08.04.2019. Режим доступа: https://tapestry.apache.org/release-notes-51.html.
  7. Официальный сайт Apache Tapestry [Электронный ресурс]: Release Notes 5.2 / Дата обращения: 08.04.2019. Режим доступа: https://tapestry.apache.org/release-notes-52.html.
  8. Официальный сайт Apache Tapestry [Электронный ресурс]: Release Notes 5.3 / Дата обращения: 08.04.2019. Режим доступа: http://tapestry.apache.org/release-notes-53.html.
  9. Официальный сайт Apache Tapestry [Электронный ресурс]: Release Notes 5.4 / Дата обращения: 08.04.2019. Режим доступа: http://tapestry.apache.org/release-notes-54.html.
  10. Викиучебник [Электронный ресурс]: Tapestry / Создание проекта / Дата обращения: 09.04.2019. Режим доступа: https://ru.wikibooks.org/wiki/Tapestry/Создание_проекта.

Литература

1. Википедия [Электронный ресурс]: Tapestry / Дата обращения: 09.04.2019. Режим доступа: https://ru.wikipedia.org/wiki/Tapestry

2. Викиучебник [Электронный ресурс]: Tapestry / Дата обращения: 09.04.2019. Режим доступа: https://ru.wikibooks.org/wiki/Tapestry