Русская Википедия:Wicket
Шаблон:Карточка программы Apache Wicket — компонентно-ориентированный фреймворк с открытым исходным кодом для создания веб-приложений. Разработан Джонатаном Локе (Шаблон:Lang-en) в 2004 году. С июня 2007 года является проектом Apache Software Foundation верхнего уровня.
Общее описание
Предпосылки к разработке
Первая половина 2000-х годов стала временем создания многих популярных веб-фреймворков, используемых до сегодняшнего времени. Большая их часть так или иначе реализовывала модель web-MVC, также широко известную под именем Model 2, например Struts, WebWork (позднее переименованный в Шаблон:Нп5), Spring MVC, Velocity, StripesШаблон:Sfn. Подход к проектированию, применяемый в этих фреймворках, помогал отделить код, отвечающий за логику работы программы, от кода, отвечающего за отображение информации на экране пользователя. Однако ни один из этих фреймворков не предлагал полноценный объектно-ориентированный уровень абстракции от механизмов функционирования WEB-сервера, и разработчик был вынужден учитывать множество специфичных нюансов, например особенности работы HTTP/HTTPS-протоколов, обработку запросов и ответов сервера, способы хранения данных в пользовательской сессии, генерацию и обработку URL страниц и т.д. Но основным ограничением MVC шаблона стало то, что протокол HTTP/HTTPS, используемый для передачи данных, не имеет встроенных механизмов для сохранения информации о предыдущих действиях пользователя (т.е. является stаteless-протоколом), в то время как логика работы большинства web-приложений, напротив, подразумевала необходимость совершить множество связанных действий с различными веб-страницами, передавая данные и результаты их обработки между ними. Т.е. шаблон Model 2 хорошо подходил для сайтов, где требовалось отображать пользователю статичные документы, и на которых не требовалось совершать цепочки действий на нескольких страницах. Но в веб-приложениях, напротив, пользователи зачастую работали со множеством связанных компонентов, заполняли последовательно множество форм, требовали возможность вернуться к ранее введенным данным и т.д. И для этих целей Model 2, в силу своей архитектуры, привязанной к реализации передачи данных по протоколу HTTP, подходил очень плохо. Это фундаментальное ограничение, присущее шаблону web-MVC, стало причиной разработки новой плеяды веб-фреймворков, которые получили название компонентно-ориентированных, с совершенно другим подходом к проектированию архитектуры веб-приложений, который позволял сделать комфортной работу со всем массивом введенных пользователями данных и позволял строить сложные интерфейсы с богатой функциональностью, практически ничем не уступающие классическим десктоп-приложениям. И одним из этих фреймворков стал WicketШаблон:Sfn[1].
Разработка над первоначальной версией Wicket была начата весной 2004 года двумя сотрудниками компании Sun Microsystems - Джонатаном Локком (Jonathan Locke) и Мико Матцумурой (Miko Matsumura). Название Wicket было дано проекту Мико Матцумурой. В игре крикет термин wicket обозначает небольшие ворота, в которые Шаблон:Нп5 должен попасть мячом (a small framework at which the bowler aims the ball), т.е. в названии фреймворка используется игра слов на английском языкеШаблон:Sfn.
Первая альфа-версия Wicket была опубликована на хостинге свободного программного обеспечения Codehaus.org под свободной лицензией Apache license[2]. После публикации она привлекла внимание группу программистов из Датской консалтинговой компании Topicus, под руководством Элко Хилениуса (Eelco Hillenius), Мартина Дашорста (Martijn Dashorst) и Йохана Компайнера (Johan Compagner), также к ним присоединились Юрген Доннерстаг (Juergen Donnerstag) и Крис Тюрнер (Chris Turner). Эта группа людей стала основоположниками сообщества Wicket и внесла значительный вклад в разработку и популяризацию фреймворка во всём миреШаблон:Sfn.
Первая стабильная версия Wicket 1.0 была опубликована 7 июня 2005 года[3].
В июне 2007 года Wicket вошёл в группу проектов Apache Software Foundation как проект верхнего уровня[4].
Особенности Wicket как компонентно-ориентированного фреймворка
Компонентно-ориентированные фреймворки отличаются от классических веб-фреймворков тем, что в них на стороне сервера создаётся и сохраняется модель веб-страницы, которая была открыта пользователем. HTML-код генерируется исходя из содержимого этой модели и затем отсылается клиенту. С таким подходом всё содержимое веб-страницы и все её компоненты (формы, поля ввода, ссылки, и т.д.) представлены в программе в виде чистых java-объектов, что делает возможным их обработку всеми средствами языка java. Данный подход очень похож на тот, что применяется в GUI фреймворках (таких как AWT, Swing или SWT) по отношению к графическому окну приложения и его компонентам. По сути Wicket и другие похожие фреймворки привнесли в веб-разработку подход, который ранее использовался для создания интерфейса классических десктоп-приложений. В большинстве из этих фреймворков детали работы с HTTP протоколом скрыты от разработчика, а также в них довольно естесственным образом решены проблемы с сохранением пользовательских данных на стороне сервераШаблон:Sfn.
Основные преимущества, присущие в той или иной степени всем компонентно-ориентированным фреймворкам можно свести к следующимШаблон:Sfn:
- Веб-страницы и их элементы — это объекты, а не просто текст, передающийся от сервера клиенту. Соответственно к ним возможно применять весь инструментарий объектно-ориентированного подхода к программированию, например наследование или полиморфизм.
- Веб-страницы и их элементы — это сущности, хранящие своё состояние (statefull entities), что следует из их объектной природы. Они могут хранить данные и ссылки на другие компоненты веб-приложения естесственным образом. Как правило разработчику не требуется управлять механизмами сохранения пользовательских данных, например, на уровне http-сессии.
- Тестирование веб-приложения значительно упрощается, так как страницы и их компоненты являются чистыми java-объектами, что позволяет использовать классические способы тестирования программного кода, такие как JUnit. Кроме того, как правило фреймворки имеют дополнительные встроенные инструменты для тестирования приложений.
Отличие Wicket от других компонентно-ориентированных фреймворков
Среди популярных фреймворков-аналогов Wicket, реализующих схожий подход к проектированию веб-приложений, можно отметить GWT, JSF, Tapestry и Vaadin. По сравнению с ними Wicket имеет следующие преимуществаШаблон:Sfn:
- Wicket является библиотекой с полностью открытым исходным кодом;
- Wicket полностью развивается сообществом программистов и не принадлежит какой-то коммерческой структуре;
- Архитектура Wicket направлена на то, чтобы как можно больше функциональности было достигнуто с помощью синтаксических средств чистого java-кода и простого HTML. Это касается в том числе взаимодействия компонентов на странице при помощи AJAX, которое можно реализовать без написания кода на JavaScript. При этом программный код полностью разделён с HTML и состоит только из Java, а в HTML добавляются только простые wicket-теги;
- С помощью Wicket можно использовать POJO и Java-beans, т.е. простые java-классы, на уровне веб-приложения, что значительно упрощает обработку пользовательских данных;
- Для работы с Wicket не требуется сложных конфигурационных XML-файлов, все настройки делаются в коде.
Версии
На текущий момент являются актуальными следующие версии Wicket[5]:
Версия | Последний релиз | Дата релиза | Статус |
---|---|---|---|
Шаблон:Version | Шаблон:Version | Шаблон:Start date and age[6] | Активная ветка разработки |
Шаблон:Version | Шаблон:Version | Шаблон:Start date and age[6] | Поддерживается |
Шаблон:Version | Шаблон:Version | Шаблон:Start date and age[6] | Осуществляются обновления, только связанные с безопасностью. Рекомендуется обновление до версии 9.x или 8.x |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 15.10.2022[6] | ||
Шаблон:Version | 10.07.2022[6] | ||
Шаблон:Version | 05.05.2022[6] | ||
Шаблон:Version | 08.04.2022[6] | ||
Шаблон:Version | 30.03.2022[6] | ||
Шаблон:Version | 06.02.2022[6] | ||
Шаблон:Version | 01.12.2021[6] | ||
Шаблон:Version | 02.11.2021[6] | ||
Шаблон:Version | 12.09.2021[6] | ||
Шаблон:Version | 07.07.2021[6] | ||
Шаблон:Version | 30.03.2021[6] | ||
Шаблон:Version | 19.11.2020[6] | ||
Шаблон:Version | 11.10.2020[6] | ||
Шаблон:Version | 15.06.2020[6] | ||
Шаблон:Version | 06.04.2020[6] | ||
Шаблон:Version | 09.01.2020[6] | ||
Шаблон:Version | 16.09.2019[6] | ||
Шаблон:Version | 02.06.2019[6] | ||
Шаблон:Version | 15.04.2019[6] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 02.02.2022[6] | ||
Шаблон:Version | 13.07.2021[6] | ||
Шаблон:Version | 31.03.2021[6] | ||
Шаблон:Version | 23.11.2020[6] | ||
Шаблон:Version | 07.09.2020[6] | ||
Шаблон:Version | 15.07.2020[6] | ||
Шаблон:Version | 24.04.2020[6] | ||
Шаблон:Version | 07.01.2020[6] | ||
Шаблон:Version | 13.09.2019[6] | ||
Шаблон:Version | 07.09.2019[6] | ||
Шаблон:Version | 28.05.2019[6] | ||
Шаблон:Version | 05.04.2019[6] | ||
Шаблон:Version | 30.01.2019[6] | ||
Шаблон:Version | 17.11.2018[6] | ||
Шаблон:Version | 15.09.2018[6] | ||
Шаблон:Version | 22.05.2018[6] | ||
Шаблон:Version | 17.02.2018[6] | ||
Шаблон:Version | 25.10.2017[6] | ||
Шаблон:Version | 12.08.2017[6] | ||
Шаблон:Version | 18.05.2017[6] | ||
Шаблон:Version | 29.03.2017[6] | ||
Шаблон:Version | 07.02.2017[6] | ||
Шаблон:Version | 29.12.2016[6] | ||
Шаблон:Version | 26.10.2016[6] | ||
Шаблон:Version | 25.07.2016[6] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 06.04.2021[6] | ||
Шаблон:Version | 20.07.2020[6] | ||
Шаблон:Version | 08.01.2020[6] | ||
Шаблон:Version | 07.09.2019[6] | ||
Шаблон:Version | 28.05.2019[6] | ||
Шаблон:Version | 06.04.2019[6] | ||
Шаблон:Version | 06.02.2019[6] | ||
Шаблон:Version | 01.12.2018[6] | ||
Шаблон:Version | 15.02.2018[6] | ||
Шаблон:Version | 19.09.2017[6] | ||
Шаблон:Version | 12.07.2017[6] | ||
Шаблон:Version | 16.05.2017[6] | ||
Шаблон:Version | 29.12.2016[6] | ||
Шаблон:Version | 26.10.2016[6] | ||
Шаблон:Version | 21.07.2016[6] | ||
Шаблон:Version | 05.05.2016[6] | ||
Шаблон:Version | 20.01.2016[6] | ||
Шаблон:Version | 25.10.2015[6] | ||
Шаблон:Version | 28.07.2015[6] | ||
Шаблон:Version | 21.06.2015[6] | ||
Шаблон:Version | 02.02.2015[6] | ||
Шаблон:Version | 05.11.2014[6] | ||
Шаблон:Version | 23.08.2014[6] | ||
Шаблон:Version | 20.06.2014[6] | ||
Шаблон:Version | 30.04.2014[6] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 05.08.2016[6] | ||
Шаблон:Version | 19.02.2016[6] | ||
Шаблон:Version | 24.10.2015[6] | ||
Шаблон:Version | 13.02.2015[6] | ||
Шаблон:Version | 15.09.2014[6] | ||
Шаблон:Version | 06.02.2014[6] | ||
Шаблон:Version | 26.02.2013[6] | ||
Шаблон:Version | 09.11.2012[6] | ||
Шаблон:Version | 24.08.2012[6] | ||
Шаблон:Version | 04.06.2012[6] | ||
Шаблон:Version | 07.05.2012[6] | ||
Шаблон:Version | 12.03.2012[6] | ||
Шаблон:Version | 23.01.2012[6] | ||
Шаблон:Version | 14.11.2011[6] | ||
Шаблон:Version | 24.10.2011[6] | ||
Шаблон:Version | 29.09.2011[6] | ||
Шаблон:Version | 07.09.2011[6] | ||
Шаблон:Version | 28.08.2011[6] | ||
Шаблон:Version | 25.06.2011[6] | ||
Шаблон:Version | 11.05.2011[6] | ||
Шаблон:Version | 02.04.2011[6] | ||
Шаблон:Version | 25.02.2011[6] | ||
Шаблон:Version | 22.01.2011[6] | ||
Шаблон:Version | 05.11.2010[6] | ||
Шаблон:Version | 17.09.2010[6] | ||
Шаблон:Version | 11.08.2010[6] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 06.02.2014[6] | ||
Шаблон:Version | 05.09.2012[6] | ||
Шаблон:Version | 12.03.2012[6] | ||
Шаблон:Version | 17.10.2011[6] | ||
Шаблон:Version | 09.08.2011[6] | ||
Шаблон:Version | 02.04.2011[6] | ||
Шаблон:Version | 25.02.2011[6] | ||
Шаблон:Version | 24.12.2010[6] | ||
Шаблон:Version | 29.11.2010[6] | ||
Шаблон:Version | 01.11.2010[6] | ||
Шаблон:Version | 17.09.2010[6] | ||
Шаблон:Version | 09.09.2010[6] | ||
Шаблон:Version | 11.08.2010[6] | ||
Шаблон:Version | 24.05.2010[6] | ||
Шаблон:Version | 03.05.2010[6] | ||
Шаблон:Version | 05.03.2010[6] | ||
Шаблон:Version | 01.02.2010[6] | ||
Шаблон:Version | 21.12.2009[6] | ||
Шаблон:Version | 13.12.2009[6] | ||
Шаблон:Version | 24.10.2009[6] | ||
Шаблон:Version | 12.10.2009[6] | ||
Шаблон:Version | 21.08.2009[6] | ||
Шаблон:Version | 30.07.2009[6] | ||
Шаблон:Version | 14.07.2009[7] | ||
Шаблон:Version | 04.07.2009[7] | ||
Шаблон:Version | 18.06.2009[7] | ||
Шаблон:Version | 11.05.2009[7] | ||
Шаблон:Version | 09.02.2009[7] | ||
Шаблон:Version | 13.11.2008[7] | ||
Шаблон:Version | 14.07.2008[7] | ||
Шаблон:Version | 02.06.2008[7] | ||
Шаблон:Version | 02.05.2008[7] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 30.07.2009[7] | ||
Шаблон:Version | 03.05.2009[7] | ||
Шаблон:Version | 13.11.2008[7] | ||
Шаблон:Version | 27.06.2008[7] | ||
Шаблон:Version | 07.04.2008[7] | ||
Шаблон:Version | 13.03.2008[7] | ||
Шаблон:Version | 05.02.2008[8] | ||
Шаблон:Version | 02.01.2008[8] | ||
Шаблон:Version | 13.12.2007[8] | ||
Шаблон:Version | 11.11.2007[8] | ||
Шаблон:Version | 11.10.2007[8] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 23.03.2008[9] | ||
Шаблон:Version | 22.04.2007[9] | ||
Шаблон:Version | 05.02.2007[9] | ||
Шаблон:Version | 24.12.2006[9] | ||
Шаблон:Version | 31.10.2006[9] | ||
Шаблон:Version | 27.08.2006[9] | ||
Шаблон:Version | 24.07.2006[9] | ||
Шаблон:Version | 24.05.2006[9] | ||
Шаблон:Version | 14.05.2006[9] | ||
Шаблон:Version | 01.05.2006[9] | ||
Шаблон:Version | 17.04.2006[9] | ||
Шаблон:Version | 18.03.2006[9] | ||
Шаблон:Version | 06.03.2006[9] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 25.01.2006[9] | ||
Шаблон:Version | 30.10.2005[9] | ||
Шаблон:Version | 04.10.2005[9] | ||
Шаблон:Version | 11.09.2005[9] | ||
Шаблон:Version | 30.08.2005[9] | ||
Шаблон:Version | 22.08.2005[9] | ||
Шаблон:Version | 01.08.2005[9] | ||
Шаблон:Version | 24.07.2005[9] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 29.08.2005[9] | ||
Шаблон:Version | 22.08.2005[9] | ||
Шаблон:Version | 17.07.2005[9] | ||
Шаблон:Version | Первая стабильная версия Wicket | 07.06.2005[9] | |
Шаблон:Version | 21.05.2005[9] | ||
Шаблон:Version | 16.04.2005[9] | ||
Шаблон:Version | 03.04.2005[9] | ||
Шаблон:Version |
Версия | Описание | Дата релиза | |
---|---|---|---|
Шаблон:Version | 04.03.2005[9] | ||
Шаблон:Version | 20.02.2005[9] | ||
Шаблон:Version | 25.01.2005[9] | ||
Шаблон:Version | Добавлена интеграция с фреймворком Spring | 26.12.2004[9] | |
Шаблон:Version | 19.12.2004[9] | ||
Шаблон:Version | Для контроля качества проекта стал использоваться Шаблон:Нп1 | 05.12.2004[9] | |
Шаблон:Version | 25.10.2004[9] | ||
Шаблон:Version | Альфа-версия, выложенная Джонатаном Локком на codehouse.org | 18.06.2004[10] | |
Шаблон:Version |
Примечания
Литература
Ссылки
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite web
- ↑ 6,000 6,001 6,002 6,003 6,004 6,005 6,006 6,007 6,008 6,009 6,010 6,011 6,012 6,013 6,014 6,015 6,016 6,017 6,018 6,019 6,020 6,021 6,022 6,023 6,024 6,025 6,026 6,027 6,028 6,029 6,030 6,031 6,032 6,033 6,034 6,035 6,036 6,037 6,038 6,039 6,040 6,041 6,042 6,043 6,044 6,045 6,046 6,047 6,048 6,049 6,050 6,051 6,052 6,053 6,054 6,055 6,056 6,057 6,058 6,059 6,060 6,061 6,062 6,063 6,064 6,065 6,066 6,067 6,068 6,069 6,070 6,071 6,072 6,073 6,074 6,075 6,076 6,077 6,078 6,079 6,080 6,081 6,082 6,083 6,084 6,085 6,086 6,087 6,088 6,089 6,090 6,091 6,092 6,093 6,094 6,095 6,096 6,097 6,098 6,099 6,100 6,101 6,102 6,103 6,104 6,105 6,106 6,107 6,108 6,109 6,110 6,111 6,112 6,113 6,114 6,115 6,116 6,117 6,118 6,119 6,120 6,121 6,122 6,123 6,124 6,125 6,126 6,127 6,128 6,129 6,130 6,131 6,132 6,133 6,134 6,135 6,136 6,137 6,138 6,139 6,140 6,141 6,142 6,143 6,144 6,145 6,146 6,147 6,148 6,149 6,150 6,151 6,152 6,153 6,154 6,155 6,156 Шаблон:Cite web
- ↑ 7,00 7,01 7,02 7,03 7,04 7,05 7,06 7,07 7,08 7,09 7,10 7,11 7,12 7,13 7,14 Шаблон:Cite web
- ↑ 8,0 8,1 8,2 8,3 8,4 Шаблон:Cite web
- ↑ 9,00 9,01 9,02 9,03 9,04 9,05 9,06 9,07 9,08 9,09 9,10 9,11 9,12 9,13 9,14 9,15 9,16 9,17 9,18 9,19 9,20 9,21 9,22 9,23 9,24 9,25 9,26 9,27 9,28 9,29 9,30 9,31 9,32 9,33 9,34 Шаблон:Cite web
- ↑ https://web.archive.org/web/20070102041418/http://docs.codehaus.org/download/attachments/8509/Wicket-SDK-0.9.2-alpha.zip
- Русская Википедия
- Веб-фреймворки на Java
- Свободные библиотеки программ
- Проекты Apache
- Программное обеспечение с лицензией Apache Software License
- Программное обеспечение, разработанное в 2004 году
- HTML
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Википедия
- Статья из Википедии
- Статья из Русской Википедии