Выбор Java web framework 2010 (every year java contest)

Jul 22, 2010 13:29

Просьба к профессионалам больно не бить!

Сам я занимаюсь больше 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.htm
html код: 
$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 уполз в бункер

web

Previous post Next post
Up