В чем преимущества Apache Wicket? [закрытый]

Я не Разработчик Java, поэтому я могу получить некоторые термины неправильно... но.

приложение, с которым я интегрируюсь, движется от весны к калитке. Хотя это не должно повлиять на мою интеграцию с ним, мне стало интересно, почему они это сделают?

из того, что я знаю, Весна-более популярная структура. Я ничего не знаю о нем, кроме того, что он популярен. Я прочитал страницу калитки, и калитка кажется очень простой и понятной.

какие преимущества калитки?

Мне кажется, что изменение всей вашей структуры было бы некоторой работой, поэтому мне интересно, предлагает ли калитка что-то, чего весна не делает?

10 ответов


преимущества, которые часто рекламируются в кругах, которые я часто:

  1. ваш html может быть полностью совместим с xhtml - существует очень хорошее разделение презентации и логики в том, что единственное, что ваш слой презентации/html должен знать о калитке, - это атрибуты wicketid в стандартных тегах html. Это замечательно для клиента html / css / javascript в вашей команде, который практически не работает на java. Никакая другая веб-платформа на основе java не может утверждать это, афаик.
  2. нет конфигурации xml для чего - либо конкретного калитки-все можно сделать в источнике, и очень мало нужно сделать для стандартной сети.xml для вашего .война!--4-->
  3. разработка на основе компонентов довольно легко grok-особенно если у вас есть не веб-фон (например, программист swing). он поощряет повторное использование немного больше, чем mvc, imo.

вот некоторые особенности apache калитки:

POJO компонентная модель

страницы и компоненты в калитке-это реальные объекты Java, которые поддерживают инкапсуляцию, наследование и события.

простота разработки

поскольку калитка-это Java и HTML, вы можете использовать то, что вы знаете о Java или вашем любимом редакторе HTML для написания приложений калитки.

разделение Заботы

калитка не смешивает разметку с кодом Java и не добавляет специальный синтаксис к файлам разметки. Миры HTML и Java параллельны и связаны только идентификаторами калитки, которые являются атрибутами в HTML и свойствами компонентов в Java. Поскольку Wicket HTML - это просто HTML, а Wicket Java - это просто Java, кодеры и дизайнеры могут работать независимо в значительной степени и не полагаясь на какие-либо специальные инструменты.

безопасное

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

Прозрачная, Масштабируемая Поддержка Кластеризации

все приложения калитки будут работать на кластере автоматически и без дополнительной работы. Как только узкие места будут поняты, калитка включает настройку репликации состояния страницы. Следующая версия Wicket будет поддерживать клиентские модели для масштабируемости нулевого состояния.

Прозрачная Поддержка Кнопки Назад

калитка поддерживает настраиваемое управление версиями страниц. Когда пользователи отправляют форму или следуют по ссылке со страницы, к которой они обратились с помощью кнопки "Назад" в своем браузере, Wicket может вернуть объект страницы в состояние, в котором он был, когда страница была первоначально отображена. Это означает, что вы можете писать веб-приложения, которые поддерживают спину кнопка с очень маленькой работой.

Multi-вкладки и Multi-window поддержка

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

Многоразовые Компоненты

многоразовые компоненты в калитке особенно просты в создании. Вы не только можете расширить существующие компоненты с помощью ключевого слова Java extends, но вы также можете создать компоненты панели, которые связывают группу компонентов как многоразовую единицу.

Простая, Гибкая, Локализуемая Проверка Формы

тривиально писать и использовать валидаторы в калитке. Также довольно легко настроить и локализовать отображение и содержимое сообщений об ошибках проверки.

Сеансы Typesafe

калитка устраняет необходимость управлять атрибутами HttpSession вручную. Страница и объекты компонентов прозрачно хранятся в сеансе, и приложение может создать пользовательский подкласс сеанса со свойствами typesafe. Все объекты, хранящиеся в сеансе, могут автоматически участвовать в репликации кластеризации.

Фабрика Настраиваемый

калитка-это очень растяжимо. Большинств деятельности ориентированы на заказчика через фабрики или методы фабрики.

Съемная Моделей

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

Границы Компоненты

компоненты границы калитки включают украшение страниц в многоразовом способе. Это особенно полезно для наследования общих навигационных структуры или макета.

поддержка всех основных функций HTML

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

программная манипуляция атрибутами

компоненты калитки могут программно изменять любой атрибут тега HTML.

Автоматическое Преобразование

после проверки формы модель может быть обновлен с помощью калитки преобразователей. Большинство обычных конверсий встроены, и легко писать новые конвертеры.

Динамические Изображения

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

Pageable ListView

ListViews в калитке чрезвычайно мощные. Вы можете вложить любой компонент в строку ListView, даже в другие ListViews. PageableListView поддерживает навигационные ссылки для больших списков.

Компонент Дерева

из компонента дерева box для навигации и выбора узлов.

локализация

HTML-страницы, изображения и строки ресурсов могут быть локализованы.


Весна больше, чем весна MVC. Вы можете (и вероятно должны) использовать весной С калитка.


калитка скалы!

Spring (UI часть которого называется Spring MVC) просто кажется мега, "сделать все, включая кухонную раковину", тип структуры, которая заставила его казаться огромным и громоздким для меня, когда я начал оценивать Spring (и Spring MVC). Сегодня весна, как мне кажется, не сосредоточена ни на чем одном. Первоначально я думаю, что это была просто структура инъекции зависимости, но она быстро выросла, чтобы попытаться быть всем для всех людей, и простота была потерянный.

в книгах, которые я читал на Spring, были примеры, которые содержали слишком много конфигурации XML. Ошибки в файлах конфигурации XML намного сложнее отлаживать и исправлять, чем ошибки в коде java, которые вы можете выполнить с помощью отладчика.

что не так с объявлением материала в коде Java вместо XML в любом случае? С каких это пор кто-то решил, что все должно быть объявлено в XML в любом случае. Если вам нравится плавать в море сложных файлов конфигурации XML, тогда идите с весной. Если вы например, сделать работу и быть продуктивным, а затем пойти с калиткой.

калитка очень сосредоточена на том, чтобы быть лучшей Java на основе UI framework для разработки веб-приложений. Он не пытается заблокировать вас в какой-либо конкретной структуре инъекции зависимостей или какой-либо конкретной структуре персистентности (используйте ее с JDO/JPA, DataNucleus, Hibernate, что угодно).

это фокус явно на UI, но вы можете использовать любой фреймворк инъекции зависимостей, который вам нравится (вам не нужно использовать DI Spring с ним но вы можете, если хотите). Мы даже используем наш собственный DI (http://www.expojo.com) с калиткой и все фанки.


Весна более всеобъемлюща, чем калитка.

калитка является Java Web UI framework. Spring также имеет один, а также модули для сохранения, удаленного взаимодействия,безопасности, обмена сообщениями и т. д.

Весна построена на впрыске зависимости и AOP. Калитка не имеет ни.

Я не использовал его, но он должен быть простым. Не могу сказать, легче весна или тяжелее.

вы можете использовать весну к хорошему преимуществу в много ситуациях кроме паутины приложения.


вы можете прочитать о преимуществах использования калитки в свободной первой главе калитки в действии:http://www.manning.com/dashorst/

короче говоря, калитка-отличная платформа, когда приложение, которое вы разрабатываете, относительно сложное, вы хотите, чтобы оно было доступным для обслуживания, имея возможность масштабировать команду и использовать преимущества повторного использования. Объектно-ориентированное программирование оказалось очень полезной парадигмой для программирования UIs, но, к сожалению, большинство Java-фреймворков для разработка веб-приложений, включая Spring MVC, поддерживает только очень процедурную модель программирования, где они помечают термин MVC, чтобы он звучал круто (но на самом деле, поскольку гранулярность, которую они поддерживают, - это запросы/ отклики, а не автономные виджеты, MVC действительно вводит в заблуждение).

часть DI весны большая, и что-то вы можете легко использовать вместе с калиткой.


Я согласен с ответами, предоставленными до сих пор. То, что не было упомянуто, - это следующие моменты, которые являются следствием подхода Wicket к разработке веб-приложений, сосредоточенного на Java-коде: -

  • разработка калитки не включает в себя написание JSPs.
  • AJAX компоненты могут быть разработаны без привлечения написания Javascript.

Я не сталкивался с какой-либо другой структурой, которая использует этот Java-ориентированный подход. Все остальные Я использовал (распорки, весна) для разработки JSP.

для меня большим преимуществом калитки является акцент на Java и доступность богатых инструментов среды разработки, таких как Eclipse. Также очень четкое разделение бизнес-логики от оформления заявки.


некоторые преимущества калитки мне нравятся:

  1. простота - кривая обучения мала, особенно если вы из школы свинга.
  2. чистое разделение проблем-веб-дизайнеру не нужно много знать о кодах.
  3. простота развертывания.

    вот мой блог, чтобы показать hello world коды в калитке


Spring дает вам шаблон дизайна MVC только на уровне страницы - очень грубый уровень детализации. Калитка, напротив, дает вам шаблон проектирования MVC на уровне отдельных компонентов (так же, как Swing предлагает для программирования fat client). С Spring MVC все данные формы являются глобальными для всего переднего сервлета, поэтому нет большой возможности для скрытия информации, свободной связи или плотного сцепления. С калиткой, ваша логика дисплея может быть очень более модульна -- данные управляемый componentA не должен быть видимым для кода componentB.

меньший уровень детализации упрощает повторное использование кода отображения на нескольких различных веб-страницах или даже в веб-приложениях.

кроме того, поскольку конфигурация компонентов выполняется на Java, а не в XML, их можно настроить "на лету" во время выполнения, что обеспечивает гораздо большую мощность и гибкость (в отличие от большинства других ориентированных на компоненты фреймворков, таких как ASP.NET полотно Формы или лица сервера Java).


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

http://www.infoq.com/articles/modular-wicket