Просьба к профессионалам больно не бить!
Сам я занимаюсь больше gui less вещами (голос, sms), но иногда нужда заставляет приделывать web UI.
Интеграция со Spring обязательна.
Профессионалом в web разработке не являюсь: писать много html утомляет.
В древние времена пользовался голыми servlet + freemarker.
JSP утомляли больше чем просто html.
Попробовал Spring MVC - писать столько аннотаций и xml фактически только для того, чтобы разложить jsp на несколько файлов - утомляет больше чем jsp.
Начал пробовать
- Stripes и
-
http://www.inductionframework.org/ (единственный MVC framework из 3х который вызывал wow!),
но решил взглянуть как там другие люди живут.
Начал смотреть wicket и tapestry. Tapestry через некоторое время отложил, т.к. безусловно это гениальное произведение и автору большое уважение, но нет у меня столько времени, Tapestry нельзя пользоваться наскоками им надо жить.
Wicket почти хорошо, но с точки зрения ajax не дотягивает до GWT, с точки зрения меньше писать - писать больше: и html есть и куча java кода добавляется (первые впечатления - просьба не бить).
Стал смотреть на GWT - просто потрясающе, но надо дизайнера, чтобы стало красиво.
Стал смотреть на базирующиеся на нём ExtGWT и тд. Круто и красиво.
Один минус - классическую web страничку не сделаешь, нужен server side framework + обмен DTO туда сюда.
JSF (и реализации) - простите люди его любящие, но это просто пиздец. JSF это синоним слова overengineering. Если бы слово overengineering придумывали после JSF, то назвали бы его JSF.
Grails - надо учить Groove и собственно начинать жить им. Я лучше Clojure изучу если время появится. Да и по сути это опять тот же MVC, всё делаем ручками.
http://www.playframework.org/ - слышал много восторгов, то что он базировался на mina, а сейчас переходит на netty это плюс. Долго смотрел демки, но а) это опять таки MVC "сам пиши" b) какой-то почесун у меня от него c) непонятная ситуация с интеграцией со Spring была на тот момент.
В процессе чтения про Wicket наткнулся на
http://click.apache.org/ (типа wicket made right). В процессе изучения кричал в голос.
Живые Примеры вострог души (особенно когда смотришь на исходники htm и java).
То что нужно настоящему джедаю: нужен html? пиши html! Нужно чтобы компонент/форма полностью генерировал себя сам? Генерирует. Хочешь форму разложить сам как следует? Раскладывай! Хочешь свой компонент? Просто напиши.
1) stateless (хотя пока всё ещё можно поработать со страницей и в statefull режиме - хотят убрать)
2) html шаблоны velocity/freemarker, а не собственные теги в xml - нормальный freemarker, для нормального джедая!
3) чтобы не кричали борцы за чистоты он более "компонентный": компоненты могут полностью рендерить себя сами (как в Vaadin) т.е. в html будет ${myform}, но при желании можно раскладывать все элементы вручную.
4) AJAX (поддержка будет улучшена в следующей версии) по мнению авторов должен писаться на Javascript с использованием проверенных js lib (типа jQuery) либо с использованием GWT, т.е. в Java server web framework должна быть его максимально легкая и удобная поддержка. Конечно многие компоненты (типа выбор даты) не работают без js и добавляют его в сгенерированный html самостоятельно.
Фанаты wicket конечно скажут, что htm шаблоны click невалидные. Что кошерны только XML валидные шаблоны. Что я могу сказать.
Мне нравится freemarker, а шаблоны такие короткие, что и без валидности жить можно. Вон PHP файлы вообще не валидны и ничего живут.
Собственно сейчас использую
http://click.apache.org/ и в сторону смотрю просто проверяя правильность выбора.
Очень нравится Vaadin. Скорее всего как будет время почитаю доки, поделаю примеры.
Минусы у него на поверхности: нет html - поэтому всё кодируется с увеличением объема в java, он statefull о том как это плохо прекрасно описал
tonsky , но для написания desktop like приложений просто потрясающе (ZK с его птичьим языком не предлагать).
Вообщем если простой "классический" web, то Click, если мощный enterprise то Vaadin.
Собственно интересно мнение специалистов о ситуации с web в Java, а не броски дерьма.
Желающим бросить дермо, хочу напомнить, что web разработка на Java отстает по объемам даже от .net и предлагаю вместо бросков обсудить, почему бриллиантовый простой "подставить ваш java web framework" не заборол PHP.
PS: Для простоты примем ExtJS = ExtGWT, Т.е. подход примерно тот же, но надо ещё хорошо знать javascript.
PPS: т.к. многие принципиально не ходят по ссылкам вроде этой
www.avoka.com/click-examples/home.htmто приведу пример Click здесь:
красивая табличка
www.avoka.com/click-examples/introduction/simple-table.htmhtml код:
$table
java код:
@Component public class SimpleTablePage extends BorderPage {
@Resource(name="customerService") private CustomerService customerService;
private Table table;
public SimpleTablePage() {
table = new Table("table");
table.setClass(Table.CLASS_ITS);
table.addColumn(new Column("id"));
table.addColumn(new Column("name"));
table.addColumn(new Column("email"));
table.addColumn(new Column("investments"));
addControl(table);
}
@Override public void onRender() {
table.setRowList(customerService.getCustomersSortedByName(10));
}
}
/me уполз в бункер