Apache Wicket — компонентно-ориентированный фреймворк с открытым исходным кодом для создания веб-приложений. Разработан Джонатаном Локе () в 2004 году. С июня 2007 года является проектом Apache Software Foundation верхнего уровня.

Общее описание Предпосылки к разработке Первая половина 2000-х годов стала временем создания многих популярных веб-фреймворков, используемых до сегодняшнего времени. Большая их часть так или иначе реализовывала модель web-MVC, также широко известную под именем Model 2, например Struts, WebWork (позднее переименованный в ), Spring MVC, Velocity, Stripes. Подход к проектированию, применяемый в этих фреймворках, помогал отделить код, отвечающий за логику работы программы, от кода, отвечающего за отображение информации на экране пользователя. Однако ни один из этих фреймворков не предлагал полноценный объектно-ориентированный уровень абстракции от механизмов функционирования WEB-сервера, и разработчик был вынужден учитывать множество специфичных нюансов, например особенности работы HTTP/HTTPS-протоколов, обработку запросов и ответов сервера, способы хранения данных в пользовательской сессии, генерацию и обработку URL страниц и т.д. Но основным ограничением MVC шаблона стало то, что протокол HTTP/HTTPS, используемый для передачи данных, не имеет встроенных механизмов для сохранения информации о предыдущих действиях пользователя (т.е. является stаteless-протоколом), в то время как логика работы большинства web-приложений, напротив, подразумевала необходимость совершить множество связанных действий с различными веб-страницами, передавая данные и результаты их обработки между ними. Т.е. шаблон Model 2 хорошо подходил для сайтов, где требовалось отображать пользователю статичные документы, и на которых не требовалось совершать цепочки действий на нескольких страницах. Но в веб-приложениях, напротив, пользователи зачастую работали со множеством связанных компонентов, заполняли последовательно множество форм, требовали возможность вернуться к ранее введенным данным и т.д. И для этих целей Model 2, в силу своей архитектуры, привязанной к реализации передачи данных по протоколу HTTP, подходил очень плохо. Это фундаментальное ограничение, присущее шаблону web-MVC, стало причиной разработки новой плеяды веб-фреймворков, которые получили название компонентно-ориентированных, с совершенно другим подходом к проектированию архитектуры веб-приложений, который позволял сделать комфортной работу со всем массивом введенных пользователями данных и позволял строить сложные интерфейсы с богатой функциональностью, практически ничем не уступающие классическим десктоп-приложениям. И одним из этих фреймворков стал Wicket.

Разработка над первоначальной версией Wicket была начата весной 2004 года двумя сотрудниками компании Sun Microsystems - Джонатаном Локком (Jonathan Locke) и Мико Матцумурой (Miko Matsumura). Название Wicket было дано проекту Мико Матцумурой. В игре крикет термин wicket обозначает небольшие ворота, в которые должен попасть мячом (a small framework at which the bowler aims the ball), т.е. в названии фреймворка используется игра слов на английском языке.

Первая альфа-версия Wicket была опубликована на хостинге свободного программного обеспечения Codehaus.org под свободной лицензией Apache license. После публикации она привлекла внимание группу программистов из Датской консалтинговой компании Topicus, под руководством Элко Хилениуса (Eelco Hillenius), Мартина Дашорста (Martijn Dashorst) и Йохана Компайнера (Johan Compagner), также к ним присоединились Юрген Доннерстаг (Juergen Donnerstag) и Крис Тюрнер (Chris Turner). Эта группа людей стала основоположниками сообщества Wicket и внесла значительный вклад в разработку и популяризацию фреймворка во всём мире.

Первая стабильная версия Wicket 1.0 была опубликована 7 июня 2005 года.

В июне 2007 года Wicket вошёл в группу проектов Apache Software Foundation как проект верхнего уровня.

Особенности Wicket как компонентно-ориентированного фреймворка Компонентно-ориентированные фреймворки отличаются от классических веб-фреймворков тем, что в них на стороне сервера создаётся и сохраняется модель веб-страницы, которая была открыта пользователем. HTML-код генерируется исходя из содержимого этой модели и затем отсылается клиенту. С таким подходом всё содержимое веб-страницы и все её компоненты (формы, поля ввода, ссылки, и т.д.) представлены в программе в виде чистых java-объектов, что делает возможным их обработку всеми средствами языка java. Данный подход очень похож на тот, что применяется в GUI фреймворках (таких как AWT, Swing или SWT) по отношению к графическому окну приложения и его компонентам. По сути Wicket и другие похожие фреймворки привнесли в веб-разработку подход, который ранее использовался для создания интерфейса классических десктоп-приложений. В большинстве из этих фреймворков детали работы с HTTP протоколом скрыты от разработчика, а также в них довольно естественным образом решены проблемы с сохранением пользовательских данных на стороне сервера.

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

Отличие Wicket от других компонентно-ориентированных фреймворков Среди популярных фреймворков-аналогов Wicket, реализующих схожий подход к проектированию веб-приложений, можно отметить GWT, JSF, Tapestry и Vaadin. По сравнению с ними Wicket имеет следующие преимущества: Wicket является библиотекой с полностью открытым исходным кодом; Wicket полностью развивается сообществом программистов и не принадлежит какой-то коммерческой структуре; Архитектура Wicket направлена на то, чтобы как можно больше функциональности было достигнуто с помощью синтаксических средств чистого java-кода и простого HTML. Это касается в том числе взаимодействия компонентов на странице при помощи AJAX, которое можно реализовать без написания кода на JavaScript. При этом программный код полностью разделён с HTML и состоит только из Java, а в HTML добавляются только простые wicket-теги; С помощью Wicket можно использовать POJO и Java-beans, т.е. простые java-классы, на уровне веб-приложения, что значительно упрощает обработку пользовательских данных; Для работы с Wicket не требуется сложных конфигурационных XML-файлов, все настройки делаются в коде.

Версии На текущий момент являются актуальными следующие версии Wicket: ВерсияПоследний релизДата релизаСтатус Активная ветка разработки Поддерживается Осуществляются обновления, только связанные с безопасностью. Рекомендуется обновление до версии 9.x или 8.x

ВерсияОписаниеДата релиза 15.10.2022 10.07.2022 05.05.2022 08.04.2022 30.03.2022 06.02.2022 01.12.2021 02.11.2021 12.09.2021 07.07.2021 30.03.2021 19.11.2020 11.10.2020 15.06.2020 06.04.2020 09.01.2020 16.09.2019 02.06.2019 15.04.2019

ВерсияОписаниеДата релиза 02.02.2022 13.07.2021 31.03.2021 23.11.2020 07.09.2020 15.07.2020 24.04.2020 07.01.2020 13.09.2019 07.09.2019 28.05.2019 05.04.2019 30.01.2019 17.11.2018 15.09.2018 22.05.2018 17.02.2018 25.10.2017 12.08.2017 18.05.2017 29.03.2017 07.02.2017 29.12.2016 26.10.2016 25.07.2016

ВерсияОписаниеДата релиза 06.04.2021 20.07.2020 08.01.2020 07.09.2019 28.05.2019 06.04.2019 06.02.2019 01.12.2018 15.02.2018 19.09.2017 12.07.2017 16.05.2017 29.12.2016 26.10.2016 21.07.2016 05.05.2016 20.01.2016 25.10.2015 28.07.2015 21.06.2015 02.02.2015 05.11.2014 23.08.2014 20.06.2014 30.04.2014

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

ВерсияОписаниеДата релиза 05.08.2016 19.02.2016 24.10.2015 13.02.2015 15.09.2014 06.02.2014 26.02.2013 09.11.2012 24.08.2012 04.06.2012 07.05.2012 12.03.2012 23.01.2012 14.11.2011 24.10.2011 29.09.2011 07.09.2011 28.08.2011 25.06.2011 11.05.2011 02.04.2011 25.02.2011 22.01.2011 05.11.2010 17.09.2010 11.08.2010

ВерсияОписаниеДата релиза 06.02.2014 05.09.2012 12.03.2012 17.10.2011 09.08.2011 02.04.2011 25.02.2011 24.12.2010 29.11.2010 01.11.2010 17.09.2010 09.09.2010 11.08.2010 24.05.2010 03.05.2010 05.03.2010 01.02.2010 21.12.2009 13.12.2009 24.10.2009 12.10.2009 21.08.2009 30.07.2009 14.07.2009 04.07.2009 18.06.2009 11.05.2009 09.02.2009 13.11.2008 14.07.2008 02.06.2008 02.05.2008

ВерсияОписаниеДата релиза 30.07.2009 03.05.2009 13.11.2008 27.06.2008 07.04.2008 13.03.2008 05.02.2008 02.01.2008 13.12.2007 11.11.2007 11.10.2007

ВерсияОписаниеДата релиза 23.03.2008 22.04.2007 05.02.2007 24.12.2006 31.10.2006 27.08.2006 24.07.2006 24.05.2006 14.05.2006 01.05.2006 17.04.2006 18.03.2006 06.03.2006

ВерсияОписаниеДата релиза 25.01.2006 30.10.2005 04.10.2005 11.09.2005 30.08.2005 22.08.2005 01.08.2005 24.07.2005

ВерсияОписаниеДата релиза 29.08.2005 22.08.2005 17.07.2005 Первая стабильная версия Wicket 07.06.2005 21.05.2005 16.04.2005 03.04.2005

ВерсияОписаниеДата релиза 04.03.2005 20.02.2005 25.01.2005 Добавлена интеграция с фреймворком Spring 26.12.2004 19.12.2004 Для контроля качества проекта стал использоваться 05.12.2004 25.10.2004 Альфа-версия, выложенная Джонатаном Локком на codehouse.org 18.06.2004Internet Archive: Scheduled Maintenance

Примечания

Литература

Ссылки Официальный сайт Wicket twitter apache_wicket

Категория:Веб-фреймворки на Java Категория:Свободные библиотеки программ Категория:Проекты Apache Категория:Программное обеспечение с лицензией Apache Категория:Программное обеспечение, разработанное в 2004 году Категория:HTML