Pull to refresh

Comments 81

Спасибо, переделал в png.
Было бы неплохо добавить в приложение модель, раз уж это MVC:-)
К сожалению я успел проработать только первую часть руководства из шести. И мне она показалась достаточно законченной для того, чтобы показать её отдельно.

Работа с моделью, БД рассматривается в мануале в следующих главах. Дойдут руки — напишу :)
начало хорошее.
а вот дальше, когда надо изменить схему роутинга, использовать разные классы spring-овских контроллеров, добавить больше логики приложения и отображения, подключить БД…
вот тут вопросов гораздо больше )
думаю начинающим это очень поможет.
Тест у вас какой-то странный — использует junit 3 вместо junit 4.
Не пойму, где вы это увидели. Вроде 4.4
В junit 4 не надо расширять TestSuite, а тестовые методы помечаются аннотацией @Test. Eclipse с junit'ом может вас и поняли, но так поступать не принято.
Это ж устаревшая модель, сейчас надо уже @Controller использоваться
Согласен.Может такой же пример только с полностью с аннотациями.
Щелкаем правой кнопкой на рабочем столе, создаём текстовый документ и пишум туда:



Hello :: Spring Application


Hello — Spring Application
Greetings.



переименовываем расширение в HTML.

не вижу никакой разницы! тогда зачем платить больше? (с)
блин, теги удалились все. Прошу прощения :)
Spring и Java-фреймворки вообще — для написания строгих компилируемых приложений, отсюда и столько конфигурационных файлов и лишних, на ваш взгляд, телодвижений.
О! Пойдёте к нам генератором отчётов работать? Насколько в среднем вы быстрее FastReports отчёты пишете?
А вы не знаете, сколько в среднем простых запросов (например, генерация и вывод формы) выполняет в секнуду приложение на этом фреймворке? Есть какие-то цифры?
как напишите, столько и будет :)
Spring создан для более сложных вещей, чем генерация банальных форм
Не уловил. Spring — архитектурное решение, и выигрыш тут в возможности расширения и прочих плюшках.

Хотите быстродействия пишите сайты на C.
Я вас не понимаю. Если вам здесь не важна производительность, почему бы не взять Руби, с его приятным синтаксисом?

Си использовать невыгодно, так как на нем невозможно (практически) нормально написать что-то сложнее хелловорда: автоматическое освобождение памяти, операции со строками и прочим, все приходится писать с нуля.

(Если вы хотите привести в пример например ядро Линукса, как программу сложнее хэлловрлда, учтите, что оно нахоится в ужасном состоянии, код труднопонятен, там нет даже объектов и исключений, а трудоемкость и стоимость поддержки и разработки тоже высока).
Может для криворуких и сложно что-то написать на Си, но на нем написано громадное количество приложений и не только операционных систем, но и скажем, систем для сбора и предоставления финансовой информации.
Ну код линукса только с виду ужасен. А вообще системный софт не так уж и сложно писать по некоторым причинам. Например там код во многих местах регулярный по структуре, например драйвера.

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

И да, быстрые веб приложения можно писать и на java и на ruby. Но на Ruby все же в большинстве случаев поудобнее=) Хотя некотрые вещи я бы написал все же на java…
Spring — это framework.

C — язык программирования.

Как их можно сравнивать?
Ну я про то, что в любом подходе важно соотношение быстродействия/удобства разработки/удобства поддержки и еще массы параметров.

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

С другой стороны используя фрэймворки и плюшки языков (допустим Руби и Рельсы) я быстро разработаю весь функционал, но работать будет медленней чем C-шный аналог.
Единственное, почему может проще поддерживать приложение написанное на (PHP, Ruby и прочим), так это то, что на них сейчас больше программистов вот и все.

Фрэймворки и прочие плюшки написаны людьми, это я к тому, что все это можно написать и на Си, притом уже такие штуки есть.

Можете спросить зачем?

Можно даже взять, не Си, а PHP, фрэймоврков под него хоть отбавляй. Но зачем мне они? Если мне нужен только какой-то определенный функционал и я не хочу тащить огромный груз кода. Да, я потрачу немного времени на разработку, но зато для всех последующихих проектов у меня будет свой код, в котором не будет ничего лишнего.
Кода тестировали web приложение на java + spring + hibernate + tomcat + gwt
Производительность измерялась в сотнях динамических страниц(точнее запросов с динамически формируемым ответом) в секунду — точнее сказать не могу, давно это было.
Желез было 2х4 xeon 16G RAM

зы: По ощущениям того тестирования я ожидал как минимум на порядок меньше.
Поздно, но всё же.
На очень простых запросах (авторизация/acegi/ + выдача формы логина в случае облома)

$ ab -t 10 -c 10 127.0.0.1:8080/anon/ | fgrep Requests
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Finished 16500 requests
Requests per second: 1649.89 [#/sec] (mean)

это на P4-3200
Строчки, где «requests» с мелкой буквы — stderr, а не баг grep-а :)
Спасибо, примерный порядок величины понятен. По моим наблюдениям, примерно того же порядка цифры у PHP (у меня на Intel Core 2 Duo, 2×1.8 Ггц 130 запр/сек с Апачем и примерно 400-500 без). При использовании тяжелых фреймворков, понятно, отставание было бы больше.
UFO just landed and posted this here
Ну для этого есть Grails (htttp://grails.org), который использует тот же Spring^ но конфигов минимум и пишутся они на Groovy. (В итоге даже полаконичние чем ваш пример на Питоне).

Если интересно — я писал пост про этот фреймворк habrahabr.ru/blogs/java/75774/
ой, с этим я согласен, тонны xml кода!!!
А теперь навесьте сюда проверку по схеме, трансформацию в HTML и генерацию сущностей. Ну как, получилось?
UFO just landed and posted this here
Загляните во внутренности вашего «замечательного» Yii и попробуйте не испугаться. Особенно, посмотрев как там сделаны события и «behaviours».
UFO just landed and posted this here
Извартная реализация этих самых событий и behaviours через __get/__call/__set (это же неэффективно, и код получается запутанный, и выглядит извратно как-то).
Для трансформации xml в html я вообще не напишу ни строчки кода. А напишу XSLT шаблон. Сущности сгенерю при помощи опять же XSLT. При этом написав XSD схему я буду всегда уверен, что мне не подсунут кривой XML.
В JSON нет такой мощи, извините.
А зачем конфиги в хтмл при помощи xlst превращать???
Спасибо, как раз хотел попробовать что-то новое.
UFO just landed and posted this here
Я, кстати, вчера выложил пример небольшого уже работающего приложения на Spring 3 и Hibernate. Если вам интересно, могу сюда ссылку дать.
Само приложение — сырое, и кое что там даже и не работает, но дает понять как двигаться дальше.
давайте, оя интересно
много букв из ряда «как сделать», но почти нет букв на тему «зачем это делаем и почему делаем так».

вот например, вы пишете:
«Для развертывания приложения на сервере воспользуемся ant-скриптом (для начала работы с Ant достаточно прочитать заметку о нем в Википедии). Скрипт будет содержать цели для компиляции, построения и переноса приложения.» и приводите антовый скрипт, не поясняя зачем и что вы делаете и почему именно так. Ну разве начинающий поймёт? Он скопирует, вставит и будет работать, однако не врубится в суть и смысл.

Философия другая. Если человек уже начал изучать спринг — в его интересах самому это все разбирать. Он должен хотеть. Не хочет знать что такое ант — его проблема. Не хочет разбираться зачем ему этот скрипт — его проблема. Это все мое скромное мнение.
А вот как раз таких туториалов, где все собрано step-by-step — очень мало.
Я согласен, что статься написана достаточно эскизно, опущен момент установки и Томката, и Eclipse, и плагина к Эклипсу. Согласитесь, тот, кому оно нужно, разберется с мелкими деталями, лентяя и талмуд не спасет :)
причём тут установка таких простых вещей? хотя несомненно, если при разработке важны какие-то пути, то нужно об этом сообщить.

но дело не в установке, а в пояснении того, что делаете. Лентяй и по вашему мануалу ничего не изучит.

Такое ощущение, что вы написали статью для отписки. «напишу так, а поймут или нет — не важно. кто захочет — разберётся.»
Такое «простое» веб-приложение отбивает всякое желание изучать Spring.
попробуйте простое приложение на GWT+Guice+Gin+MVP освоить, тогда точно все отвалится :)
Да уж) Я думал на зенде как-то многословно… А тут такое)))
Статья из разряда, как запустить HelloWorld!
И использование аннотаций, как мне кажется, намного лучше показывает красоту spring mvc.
+ Может сразу будете использовать Maven?!
нда, это яркий пример, что если сильно хочется, то красоту можно увидеть и на помойке :))
Не хочу поднимать флейм, но зачем все это? Неужели кто-то в здравом уме будет все это использовать, писать многокилометровые XML-и только ради того, чтобы прикоснуться к миру J2EE? Какая экономическая целесообразность? Ведь намного проще и быстрее (а значит и выгоднее) использовать легковесные фреймворки — тот же Grails (если уж так хочется джаву), RoR, Django и т.п.

Мне просто реально интересно. Знаю, что люди используют, но не понимаю, почему. Скажу сразу — Spring пытался использовать, но дальше того примера, который был приведен, особо и не ушел — мне мое время жалко, и я понял, что это не мое.
это простой способ поднять карму и не надо тут искать глубоких причин
мелковато и толстовато
Согласен, J2EE тяжеловесная штуковина. Но я на этом пишу. Работа такая. А теперь вопрос: Ты начинаешь писать свой проект. Знаешь только J2EE, тебе быстрее писать на то, что ты знаешь, или с нуля начинать учить django и т.д.?
Гы, быстрее выучить django и потом быстренько сделать. Пример из жизни — мне надо было написать одно сетевое приложение. Я очень хорошо знал дотнет, и мог быстро на нем все слабать (скажем за месяц). Но я решил сделать приложение кроссплатформенным, поэтому скрипя сердце взялся за Python. В итоге я за две недели (первые 3-4 дня на изучение питона) написал это приложение. Почему? Потому что на нем писать быстрее, проще, и есть удобные и легкие в использовании библиотеки.

Думаю, аналогия понятна — лучше день потратить, а потом долететь. На J2EE ну реально все очень долго разрабатывать (если конечно, это не однотипные проекты с наработками, которые просто перекидываются из проекта в проект). Хотя саму джаву я уважаю, но веб-разработка под ней — это тихий ужас (если, конечно, не использовать легковесные фреймворки).
Я думаю, если человек после прочтения статьи попробует Spring и сделает вывод использовать Джанго, то это тоже результат. Всё познаётся в сравнении.
Когда будете писать кластерное решение с распределенными транзакциями — тогда и поймёте, что легковесные фреймворки можно использовать не везде.
Вот это я и хотел услышать. Действительно, с распределенными транзакциями я не работал, и те фреймворки, которые я использую, их не поддерживают (насколько я знаю).

А вот насчет кластерных решений не понял. Точнее, я понимаю, что это звучит круто, но без уточнения непонятно о чем речь. Кластер чего? Серверов приложений? Чем обычный load balancer мешает это организовать?
Кстати, Капитан Очевидность сообщает, что Спринг в общем-то никакого отношения к JavaEE не имеет.
Автор просто ступил и написал про использование устаревшей версии фреймворка, устаревшим подходом. На самом деле в новых версиях все менее убого.
Кстати, а вы не в курсе как связать GWT со спрингом? А то у нас никак не получается, столько всего попробовали, и не работает, хоть ты тресни. Может у вас есть какой-то работающий рецепт?
Спасибо за ответ.
Я, кстати, видел этот туториал. Не получилось. Почему? Потому что GWT уже давно не 1.5beta, Spring у нас уже третий стоит, соответсвенно все там не так и не работает.
Один вариант вроде как завели, но разрабатывать в нем — ужас, потому что при изминении кода идет перекомпиляция всего проекта.
Наверно будем ждать времени, когда google сделает интеграцию с maven и/или spring'ом куда более прозрачной.
Не пробовал на третьем, но по идее там все примерно так-же должно быть. Главное это контроллер/резолвер который знает на какой бин какой запрос перебрасывать. Один раз помучаться и работает до следующего major release gwt или spring :)
Да я ж и говорю, вроде как завели, и оно даже в hosted mode работает, но сделал небольшое изминение в ОДНОМ файле — жди пока проект пересоберется. Для разработки же это ну никуда не годится.
Дык для разработки нужно использовать develop mode ;)
Хостед — да, собирает, компилирует java в javascript, создает пермутации для каждого браузера…
А в девелоп-режиме клиентская часть — на лету.
Два с половиной года прошло! Я уже на джаве давно не пишу, эх…
Пост не очень. Сам так когда-то учил спринг. Не правильно все это.

* Используйте maven
* Используйте аннотации

Выглядеть это будет примерно так:
1) mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.mycompany.app -DartifactId=myproject
2) В зависимостях прописываем нужные артефакты, которые найдем на mvnrepository.com.
3) Прописать в web.xml сервлет и context-listener
4) В конеткст файле прописать context:annotation-config и context:component-scan.
5) Там же объявить viewResolver
6) Выполнить mvn eclipse:eclipse и открыть проект в eclipse.
5) Создать класс-контроллер с аннотацией @Controller
6) Создать jsp-шку
7) Закрыть эклипс и написать в консоли mvn clean jetty:run
8) Открыть браузер и радоваться, что не так уж и много телодвижений нужно было сделать

Но! вместо всего этого можно и так: поставить Spring Tool Suite и создать шаблонный проект. Все действия 1-6 сделают за нас=) Нам останется только mvn clean jetty:run

И самое главное.
* По возможности не используйте спринг. Он был как легковесная замена java ee. Но он сильно распух. Теперь я использую google guice.
Спасибо за комментарий. С мавеном и аннотациями напишу уже в следующем посте.
PS И насколько я понял, ещё не все разработчики бросились переходить на мавен.
Да, с мавеном не все хорошо. Инертность мышления… В итоге некоторые плагины к нему заброшеные или глючные. Раньше использовал ant, но как попробовал maven, то понял, что никогда не вернусь на ant, даже при всех недостатках maven. Так что определенно рекомендую.
Не могли бы вы расширить свой комментарий и оформить в виде отдельного поста? Думаю, не я один был бы благодарен :)
Sign up to leave a comment.

Articles

Change theme settings