Начинаем новый небольшой WEB-проект:
десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
Посоветуйте "правильный" framework.
Пока потратил 1 день, бегло пробежался по:
Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%.
Struts: выглядит привлекательно
Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
Здравствуйте, Аноним, Вы писали:
А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%.
Spring хорошо разделен на модули и документирован. Поэтому изучать все не понадобится, только то чем нужно быдут пользоватся. Так что если ищете "правильный", то это самое оно.
А>Struts: выглядит привлекательно
Прошлый век.
А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
Граблей как и везде не больше не меньше. Подойдет если вы будете делать много UI и писать reusbale компоненты. Плюсов очень и очень много.
Основной минус — отсутствие нормально интеграции сo Spring. Но есть варианты, например инжектить спринговые бины через аннотации.
А>Может кто добавит в двух словах?
Надо ещё обратить внимание что Spring не поможет с окончательным представлением, поэтому тут тоже придется поискать решение (если не Tapestry)
Комбинации которые мы применяем это:
Tapestry + Spring IoC и там стоко всего полезного не перечислить.
Spring MVC + Velocity если UI не так много, я чаще склоняюсь именно к этой комбинации, Возьня с Tapestry мне не понравилась и сложностей которые пришлось забарывать оказалось больше чем хотелось. Но говорят последние версии прогрессируют как раз в сторону решения этой проблемы.
Здравствуйте, Аноним, Вы писали:
А>Может кто добавит в двух словах?
для текущего проекта, который больше имеет в недрах, чем в GUI и в БД (10-15 страниц, 10-15 таблиц), я выбрал wicket + hibernate (с простой proxy-прослойкой, облегчающей transaction handling)
компонентность помогла для удобного вывода "чуть-чуть отличающихся сущностей", а также для ввода сущностей с настраиваемым набором параметров
поддержка вывода постраничного браузинга сущностей помогла избежать сложных собственных решений, чему был рад заказчик (владеет исходным кодом)
Здравствуйте, Аноним, Вы писали:
А>Hi ALL
А>Начинаем новый небольшой WEB-проект: А>десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
А>Посоветуйте "правильный" framework.
А>Пока потратил 1 день, бегло пробежался по: А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%. А>Struts: выглядит привлекательно А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
А>Может кто добавит в двух словах?
RI>JSF + AJAX + Spring + Hibernate
И как скрещивать AJAX и JSF?
"СССР — четыре слова и все лживые" — Вагрич Бахчанян
Re[2]: Новый WEB-проект
От:
Аноним
Дата:
20.11.06 18:21
Оценка:
Здравствуйте, C0s, Вы писали:
C0s>для текущего проекта, который больше имеет в недрах, чем в GUI и в БД (10-15 страниц, 10-15 таблиц), я выбрал wicket + hibernate (с простой proxy-прослойкой, облегчающей transaction handling) C0s>компонентность помогла для удобного вывода "чуть-чуть отличающихся сущностей", а также для ввода сущностей с настраиваемым набором параметров C0s>поддержка вывода постраничного браузинга сущностей помогла избежать сложных собственных решений, чему был рад заказчик (владеет исходным кодом)
А есть в wicket аналог BeanForm? А то разных типов обьектов предвидится с пару десятков.
Здравствуйте, Аноним, Вы писали:
А>А есть в wicket аналог BeanForm? А то разных типов обьектов предвидится с пару десятков.
если бы я еще в точности понимал в чем есть фикус BeanForm...
вкратце, в wicket любая форма имеет html-ку, в которой, собственно, дана разметка, в которой каждому элементу дано wicket-id
java-класс этой формы имеет конструктор, в коде которого инстанцируются все элементы, и привязывается модель (java-bean)
так вот в простейшем случае предполагается совпадение имен свойств этого java-бина со значениями wicket-id input-контролов в htmlке.
при этом геттеры и сеттеры могут быть сразу типизированы (String, Integer ...), а для "сложных" контролов типа DropDown легко реализуется отделение значений от индексов вариантов (и значения, как следствие, тоже не обязательно имеют тип String)
впридачу, на все это легко навешиваются валидаторы (как по отдельным полям, так и на уровне формы)
в том же java-классе также реализуется метод onSubmit, который при успешном сабмите формы делает также редирект на нужную страницу, и все
Здравствуйте, Аноним, Вы писали:
А>Hi ALL
А>Начинаем новый небольшой WEB-проект: А>десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
А>Посоветуйте "правильный" framework.
А>Пока потратил 1 день, бегло пробежался по: А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%. А>Struts: выглядит привлекательно А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
А>Может кто добавит в двух словах?
Здравствуйте, C0s, Вы писали:
C0s>Здравствуйте, Аноним, Вы писали:
А>>Может кто добавит в двух словах?
C0s>я выбрал wicket + hibernate (с простой proxy-прослойкой, облегчающей transaction handling)
Гы. Я тоже proxy для управления транзакциями написал, после чего остался доволен вышеозначенно связкой.
Re[2]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 08:20
Оценка:
Здравствуйте, C0s, Вы писали:
с простой proxy-прослойкой, облегчающей transaction handling
можно поподробней про proxy-прослойку, как это работает ?, если можно пример
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, C0s, Вы писали:
А>с простой proxy-прослойкой, облегчающей transaction handling
А>можно поподробней про proxy-прослойку, как это работает ?, если можно пример
Spring умеет автоматически управлять транзакциями. Но использовать Spring только лишь ради этого — это стрелять из пушки по воробьям. Проблема решается просто. Мое решение уложилось в 6 классов.
Предположим, у нас есть некий класс содержащий набор методов, реализующих бизнес-правила. Подавляющее большинство таких правил делают запросы к базе данных, изменения в БД должны быть либо целиком приняты, либо целиком отвергнуты.
Самостоятельно управлять транзакциями — стрёмно. Да и ненадёжно. Забыл где транзакцию закоммитить — ищи потом... Было бы разумно, если бы приложение само стартовало и завершало транзакцию, если мы укажем потребность в этом. Например — через аннотацию:
public class DaoImpl implements Dao {
...
@Transactional
public void processOperation();
...
}
Вопрос: как научить систему управлять транзакциями? Для этого надо разобраться с классом Proxy и интерфейсом InvocationHandler из состава JDK. Данная парочка умеет производить на свет классы на базе существующих, с тем же самым интерфейсом, но с измененной реализацией. Выглядит процесс перерождения примерно так:
dao = (Dao) new DaoProxy(new DaoImpl(sessionFactory)).getProxy();
Здесь класс DaoImpl — класс с бизнес-методами, реализующий интерфейс Dao. На выходе мы получили класс с тем же самым интерфейсом, но вот что происходит внутри DaoProxy?
public class DaoProxy implements InvocationHandler {
private Object daoProxy;
...
public DaoProxy(Dao dao) {
try {
Class proxyClass = Proxy.getProxyClass(dao.getClass().getClassLoader(), dao.getClass().getInterfaces());
daoProxy = proxyClass.getConstructor(new Class[]{InvocationHandler.class}).newInstance(new Object[]{this});
} catch (Exception e) {
throw new DaoException(e);
}
}
public Object getProxy() {
return daoProxy;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result;
result = transactionManager.process(method, args);
return result;
}
}
У прокси-класса каждый вызов метода будет пропускаться через метод invoke(), и соответственно, через transactionManager.process(), который внутри выглядит примерно так:
Кстати, если вам надо ограничить доступ к бизнес-методам или страницам, можно применить тот же самый трюк.
Re: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 10:46
Оценка:
А>Может кто добавит в двух словах?
а может ну его, хибернейт этот со спрингом? Данные в базе, взять/положить, получить хмл, по хсл шаблону преобразовать и отдать браузеру? По-моему ничего сложного
Здравствуйте, Аноним, Вы писали:
А>а может ну его, хибернейт этот со спрингом? Данные в базе, взять/положить, получить хмл, по хсл шаблону преобразовать и отдать браузеру? По-моему ничего сложного
так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
Здравствуйте, Blazkowicz, Вы писали:
А>>а может ну его, хибернейт этот со спрингом? Данные в базе, взять/положить, получить хмл, по хсл шаблону преобразовать и отдать браузеру? По-моему ничего сложного
B>так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
Здравствуйте, toxin, Вы писали:
B>>так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
T>Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
Но это уже оффтопик будет.
Re[4]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 11:24
Оценка:
Здравствуйте, slskor, Вы писали:
S>
S>public class DaoImpl implements Dao {
S> ...
S> @Transactional
S> public void processOperation();
S> ...
S>}
S>
S>У прокси-класса каждый вызов метода будет пропускаться через метод invoke(), и соответственно, через transactionManager.process(), который внутри выглядит примерно так:
S>
да это понятно ,больше интересовала поддержка рапределенных транзакций.
тоесть когда в транзакции участвуют несколько методов, разных объектов (есть самописные ресурсы),
границы транзакции указаны в коде.
скажем class A implements XAResource {
private String a;
.......
.......
public setA(String a) {
......
}
......
......
}
A a1 = new A(TransactionManager mnr);
A a2 = new A(TransactionManager mnr);
Здравствуйте, Blazkowicz, Вы писали:
T>>Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
B>Но это уже оффтопик будет.
Зато в топик будет: "как все это хозяйство портировать на J2EE, т.к. заказчик ничего кроме Линухов и Оракла не признает"
Здравствуйте, toxin, Вы писали:
T>Здравствуйте, Blazkowicz, Вы писали:
T>>>Фи. HTML + MS IE + MS databinding + JScript = крутой ВЕБ-проект. Работы по сопровождению хватит на всех
B>>Но это уже оффтопик будет.
T>Зато в топик будет: "как все это хозяйство портировать на J2EE, т.к. заказчик ничего кроме Линухов и Оракла не признает"
Действительно, про ADF как то забыли.
Re[4]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 12:43
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Получается запросы отдельно, шаблоны отдельно.
А>Но надо знать SQL, XSL и HTML.
поддержу товарисча, MVC на 100%, а кода кот наплакал
Здравствуйте, Аноним, Вы писали:
B>>так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
А>в отличии от струтсов и прочей дребедени это даёт сокращение кода и разделение компонентов приложения.
А>Соединиться с базой, сделать запрос и отдать его в хмл — в пределах 100 строк кода. Преобразовать по XSL-шаблону и отдать браузеру — ещё 100 строк.
А>Получается запросы отдельно, шаблоны отдельно.
А>Но надо знать SQL, XSL и HTML.
Ага, и вместо того что бы нормально писать на хорошем языке Java, программист сидит и париться с этим недоязыком под названием XSL. А джава на этих 200 строках и заканчивается.
Нет уж спасибо.
Re[5]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 13:11
Оценка:
А>>Но надо знать SQL, XSL и HTML.
если знаешь только жаву то и писать приходится на жаве. Если не только жаву то на том что удобней для данного компонента — запросы к базе на SQL, формирование страницы на XSL.
Здравствуйте, Аноним, Вы писали:
А>в отличии от струтсов и прочей дребедени это даёт сокращение кода и разделение компонентов приложения.
Ёу. В чем сокращение кода? Где разделение компонентов? О каких вообще компанентах речь?
А>Соединиться с базой, сделать запрос и отдать его в хмл — в пределах 100 строк кода. Преобразовать по XSL-шаблону и отдать браузеру — ещё 100 строк.
Отдать запрос в XML? Кстати, отличная оценка трудозатрат проекта — 100 строк здесь, 100 строк там. Надо взять на вооружение. И все это без постановки задачи. Зачет!
А>Получается запросы отдельно, шаблоны отдельно.
Угу, MVC на лицо.
А>Но надо знать SQL, XSL и HTML.
XML забыл. Java тут не нужна это точно.
Здравствуйте, Аноним, Вы писали:
А>>>Но надо знать SQL, XSL и HTML.
А>если знаешь только жаву то и писать приходится на жаве. Если не только жаву то на том что удобней для данного компонента — запросы к базе на SQL, формирование страницы на XSL.
Что-то Вы все про компоненты да компоненты. В исходной задаче про них ничего не сказано.
Аноним wrote: > в отличии от струтсов и прочей дребедени это даёт сокращение кода и > разделение компонентов приложения. > Соединиться с базой, сделать запрос и отдать его в хмл — в пределах 100 > строк кода. Преобразовать по XSL-шаблону и отдать браузеру — ещё 100 строк. > Получается запросы отдельно, шаблоны отдельно.
Это все красиво только на бумаге. А когда становится необходимо РЕДАКТИРОВАТЬ данные из базы — вот тут-то и приходит мелкий
пушной зверек.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[5]: Новый WEB-проект
От:
Аноним
Дата:
21.11.06 14:52
Оценка:
B>Отдать запрос в XML? Кстати, отличная оценка трудозатрат проекта — 100 строк здесь, 100 строк там. Надо взять на вооружение. И все это без постановки задачи. Зачет!
постановка задачи:
— взять из HttpServletRequest переменные, составить по ним запрос к базе, выполнить и преобразовать результат в хтмл. Трудозатраты — примерно 100 строк кода.
— взять с диска XSL-файл, преобразовать по нему данные в хмл и результат отдать в HttpServletResponse. Трудозатраты — примерно 100 строк кода
Здравствуйте, Аноним, Вы писали:
А>- взять из HttpServletRequest переменные, составить по ним запрос к базе, выполнить и преобразовать результат в хтмл. Трудозатраты — примерно 100 строк кода. А>- взять с диска XSL-файл, преобразовать по нему данные в хмл и результат отдать в HttpServletResponse. Трудозатраты — примерно 100 строк кода
Трудозатраты на дизайн XML, XSLT, HTML мизерные и ими можно пренебречь?
Здравствуйте, Аноним, Вы писали:
А>Hi ALL
А>Начинаем новый небольшой WEB-проект: А>десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
А>Посоветуйте "правильный" framework.
А>Пока потратил 1 день, бегло пробежался по: А>Spring: показалось, что много всего, на старт уйдет уйма времени, а понадобится реально 20%. А>Struts: выглядит привлекательно А>Tapestry: погуглил — говорят в нем граблей много. Правда есть BeanForm, что баальшой плюс.
А>Может кто добавит в двух словах?
Не согласен. GWT может очень даже подойти на замену небольших десктопных клиентов и аплетов. Главное придерживаться правила, что все должно быть применено по месту.
... А>>Struts: выглядит привлекательно B>Прошлый век.
...
Скажите, а какой же тогда фреймворк использовать, чтобы получалось простое в реализации и поддержке, наглядное приложение.
То есть где еще так сильно разделено(и весьма удобно на мой взгляд) представление и контроллер?
JFreeM wrote: > Скажите, а какой же тогда фреймворк использовать, чтобы получалось > простое в реализации и поддержке, наглядное приложение. > То есть где еще так сильно разделено(и весьма удобно на мой взгляд) > представление и контроллер? Полного MVC нет нигде — всегда на практике остаются нежелательные
связи между видом и контроллером или контроллером и моделью. Да и не
нужен абсолютно чистый MVC.
Ну а в качестве фреймворка можно много чего взять: JSF, Tapestry, Wicket
и им подобные делают компонентную модель страницы. Velocity, чистый JSP
— позволяют делать шаблоны HTML-кода (иногда это тоже полезно).
Есть еще всякие XML-based решения типа Apache Cocoon — иногда может быть
полезно.
Здравствуйте, toxin, Вы писали:
T>Не согласен.
С тем что это сырой продукт не готовый к промышленому использованию? Мои аргументы по ссылке выше. А ваши где?
T>GWT может очень даже подойти на замену небольших десктопных клиентов и аплетов.
Как это кореллирует с исходным вопросом?
T>Главное придерживаться правила, что все должно быть применено по месту.
"Кесарю кесарево", спасибо мы в купсе
Здравствуйте, _Oleg_, Вы писали:
_O_>GWT позволяет довольно удобно и быстро разработать тонкий клиент, с довольно таки "богатым" наполнением.
Тот же вопрос что и к предыдущему оратору. Какое это иммет отношение к исходному вопросу?
_O_>Смотрим gmail и Google maps
Чего на них смотреть? Они не написаны на GWT.
Здравствуйте, Blazkowicz, Вы писали:
T>>Не согласен. B>С тем что это сырой продукт не готовый к промышленому использованию?
Не согласен с утверждением что GWT — это суксь. B> Мои аргументы по ссылке выше. А ваши где?
Моим аргументом может быть то, что я его ел Уже 2 месяца участвую в разработке проекта, где в качестве View использован GWT. И ничего все живы. На начальном этапе пришлось конечно приложить зубило и какую-то мать, но в данный момент все работает очень даже стабильно.
Единственный минус, который хотелось бы отметить, это довольно большой размер получаемого яваскрипта, но и сама апликуха у нас не маленькая, поэтому я и сказал, что для чего-то небольшого GWT очень даже годиться.
T>>GWT может очень даже подойти на замену небольших десктопных клиентов и аплетов. B>Как это кореллирует с исходным вопросом?
С исходным никак, это было замечание на утверждение, что GWT — это суксь.
T>>Главное придерживаться правила, что все должно быть применено по месту. B>"Кесарю кесарево", спасибо мы в купсе
Я в этом не сомневался.
Здравствуйте, JFreeM, Вы писали:
JFM>Здравствуйте, Blazkowicz, Вы писали:
JFM>... А>>>Struts: выглядит привлекательно B>>Прошлый век. JFM>...
JFM>Скажите, а какой же тогда фреймворк использовать, чтобы получалось простое в реализации и поддержке, наглядное приложение. JFM>То есть где еще так сильно разделено(и весьма удобно на мой взгляд) представление и контроллер?
Если уж брать MVC то тогда лучше использовать тот же spring-mvc. Он отличается от Струтс тем что вам ненадо писать ActionForms а можно отображать на страницах свои POJO. Обладает мошьным механизмом биндинга полей страницы на проперти POJO. Да и концепция конфигурирования , как мне кажется, в спринг более прозрачная, чем в Struc. В Strutc в начале без бутылки не разберешься.
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, _Oleg_, Вы писали:
_O_>>GWT позволяет довольно удобно и быстро разработать тонкий клиент, с довольно таки "богатым" наполнением. B>Тот же вопрос что и к предыдущему оратору. Какое это иммет отношение к исходному вопросу?
Исходный вопрос:
Начинаем новый небольшой WEB-проект:
десяток страниц; в основном поиск, создание, удаление (сложных) Hibernate-обьектов.
...
Hibernate — это уже решение проблемы внутри проекта, а не условие задачи проекта.
Hibernate никто не возбраняет применить на серверной стороне.
Здравствуйте, _Oleg_, Вы писали:
_O_>Hibernate — это уже решение проблемы внутри проекта, а не условие задачи проекта. _O_>Hibernate никто не возбраняет применить на серверной стороне.
Что-то вы из view в DAO и обратно. Для чего так скакать? У автора достаточно большой набор бинов. Как GWT поможет замапить эти бины на UI?
Здравствуйте, toxin, Вы писали:
T>Моим аргументом может быть то, что я его ел Уже 2 месяца участвую в разработке проекта, где в качестве View использован GWT. И ничего все живы. На начальном этапе пришлось конечно приложить зубило и какую-то мать, но в данный момент все работает очень даже стабильно.
Я его тоже ел, хотя и не в комерческих масштабах. Огреб кучу граблей, пока не столкнулся с одной почит непреодолимой проблемой в интеграции своих JS в GWT приложение.
T>Единственный минус, который хотелось бы отметить, это довольно большой размер получаемого яваскрипта, но и сама апликуха у нас не маленькая, поэтому я и сказал, что для чего-то небольшого GWT очень даже годиться.
К сожалению это не единственный минус. Кроме этого я что-то не понял логики в утверждении выше. GWT->Много скрипта, но у нас большое приложение поэтому много скрипта не так важно. И тут почему-то вывод, что для небольшого приложения GWT годится.
B>>Как это кореллирует с исходным вопросом? T>С исходным никак, это было замечание на утверждение, что GWT — это суксь.
Ну, мог бы в топике ссылук на котоый я давал и поопровеграьт все мои доводы. А то пока мы видим только один аргумент — "я попробовал у меня получилось"
Здравствуйте, Nicht, Вы писали:
N> программист сидит и париться с этим недоязыком под названием XSL.
Вы просто не умеете их готовить (с)
Лично мне стало немного проще работать с XSL, после того как я познакомился с функциональным программированием (в частности Scheme). Конечно, много логики туда не напихаешь... А вот и не нужно В кукуне XSLT, имхо, на нужном месте, а там, где нужно логику позаворотистей — пишем Жаву
Здравствуйте, Gajdalager, Вы писали:
G>Здравствуйте, Nicht, Вы писали:
N>> программист сидит и париться с этим недоязыком под названием XSL.
G>Вы просто не умеете их готовить (с) G>Лично мне стало немного проще работать с XSL, после того как я познакомился с функциональным программированием (в частности Scheme). Конечно, много логики туда не напихаешь... А вот и не нужно В кукуне XSLT, имхо, на нужном месте, а там, где нужно логику позаворотистей — пишем Жаву
А кто спорит?
XSL хорошая весчь, только для того что бы xml переформатировать. Для этого он и сделан был. Но то использование, что писали здесь ранее, это мягко говоря не поле деятельности XSL.
Причем самое смешное, что как раз опыт с таким использованием у меня был. И я на себе испытал, во что превращается эти xsl преобразования после n-ой итерации и изменения техзадания. Это был тихий ужас.
Здравствуйте, Blazkowicz, Вы писали:
B>Я его тоже ел, хотя и не в комерческих масштабах. Огреб кучу граблей, пока не столкнулся с одной почит непреодолимой проблемой в интеграции своих JS в GWT приложение.
Пока не возникало желания интегрировать рукописный JS. Все проблемы решаем средствами исключительно самого GWT.
B>К сожалению это не единственный минус. Кроме этого я что-то не понял логики в утверждении выше. GWT->>Много скрипта, но у нас большое приложение поэтому много скрипта не так важно. И тут почему-то вывод, что для небольшого приложения GWT годится.
Да, извиняюсь, немного коряво выразился. Постараюсь быть более последовательным. Приложение создается от начала и до конца средствами GWT никаких побочных самописных HTML'ин и рукописного яваскрипта не используется. Размер яваскрипта получается настолько большим (уже ~600kb), что уже возникают мысли о разделении приложения на несколько более мелких, с потерей некоторой функциональности и необходимости синхронизации всего этого дела между собой. Отсюда и вывод, что для небольшого веб приложения (что быстро дернули с сервера, красиво показали, отредактировали(заавтокомлитили), проверили правильность ввода, сохранили на сервере, поздравили пользователя, уложились в 50кб яваскрипта) оно еще годится, но для большего нужно использовать уже другие средства. B>Ну, мог бы в топике ссылук на котоый я давал и поопровеграьт все мои доводы. А то пока мы видим только один аргумент — "я попробовал у меня получилось"
Не сочти за наезд, но все же. Твое сообщение из того топика, по сути самый убойный аргумент:
Ну и окончательное разочарование:
скрипт GWT каким-то образом фильтрует перехватывает то ли все события то ли ещё что. Разбираться лень. Но код JS на странице куда заинтегрированы GWT виджеты перестаёт работать. Думаю что обработчики событий не вызываются.
аргумент — "Я попробовал у меня НЕ получилось"
Резюме от вышенаписанного:
Я никого не агитирую за использование GWT (мне Гугль за это денег не платит).Даже наоборот
. Я просто против однозначного ярлыка "суксь" в отношение GWT. И у меня только один аргумент — "оно работает", а как говорится в теории автоматического управления — "любая работающая система оптимальна по какому либо показателю"
Здравствуйте, Blazkowicz, Вы писали:
B>Здравствуйте, _Oleg_, Вы писали:
_O_>>Hibernate — это уже решение проблемы внутри проекта, а не условие задачи проекта. _O_>>Hibernate никто не возбраняет применить на серверной стороне.
B>Что-то вы из view в DAO и обратно. Для чего так скакать? У автора достаточно большой набор бинов. Как GWT поможет замапить эти бины на UI?
Никак, обширное поле для ручной кодогенерации
Здравствуйте, Blazkowicz, Вы писали:
B>Комбинации которые мы применяем это: B>Tapestry + Spring IoC и там стоко всего полезного не перечислить. B>Spring MVC + Velocity если UI не так много, я чаще склоняюсь именно к этой комбинации,
А что вы посоветуете для java1.4.2? К чему бы вы склонились?
Здравствуйте, TheOldMan, Вы писали:
B>>Spring, на сколько я знаю, совместим с Java 1.4
TOM>Spring, пожет успешно использоваться без AOP (Java 1.4 же не поддерживает нотаций)?
Аннотаций, а не нотаций. По-моему в спринге их банально нет. Не могу точно сказать за последнюю версию её ещё не сморел.
А в Spring AOP он через AspectJ кажись реализован.
Здравствуйте, Blazkowicz, Вы писали:
B>Аннотаций, а не нотаций.
Спасибо
B>По-моему в спринге их банально нет. Не могу точно сказать за последнюю версию её ещё не сморел. B>А в Spring AOP он через AspectJ кажись реализован.
Здравствуйте, Blazkowicz, Вы писали:
TOM>>Spring, пожет успешно использоваться без AOP (Java 1.4 же не поддерживает нотаций)?
B>Аннотаций, а не нотаций. По-моему в спринге их банально нет. Не могу точно сказать за последнюю версию её ещё не сморел.
Срочно смотреть. Вообще немного добавили, чисто для декларации транзакционных методов (@Transaction), для указания того, что проперти должен быть обязательно заиньекчен
(@Required) и еже стереотипный маркер @Repository, типа для пометки DAO-классов. Вроде юзается, если ДАО, например, реализован не через спринговые теплейты, и кидается исключениями реализации (ну там всяки HibernateException и так далее). Так вот спринг автоматом будет конвертировать эти исключения в свои из dao пакета, если класс в котором реализован метод помечен этим маркером. Больше пока ничего не припомню, но моя бы воля — я бы понавтыкал туда аннотаций.
Все это работает только под пятой жабой, но и на четветной по старинке но без всего этоготоже заведется.
B>А в Spring AOP он через AspectJ кажись реализован.
Нет. Он там все-таки через динамические прокси реализован (или сановские или CGLIB-овские или какие захоцца, но писать самому).
Они добавили и даже сделали его основным синтаксис поинткатов из AspectJ (немного ограниченый), а так же сделали поддерку ApsectJ 5.0 аннотаций. Ну, т.е. например сейчас можно просто написать класс
@Aspect
public class SomeAspect {
@Before("execution(* SomeService.someMethod(someParam, ..))")
someBeforeAdvice(SomeClass someParam) {
//do something;
}
}
и добавить бин этого класса в контекст, и аспект подцепиться и начнет вейвиться куда надо. Для 1.4 осталась поддержка конфигурябельности аспектов/адвайсов/поинкатов через xml.
Здравствуйте, Lucker, Вы писали:
B>>А в Spring AOP он через AspectJ кажись реализован. L>Нет. Он там все-таки через динамические прокси реализован (или сановские или CGLIB-овские или какие захоцца, но писать самому).
Я знал что вопрос по аспектам в спринге ты не пропустишь.
Re[4]: Новый WEB-проект
От:
Аноним
Дата:
26.11.06 09:01
Оценка:
Здравствуйте, Аноним, Вы писали:
B>>так может XML-XSLT тогда то же нафиг? Делов-то для пары десятков бинов CRUD запросы наколбасить и в JSP связать с формами!
А>в отличии от струтсов и прочей дребедени это даёт сокращение кода и разделение компонентов приложения.
А>Соединиться с базой, сделать запрос и отдать его в хмл — в пределах 100 строк кода. Преобразовать по XSL-шаблону и отдать браузеру — ещё 100 строк.
А>Получается запросы отдельно, шаблоны отдельно.
А>Но надо знать SQL, XSL и HTML.
Стоп. А логика domain model куда пойдет? Сюда
Соединиться с базой, сделать запрос и отдать его в хмл — в пределах 100 строк кода
или сюда
Преобразовать по XSL-шаблону и отдать браузеру — ещё 100 строк.
Здравствуйте, Аноним, Вы писали:
B>>Отдать запрос в XML? Кстати, отличная оценка трудозатрат проекта — 100 строк здесь, 100 строк там. Надо взять на вооружение. И все это без постановки задачи. Зачет!
А>постановка задачи:
А>- взять из HttpServletRequest переменные, составить по ним запрос к базе, выполнить и преобразовать результат в хтмл. Трудозатраты — примерно 100 строк кода. А>- взять с диска XSL-файл, преобразовать по нему данные в хмл и результат отдать в HttpServletResponse. Трудозатраты — примерно 100 строк кода
чо т я сомневаюсь в 100 строчках кода для жабы и вот почему:
1) валидацию сделать надо
2) обработку ошибок надо
3) запрос построить (желательно от sql inject обезопасица)
4) из результатов собрать объекты
5) объекты сериализовать в xml
Вот у меня есть объект Заказ с 10 полями и листом Позиций по 7 полей. Нужно написать редактирование всего этого барахла.
Далее.
Тормознутость xslt притча во языцах. Структурированность также не на высоте. В более менее больших проектах количество xslt шаблонов превосходит сотни штук. При отстутствии нормальных редакторов (хотя я может и не видел) рефакторинг и просто использование этой тучи темплейтов печалит
Лобовое решение первой задачи в сравнении с хибернейтом просто отдыхает. Вот где не больше 20 строчек. А если сюда добавить тейпестри или другой нормалььный компонентный фреймворк то ....
Решение задачи вывода на тейпестри преимущест по размеру кода конечно не даст. Ну за исключением всяких удобных валидаций и т.д.
Ждите продолжения трансляции
сделан именно так. Самый большой класс меньше 300 строк.
Re[7]: Новый WEB-проект
От:
Аноним
Дата:
27.11.06 18:00
Оценка:
Здравствуйте, Безон, Вы писали:
Б>Далее. Б>Тормознутость xslt притча во языцах. Структурированность также не на высоте. В более менее больших проектах количество xslt шаблонов превосходит сотни штук. При отстутствии нормальных редакторов (хотя я может и не видел) рефакторинг и просто использование этой тучи темплейтов печалит
А) Рефакторинг XSLT это нонсенс. XSLT функциональный язык, строится на шаблонах, нужно что-то поправить — переписал шаблон и все. Куда там можно влепить рефакторинг, к примеру "Extract method" или "Replace Data with Object"?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Безон, Вы писали:
Б>>Далее. Б>>Тормознутость xslt притча во языцах. Структурированность также не на высоте. В более менее больших проектах количество xslt шаблонов превосходит сотни штук. При отстутствии нормальных редакторов (хотя я может и не видел) рефакторинг и просто использование этой тучи темплейтов печалит
А>А) Рефакторинг XSLT это нонсенс. XSLT функциональный язык, строится на шаблонах, нужно что-то поправить — переписал шаблон и все. Куда там можно влепить рефакторинг, к примеру "Extract method" или "Replace Data with Object"?
А если переименовать? Сделать find usages, ну и мало ли какие заморочки могут быть. С локализацией опять таки беда. Ну и самая большая беда это производительность! Что можете сказать по этому поводу?
А>Б) Oxygen oxygenxml.com редактор с поддержкой рефакторинга XSLT, правда таковой там сводится к двум операциям:http://www.oxygenxml.com/demo/XslRefactoring/XSLRefactoring.html
То есть помимо идеи мне нужно юзать еще один редактор?
Здравствуйте, sss1024, Вы писали:
S>чего-то по работе показать конечно нет смысла но вот мой опенсорсный проект
S>http://www.javakonkurs.ru/show_project.screen?project_id=111
S>сделан именно так. Самый большой класс меньше 300 строк.
Посмотрел на голых jsp я написал бы короче и понятнее. Обработка запроса усложнена на порядки. Управляющие конструктции разбросаны по всему коду. Чтобы не быть голословным:
Для того чтобы понять кто обработает http запрос нужно:
1) Посмотреть в web.xml мэппинг и вытащить оттуда название сервлета:
2) Вытащить оттуда класс сервлета
3) В сервлете увидеть xsl (презентацию нашли)
4) Где генерица xml придеца еще поискать по коду.
И это для такой простейшей задачи.
+ вы помоему совершенно не разбираетесь в особенносях работы xslt. Например:
1) Каждый раз в компилируете темплейт создавая новый xslt engine
2) Генерируете xml в виде строки и заставляете xsl парсить его в DOM.
3) генерируете тэг xml-stylesheet но при трансформер его не использует.
4) зачем то исходники xslt доступны извне, не удивлюсь если трансформер тянет их через вебсервер (ломало разбираца)
Короче я бы постеснялся выкладывать такой проект на конкурс. По нему же очевидно что вы находитесь на уровне джуниор девелопера, а этот проект поделка уровня курсовой в институте.
Б>Для того чтобы понять кто обработает http запрос нужно: Б>1) Посмотреть в web.xml мэппинг и вытащить оттуда название сервлета: Б>2) Вытащить оттуда класс сервлета Б>3) В сервлете увидеть xsl (презентацию нашли) Б>4) Где генерица xml придеца еще поискать по коду. Б>И это для такой простейшей задачи.
— не нужно этого всего. Есть хмл на выходе, есть хсл-шаблон.
Б>+ вы помоему совершенно не разбираетесь в особенносях работы xslt. Например:
о как
Б>1) Каждый раз в компилируете темплейт создавая новый xslt engine Б>2) Генерируете xml в виде строки и заставляете xsl парсить его в DOM. Б>3) генерируете тэг xml-stylesheet но при трансформер его не использует.
— это ж мой проект.
Б>4) зачем то исходники xslt доступны извне, не удивлюсь если трансформер тянет их через вебсервер (ломало разбираца)
как раз затем чтоб их легко можно было посмотреть/поменять
Б>Короче я бы постеснялся выкладывать такой проект на конкурс. По нему же очевидно что вы находитесь на уровне джуниор девелопера, а этот проект поделка уровня курсовой в институте.
Здравствуйте, sss1024, Вы писали:
Б>>Короче я бы постеснялся выкладывать такой проект на конкурс. По нему же очевидно что вы находитесь на уровне джуниор девелопера, а этот проект поделка уровня курсовой в институте.
S>да-да S>8)
Хотел, камраду Безон-у минус поставить. Но посмотрел прокт и почему-то почувствовал солидарность с его высказыванием.
Здравствуйте, Аноним, Вы писали:
А>о да, например такого же плана проект
А>http://www.dcon.com.br/db2jmin/
А>но на жсп и без ер-связей. Можно сравнить насколько просто в нём что-то поменять.
А я всегда думал что нужно ориентироваться на лучшее
Здравствуйте, Flamefork, Вы писали:
А>>>Б) Oxygen oxygenxml.com редактор с поддержкой рефакторинга XSLT, правда таковой там сводится к двум операциям:http://www.oxygenxml.com/demo/XslRefactoring/XSLRefactoring.html Б>>То есть помимо идеи мне нужно юзать еще один редактор?
F>То есть XSLT плохой потому, что его нельзя рефакторить в IDEA??
Лично для меня и поэтому тоже. А насчет других недостатков я уже писал. XSLT был популярен в 2000-2001 годах когда еще не было нормальных компонентных фрейворков, и сейчас меня фиг заставишь использовать его для презентейшн лейера. Слишком мало он дает и слишком много требует.
ЗЫ. Для конвертации xml из внешних форматов во внутренние я его с удовольствием использую.
Здравствуйте, Аноним, Вы писали:
А>можешь дать ссылку
На проект написаный прямыми руками? Я думаю их не мало, поищите...
-----
Re[15]: Новый WEB-проект
От:
Аноним
Дата:
28.11.06 09:58
Оценка:
Здравствуйте, Безон, Вы писали:
Б>Здравствуйте, Аноним, Вы писали:
А>>можешь дать ссылку Б>На проект написаный прямыми руками? Я думаю их не мало, поищите...
Здравствуйте, Безон, Вы писали: А>>Б) Oxygen oxygenxml.com редактор с поддержкой рефакторинга XSLT, правда таковой там сводится к двум операциям:http://www.oxygenxml.com/demo/XslRefactoring/XSLRefactoring.html Б>То есть помимо идеи мне нужно юзать еще один редактор?
Ну можно купить в виде плугина для Эклипса, если религия позовляет
Если говорить про верси 1.x то да, но Struts 2 это как раз новый век , по сути WebWork (на Webork — считай на Struts2 например написаны уважаемые тут Jira и Confluence)
Здравствуйте, jook, Вы писали:
J>Если говорить про верси 1.x то да, но Struts 2 это как раз новый век , по сути WebWork (на Webork — считай на Struts2 например написаны уважаемые тут Jira и Confluence)
Про Web Work от многих слышал такое "мне говорили что тоже круто, но сам не пробовал". То есть мне даже пока не повезло увидеть тех кто говорит что "круто".
Не знал что они мержатся со Struts. Это, кстати, показывает на сколько Struts 1 устарел. За новость спасибо.
Сам-то пор Web Work что хорошего сказать можешь? Примеры приводить не надо. И на голых JSP есть матерые приложения. И в Jira есть баги.
Здравствуйте, Безон, Вы писали: Б>Ну и самая большая беда это производительность! Что можете сказать по этому поводу?
Что и всегда, что учиться надо. "Учиться, учиться и еще раз учиться" как завещал Великий. Если у людей тормозят XSLT-преобразования, то будут тормозить и жабий код, и обращения к Oracle, это ошибка в ДНК. А проще банальное отсутствие знаний и опыта. Знаний структур данных и алгоритмов их обработки. Трехтомник они прочитали? Если нет (я тоже не прочитал) то о чем с ними говорить? Вот http://www.stylusstudio.com/xslt_xquery_profiler.html буквально надысь смотрел демо, там переписыванием XSLT удалось снизить время обработки XML документа с 23 сек, до 0,37. Всего лишь применили голову и знания XSLT. А вы говорите "XSLT тормозной"
Б>XSLT был популярен в 2000-2001 годах когда еще не было нормальных компонентных фрейворков, и сейчас меня фиг заставишь использовать его для презентейшн лейера. Слишком мало он дает и слишком много требует.
Возможно. Если уже есть специальные молотки для забивания гвоздей, то разумнее забивать их ими, а не микроскопом. Никто не спорит.
Б>То есть помимо идеи мне нужно юзать еще один редактор?
Ну, IDEA сама по себе хороша, думаю, в нее если еще не встроили рефакторинг XML и XSLT, то встроят двумя-тремя легкими движениями руки. К тому же если бы вы юзали Eclipse, то Oxygenxml существует в виде плагина для Eclipse (что неудивительно).
Re[3]: Новый WEB-проект
От:
Аноним
Дата:
29.11.06 17:07
Оценка:
Здравствуйте, jook, Вы писали:
А>>>Struts: выглядит привлекательно B>>Прошлый век.
J>Если говорить про верси 1.x то да, но Struts 2 это как раз новый век ,
Четал, что в Struts 2 они пытаются догнать JSF, подразумевалось, что JSF это наилучший фреймворк на сегодня
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Безон, Вы писали: Б>>Ну и самая большая беда это производительность! Что можете сказать по этому поводу?
А>Что и всегда, что учиться надо. "Учиться, учиться и еще раз учиться" как завещал Великий. Если у людей тормозят XSLT-преобразования, то будут тормозить и жабий код, и обращения к Oracle, это ошибка в ДНК. А проще банальное отсутствие знаний и опыта. Знаний структур данных и алгоритмов их обработки. Трехтомник они прочитали? Если нет (я тоже не прочитал) то о чем с ними говорить? Вот http://www.stylusstudio.com/xslt_xquery_profiler.html буквально надысь смотрел демо, там переписыванием XSLT удалось снизить время обработки XML документа с 23 сек, до 0,37. Всего лишь применили голову и знания XSLT. А вы говорите "XSLT тормозной"
Это все правильно, однако если долго и нудно оптимизировать грузовик, он все равно лучше спорткара не поедет. Задача знаете ли другая
Б>>XSLT был популярен в 2000-2001 годах когда еще не было нормальных компонентных фрейворков, и сейчас меня фиг заставишь использовать его для презентейшн лейера. Слишком мало он дает и слишком много требует.
А>Возможно. Если уже есть специальные молотки для забивания гвоздей, то разумнее забивать их ими, а не микроскопом. Никто не спорит.
Б>>То есть помимо идеи мне нужно юзать еще один редактор?
А>Ну, IDEA сама по себе хороша, думаю, в нее если еще не встроили рефакторинг XML и XSLT, то встроят двумя-тремя легкими движениями руки. К тому же если бы вы юзали Eclipse, то Oxygenxml существует в виде плагина для Eclipse (что неудивительно).
К сожалению я не юзая эклипс
-----
Re[11]: Новый WEB-проект
От:
Аноним
Дата:
30.11.06 17:45
Оценка:
Здравствуйте, Безон, Вы писали:
Б>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, Безон, Вы писали: Б>>>Ну и самая большая беда это производительность! Что можете сказать по этому поводу?
А>>Что и всегда, что учиться надо. "Учиться, учиться и еще раз учиться" как завещал Великий. Если у людей тормозят XSLT-преобразования, то будут тормозить и жабий код, и обращения к Oracle, это ошибка в ДНК. А проще банальное отсутствие знаний и опыта. Знаний структур данных и алгоритмов их обработки. Трехтомник они прочитали? Если нет (я тоже не прочитал) то о чем с ними говорить? Вот http://www.stylusstudio.com/xslt_xquery_profiler.html буквально надысь смотрел демо, там переписыванием XSLT удалось снизить время обработки XML документа с 23 сек, до 0,37. Всего лишь применили голову и знания XSLT. А вы говорите "XSLT тормозной" Б>Это все правильно, однако если долго и нудно оптимизировать грузовик, он все равно лучше спорткара не поедет. Задача знаете ли другая
Это то же самое что сказать, что xDBF на selectах с joinами обгонит по скорости выборки Oracle. Что-то мне подсказывает, что Oracle долго и нудно оптимизировали свой грузовик и он порвет любой DBF и MySQL на куски
Аноним 670 wrote: > Это то же самое что сказать, что xDBF на selectах с joinами обгонит по > скорости выборки Oracle. Что-то мне подсказывает, что Oracle долго и > нудно оптимизировали свой грузовик и он порвет любой DBF и MySQL на куски
Фига.
На простых запросах (взять строку по ключу) всех порвет BerkeleyDB.
MySQL на простых запросах тоже часто опережает Oracle.
B>Сам-то пор Web Work что хорошего сказать можешь? Примеры приводить не надо. И на голых JSP есть матерые приложения. И в Jira есть баги.
WebWork замечательно интегрируется со Spring. даже со вторым.
Spring даже рекомендован там в качестве IoC контейнера. Аспекты тоже прекрасно работают.
Я пока не очень знаком с Tapestry, поэтому не могу привести их подробное сравнение.
В WebWork мне больше понравились валидаторы. Если по каким-то причинам встроенные валидаторы не подходят, можно поместить соответствующую логику в метод validate().
В WebWork, как и в Tapestry, активно используется OGNL.
Для представления можно юзать JSP или Velocity, однако рекомендован FreeMarker.
Tapestry, думаю, подходит для более динамичных приложений. WebWork можно рассматривать в качесве альтернативы, например, Spring MVC