Русская Википедия: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:

  1. Веб-страницы и их элементы — это объекты, а не просто текст, передающийся от сервера клиенту. Соответственно к ним возможно применять весь инструментарий объектно-ориентированного подхода к программированию, например наследование или полиморфизм.
  2. Веб-страницы и их элементы — это сущности, хранящие своё состояние (statefull entities), что следует из их объектной природы. Они могут хранить данные и ссылки на другие компоненты веб-приложения естесственным образом. Как правило разработчику не требуется управлять механизмами сохранения пользовательских данных, например, на уровне http-сессии.
  3. Тестирование веб-приложения значительно упрощается, так как страницы и их компоненты являются чистыми java-объектами, что позволяет использовать классические способы тестирования программного кода, такие как JUnit. Кроме того, как правило фреймворки имеют дополнительные встроенные инструменты для тестирования приложений.

Отличие Wicket от других компонентно-ориентированных фреймворков

Среди популярных фреймворков-аналогов Wicket, реализующих схожий подход к проектированию веб-приложений, можно отметить GWT, JSF, Tapestry и Vaadin. По сравнению с ними Wicket имеет следующие преимуществаШаблон:Sfn:

  1. Wicket является библиотекой с полностью открытым исходным кодом;
  2. Wicket полностью развивается сообществом программистов и не принадлежит какой-то коммерческой структуре;
  3. Архитектура Wicket направлена на то, чтобы как можно больше функциональности было достигнуто с помощью синтаксических средств чистого java-кода и простого HTML. Это касается в том числе взаимодействия компонентов на странице при помощи AJAX, которое можно реализовать без написания кода на JavaScript. При этом программный код полностью разделён с HTML и состоит только из Java, а в HTML добавляются только простые wicket-теги;
  4. С помощью Wicket можно использовать POJO и Java-beans, т.е. простые java-классы, на уровне веб-приложения, что значительно упрощает обработку пользовательских данных;
  5. Для работы с 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

Шаблон:Todo

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон:Version 10.12.2018[6]
Шаблон:Version 21.02.2018[6]
Шаблон:Version 01.10.2017[6]
Шаблон:Version 06.07.2017[6]
Шаблон:Version 29.12.2016[6]
Шаблон:Version 26.10.2016[6]
Шаблон:Version 21.07.2016[6]
Шаблон:Version 05.05.2016[6]
Шаблон:Version 19.02.2016[6]
Шаблон:Version 16.11.2015[6]
Шаблон:Version 14.06.2015[6]
Шаблон:Version 02.02.2015[6]
Шаблон:Version 05.11.2014[6]
Шаблон:Version 24.08.2014[6]
Шаблон:Version 21.06.2014[6]
Шаблон:Version 23.04.2014[6]
Шаблон:Version 06.02.2014[6]
Шаблон:Version 05.01.2014[6]
Шаблон:Version 01.11.2013[6]
Шаблон:Version 20.09.2013[6]
Шаблон:Version 18.08.2013[6]
Шаблон:Version 10.07.2013[6]
Шаблон:Version 27.06.2013[6]
Шаблон:Version 17.05.2013[6]
Шаблон:Version 12.04.2013[6]
Шаблон:Version 15.02.2013[6]
Шаблон:Version 23.01.2013[6]
Шаблон:Version 14.12.2012[6]
Шаблон:Version 16.11.2012[6]
Шаблон:Version 23.10.2012[6]
Шаблон:Version 08.10.2012[6]
Шаблон:Version 04.10.2012[6]
Шаблон:Version 05.09.2012[6]
Шаблон:Version 16.07.2012[6]
Шаблон:Version 29.05.2012[6]
Шаблон:Version 26.03.2012[6]
Шаблон:Version

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Шаблон:Collapse top

Версия Описание Дата релиза
Шаблон: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

Шаблон:Collapse bottom

Примечания

Шаблон:Примечания

Литература

Ссылки

Шаблон:Apache

  1. Шаблон:Cite web
  2. Шаблон:Cite web
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. Шаблон:Cite web
  6. 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. 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. 8,0 8,1 8,2 8,3 8,4 Шаблон:Cite web
  9. 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
  10. https://web.archive.org/web/20070102041418/http://docs.codehaus.org/download/attachments/8509/Wicket-SDK-0.9.2-alpha.zip