LINUX.ORG.RU

Spring Framework 2.5


1

0

Компания SpringSource, которая недавно сменила название с Interface21, выпустила новую версию своего OpenSource-фреймворка "Spring". Это один из самых мощных легковесных каркасов для разработки на Java/J2EE.

Основные особенности:

  • поддержка Java 6.0 и J2EE v.5;
  • поддержка аннотаций (начиная от Dependency Injection, заканчивая контроллерами в MVC Spring);
  • заметное улучшение производительности.

Spring лицензируется под Apache Software License, Version 2.0

>>> Подробности

★★★★★

Проверено: Shaman007 ()

Круто. Видел бенчмарки, по которым он сильно тормознее других решений в части Dependency Injection. Интересно как сейчас с этим.

Legioner ★★★★★
()

Ну, держись ! Сейчас набегут всякие любители охаять "быдлофреймворки" и "быдлоязыки". А по мне - Спринг очень правильный и логичный фреймворк. И написание на нем веб-приложений - одно удовольствие. Надо будет новую версию попробовать.

Sentinel
()
Ответ на: комментарий от Sentinel

Ога. они уже близко)) По теме. рад за них, хоть яву и не пользую) пых пых пых...

AiFiLTr0 ★★★★★
()
Ответ на: комментарий от Legioner

> Круто. Видел бенчмарки, по которым он сильно тормознее других решений в части Dependency Injection. Интересно как сейчас с этим.

На JavaLobby есть сравнение 2.5 с Guice.

Chapaev
()
Ответ на: комментарий от Sentinel

>написание на нем веб-приложений - одно удовольствие.

По сравнению с чем? Огласите свой кругозор веб фреймоврков :)

anonymous
()
Ответ на: комментарий от Sentinel

> Ну, держись ! Сейчас набегут всякие любители охаять "быдлофреймворки" и "быдлоязыки".

А вот почему у жабщиков на каждый чих столько buzzword-ов? Почему-то большинство лисперов и питонистов даже слов таких не знают, как IoC и Dependency Injection, но тем не менее, спокойно и легко этими вещами пользуются, где надо.

ero-sennin ★★
()
Ответ на: комментарий от Sentinel

>написание на нем веб-приложений - одно удовольствие

можно ссылочку на простой hello world с формой? а то много слышал про спринг, а посмотреть так и не добрался. чем оно отличается от штрутса и от jsf?

Deady
()
Ответ на: комментарий от ero-sennin

>А вот почему у жабщиков на каждый чих столько buzzword-ов? Почему-то большинство лисперов и питонистов даже слов таких не знают, как IoC и Dependency Injection, но тем не менее, спокойно и легко этими вещами пользуются, где надо.

Давно хочу _нормальный_ IoC-контейнер для Питона со сравнимыми фичами, чтобы можно было экстернализировать конфигурацию.

Где можно его взять, а потом легко пользоваться?

anonymous
()
Ответ на: комментарий от ero-sennin

>Почему-то большинство лисперов и питонистов даже слов таких не знают, как IoC и Dependency Injection, но тем не менее, спокойно и легко этими вещами пользуются, где надо.

Хм, я даже таких слов как лисп и питон не знаю, и при этом спокойно и легко пользуюсь IoC и DI. Зачем мне питон?

>Давно хочу _нормальный_ IoC-контейнер для Питона со сравнимыми фичами, чтобы можно было экстернализировать конфигурацию.

Думаю, придется самому написать, ведь питон же настолько более высокоуровневый и обобщенный язык чем Java, что питонщик средней руки пишет в день код по функциональности превышающий в 10 раз код, написанный за день средним жабистом. Так что за ~недельку ты один аналог Spring я думаю напишешь

anonymous
()

Вчера скачал уже. :) Спринг - самое лучшее, что есть для JEE.

Bohtvaroh ★★★★
()
Ответ на: комментарий от anonymous

> Думаю, придется самому написать, ведь питон же настолько более высокоуровневый и обобщенный язык чем Java, что питонщик средней руки пишет в день код по функциональности превышающий в 10 раз код, написанный за день средним жабистом. Так что за ~недельку ты один аналог Spring я думаю напишешь

+1

anonymous
()
Ответ на: комментарий от anonymous

> Что-то я из вики не понял в чем отличие DI от обычного inheritance?

Ну, батенька, тут уже ничем помочь нельзя, всё в твоих руках. ;-)

Bohtvaroh ★★★★
()
Ответ на: комментарий от anonymous

> Думаю, придется самому написать, ведь питон же настолько более высокоуровневый и обобщенный язык чем Java, что питонщик средней руки пишет в день код по функциональности превышающий в 10 раз код, написанный за день средним жабистом. Так что за ~недельку ты один аналог Spring я думаю напишешь

Хааа-хааа :)) Сразу видно "специалиста" в Spring. Обезьянничать-то не надоело?

Bohtvaroh ★★★★
()
Ответ на: комментарий от ero-sennin

> Почему-то большинство лисперов и питонистов даже слов таких не знают, как IoC и Dependency Injection, но тем не менее, спокойно и легко этими вещами пользуются, где надо.

Вспомним г-на Журдена. Который не подозревал, что говорит прозой. Стремление анализировать используемые средства - признак более высокого уровня развития.

svu ★★★★★
()
Ответ на: комментарий от svu

Buzzword и классификация понятия формально неотличимые. Просто нужно чувство вкуса. А у большинства его обычно нет. Кстати, программистов на Java сейчас именно большинство. Отсюда и проблемы со вкусом.

Davidov ★★★★
()
Ответ на: комментарий от anonymous


> Что-то я из вики не понял в чем отличие DI от обычного inheritance?

Наследование -- это наследование, с всеми его ограничениями (особенно в Java :)
Dependency Injection -- это простая агрегация. Один объект включает в себя другой. Только эта связь устанавливается не в самом объекте, а извне.

anonymous
()
Ответ на: комментарий от svu

> Вспомним г-на Журдена. Который не подозревал, что говорит прозой. Стремление анализировать используемые средства - признак более высокого уровня развития.

Зачем? Не вижу ничего плохого в том, чтобы знать как работают используемые средства. Но если для того, чтобы сделать вещь X надо обязательно узнать как работает вещь Y и вещь Z, а также придумать вагон новых опеределений, то увольте. Это для фанатиков, а не для быстрой разработки приложений.

anonymous
()
Ответ на: комментарий от Davidov

> Buzzword и классификация понятия формально неотличимые

Buzzword - это абстрактная категория, овладевшая умами. Ничего о качестве самой категории ("вкусе") это не говорит.

svu ★★★★★
()
Ответ на: комментарий от anonymous

> Но если для того, чтобы сделать вещь X надо обязательно узнать как работает вещь Y и вещь Z, а также придумать вагон новых опеределений, то увольте

Уволил.

ЗЫ Продемонстрированная позиция - подход не программиста, но дешевого кодера. Программист старается анализировать выполняемую работу. И в этом процессе без абстрактных понятий не обойтись.

svu ★★★★★
()
Ответ на: комментарий от anonymous

>Думаю, придется самому написать, ведь питон же настолько более высокоуровневый и обобщенный язык чем Java, что питонщик средней руки пишет в день код по функциональности превышающий в 10 раз код, написанный за день средним жабистом. Так что за ~недельку ты один аналог Spring я думаю напишешь

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

а) зачем ты тратил 3 месяца на велосипед?
б) кто будет поддерживать и развивать этот фреймворк когда ты собственно перейдёш к стадии написании на нём приложений?

gigabito
()
Ответ на: комментарий от anonymous

>По сравнению с чем? Огласите свой кругозор веб фреймоврков :)

Спринг - не веб-фреймворк.

anonymous
()
Ответ на: комментарий от svu

Да нет, я против самой категории. Просто отсутствие вкуса порождает рак buzzword'ов.

И buzzword уже не проясняет ситуацию, а запутывает.

Davidov ★★★★
()
Ответ на: комментарий от Davidov

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

svu ★★★★★
()
Ответ на: комментарий от svu

Полностью согласен.

Поднимаемая проблема: очень часто Java программисты исповедуют первый путь. Не потому, что Java портит мозги (хотя исключить такой вариант не могу), а потому что это такой мейнстрейм. (У меня самого, к сожалению, есть несколько знакомый Java-обезьянок)

И напоследок иллюстрация с сайта некой хостинговой компании (на тему того, как не нужно использовать слова):

Вопрос: Зачем вообще нужен переход на *** 2.0 и смена моего Логина?

Ответ: *** 2.0 — это новая веб-платформа третьего уровня в Интернете (Веб 3.0). *** 2.0 включает новый подход работы в Интернете, основанный на базе социальных сетей, социальной платформы хостинга, медиа-стриминга, Веб 3.0 сервисов и 100% открытого API для всех разработчиков с децентрализованной системой хранения информации. *** 2.0 — это новая эпоха в мире хостинга. Система Логинов *** 1.0 была не идеальной, а в новой версии *** 2.0 все продумано до мелочей.

Вопрос: Что такое платформа Веб 3.0?

Ответ: Это новая веб-технология основанная на веб-платформе социальных сетей нового поколения, которая включает социальную платформу хостинга, медиа-стриминг и веб-сервисы нового поколения. Веб 3.0 платформа является 100% открытой и имеет библиотеку API для всех веб-разработчиков с децентрализованной системой хранения информации.

Davidov ★★★★
()
Ответ на: комментарий от svu

> Программист старается анализировать выполняемую работу. И в этом процессе без абстрактных понятий не обойтись.

Воистину. Но этот птичий язык здесь ни разу не помощник. Напротив, он свидительствует об убогости либо мышления программиста, либо выбранного инструмента, ибо. Для описания принципов работы программ есть языки программирования. И хороший язык представляет достаточный словарь понятий для описания и решения твоей задачи. Если же в языке появляются паттерны — это верный признак того, что уровень абстракции, предоставляемый языком, не соответствует уровню сложности задачи. Лисперы испокон веков пользуются функциями высшего порядка, и не морочат себе и другим голову всякими «функторами» и паттерном «команда», а питонщики спокойно пользуются питоновскими модулями и даже не вспоминают ни о каких «синглтонах».

ero-sennin ★★
()
Ответ на: комментарий от anonymous

>Думаю, придется самому написать, ведь питон же настолько более высокоуровневый и обобщенный язык чем Java, что питонщик средней руки пишет в день код по функциональности превышающий в 10 раз код, написанный за день средним жабистом. Так что за ~недельку ты один аналог Spring я думаю напишешь

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

gigabito
()
Ответ на: комментарий от Davidov

Это не текст от разработчика. Это текст от маркетолога, кормящегося на хребте разработчика. Тут просто нет предмета для обсуждения;)

svu ★★★★★
()
Ответ на: комментарий от ero-sennin

> Но этот птичий язык здесь ни разу не помощник.

Так Вы и UML запишите во вредные технологии.

> И хороший язык представляет достаточный словарь понятий для описания и решения твоей задачи

В идеале - да. Но не везде удобно применять lisp.

> Если же в языке появляются паттерны — это верный признак того, что уровень абстракции, предоставляемый языком, не соответствует уровню сложности задачи.

Не согласен. Паттерн - это стандартное решение для стандартной задачи. Это вообще ортогонально языку программирования.

svu ★★★★★
()
Ответ на: комментарий от svu

По-моему, Java как раз и проектировался, чтоб кормить маркетологов. ;)

Но это уход в сторону, конечно. Согласен, пример не самый удачный, но сути дела это не меняет.

Davidov ★★★★
()
Ответ на: комментарий от svu

> Не согласен. Паттерн - это стандартное решение для стандартной задачи. Это вообще ортогонально языку программирования.

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

ero-sennin ★★
()

Таки я был прав ! Флэйм имеет место быть ! Как уже задолбалось людям говорить: не валите все в одну кучу. Повторю еще раз - Джаве нет альтернатив при написании _серъезных_ веб проектов (не о домашней страничке речь). На чем писать ? Не Питоне с его убогим ООП ? Или Пыхе ? На чем ? Может, на Сях ? А, понял ! Надо писать на асме - будет реально все летать ! Не валите все в кучу и трезво оценивайте преимущества остальных инструментов программирования. Ортодоксальность - это хорошо. Но не до такой же степени.

Sentinel
()
Ответ на: комментарий от Sentinel

Я не считаю PHP языком элегантным, но обратите внимание на положение Wikipedia в списке _самых посещаемых веб сайтов в интернете_.

Напрашивается очевидный вывод: важно, не на чём писать, а как.

Davidov ★★★★
()
Ответ на: комментарий от svu

> Уволил.

> ЗЫ Продемонстрированная позиция - подход не программиста, но дешевого кодера. Программист старается анализировать выполняемую работу.

Нужно уметь вовремя остановиться (ну там всякие уровни абстракции, разделение ответсвенности). Рулит не только вкус, но и чувство меры.

tailgunner ★★★★★
()
Ответ на: комментарий от ero-sennin

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

Так есть уже стандартные решения, помещенные в Java Class Library. Стандартную поставку JDK. Но стандарт обязан покрывать минимум, а не все мыслимые случаи. Это Microsoft хочет зохватить весь мир и для всех потребностей предложить одно решение: Vista. Но есть отрасли промышленности, которые изобретают свои решения. И Vista их не устраивает, так же как и JDK, и они ковыряют JEE и IoC.

>Наследование -- это наследование, с всеми его ограничениями (особенно в Java :) Dependency Injection -- это простая агрегация. Один объект включает в себя другой. Только эта связь устанавливается не в самом объекте, а извне.

Не путайте Dependency Injection и Inversion of Control, потому что это одно и то же. http://martinfowler.com/articles/injection.html

anonymous
()
Ответ на: комментарий от Sentinel

> На чем писать ? Не Питоне с его убогим ООП ? Или Пыхе ? На чем ? Может, на Сях ? А, понял ! Надо писать на асме - будет реально все летать !

Не угадал. Правильный ответ: Common Lisp ;)

dave ★★★★★
()
Ответ на: комментарий от ero-sennin

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

5 балов! Сам свое преждложение перечитай, и подумай не звучит ли "функция высшего порядка" или "модуль" таким же буззвордом. Птичий язык говоришь?

r ★★★★★
()
Ответ на: комментарий от Davidov

>Напрашивается очевидный вывод: важно, не на чём писать, а как.

Не как а что. Если полезть в медиавики разбираться - такое впечатление что его писали враги.

r ★★★★★
()
Ответ на: комментарий от anonymous

>Не путайте Dependency Injection и Inversion of Control, потому что это одно и то же

Щас. Приблизительно как "автомобиль BMW" и "двигатель внутреннего сгорания".

r ★★★★★
()
Ответ на: комментарий от r

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

Эти-то термины придуманы уж лет 50 как,

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

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>Эти-то термины придуманы уж лет 50 как,

И что? От этого что-то меняется? Все это относится к терминологии. Вообще смешно прозвучало: "что вы все абру какуюто птичью придумали када все нормальные люди кадаброй пользуются". Аналитическое мышление отказало? "А вот у нас в питоне" звучит как "а вот в нашем дворе". А у меня кеды адидас. Как дети.

r ★★★★★
()

Круто. Уже скачал. Изменения отличные. Правда, использовать аннотации для конфигурации - неудобно. Так в этом случае код придётся пересобирать, в случае изменений.

schakal
()
Ответ на: комментарий от schakal

>Правда, использовать аннотации для конфигурации - неудобно. Так в этом случае код придётся пересобирать, в случае изменений.

Не говоря о том что это противоречит самой идее inversion of control. Как появились анотации так дофига проектов как головой ударились - "анотации, анотации"...."developers, developers....". Вместо того чтобы делать программы гибкими и настраиваемыми извне под конкретные нужды, засовывают конфиги прямо в код лишь бы "метаданные".

r ★★★★★
()
Ответ на: комментарий от r

>Щас. Приблизительно как "автомобиль BMW" и "двигатель внутреннего сгорания".

Специально для тебя! http://martinfowler.com/articles/injection.html#InversionOfControl Автор паттерна и термина поясняет, что эти два термина обозначают.

>As a result I think we need a more specific name for this pattern. Inversion of Control is too generic a term, and thus people find it confusing. As a result with a lot of discussion with various IoC advocates we settled on the name Dependency Injection.

А обозначают они одно и то же. Только один предложили позже другого.

"Учиться никогда не позна". "Век живи, век учись"

anonymous
()
Ответ на: комментарий от anonymous

Жду когда Out-of-box добавят поддержку GWT как view-technology для Spring MVC, либо в DWR-style. Ещё Guice-like User Guide было бы неплохо увидеть, такой же простой и понятный. В остальном Spring делает своё дело.

Chapaev
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.