Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Размышления о легковесных контейнерах, похоже на свет в конце туннеля 
:(
    Опции темы
Stampede
Дата 3.6.2008, 20:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Как вы уже догадались из названия, разговор у нас сегодня пойдет о легковесных контейнерах.

Началась все с того, что я вот задумался, откуда у мекня столь стойкое неприятия Спринга, при том что я в свое время прочел книжку Рода Джонсона "J2EE Development without EJB" от корки до корки и всем сердцем принял излагаемые там идеи. С этим вопросом за пазухой полез я в инет и... практически не нашел сколько-нибудь серьезной критики Спринга. Но кое-что все-таки нарылось. Например вот это: I Don't Get Spring
 за авторством чувака из Гугла по имени Bob Lee.

И в общем-то то что там написано действительно хорошо описывает мои собственные ощущения:
  • обилие XML кодирования
  • тяжеловесность во всем (вопреки заявленному)
  • плохая поддержка дженериков и аннотаций.

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

Ну и тут же у меня возник закономерный вопрос: ну дак а что взамен Спринга-то? Что заюзать бедному девелоперу?

И оказалось вот что: Легкий фреймворк под названием Guice (произносится Juice) разработанный для внутреннего пользования Гуглом и не так давно открытый для широкой публики как опенсорс

Полистал я доку, ознакомился. И знаете что скажу: а ведь это, братцы, прорыв. Может быть совсем скоро мне лично не придется изобретать велосипед, потому что все основные нужные мне вещи будут доступны в базовой поставке Guice.

Вот такие вот новости с полей. Прошу высказываться.

ЗЫ. Поиском на форуме нашел одно упоминание Guice от alexsmirnov, но это было сделано всколзь и с акцентом на другую интересную разработку, Web Beans. В общем, тема новая и актуальная


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
w1nd
Дата 3.6.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Как бы ни превозносились все эти "легковесные" фреймворки, легковесность их проистекает из новизны и бедности. Когда функционал дорастает до приемлемого, легковесность куда-то исчезает ;) Никогда не воспринимал серьёзно вариаций на тему "JEE без EJB".


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
fixxer
Дата 3.6.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



w1nd, EJB3 уже сами по себе "легковесные" в сравнении с EJB2


--------------------
user posted image
PM MAIL ICQ   Вверх
w1nd
Дата 4.6.2008, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(fixxer @  3.6.2008,  22:27 Найти цитируемый пост)
w1nd, EJB3 уже сами по себе "легковесные" в сравнении с EJB2

Если простоту в использовании (мнимую, кстати) назвать легковесностью - то да smile

Это сообщение отредактировал(а) w1nd - 4.6.2008, 00:08


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Maksym
Дата 4.6.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Stampede
О каком сабсете функциональности Spring'а идет речь? В смысле, что конкретно хотим заменить?


PM MAIL   Вверх
fixxer
Дата 4.6.2008, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Maksym, подозреваю, что в части Dependency Injection


--------------------
user posted image
PM MAIL ICQ   Вверх
Stampede
Дата 4.6.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

Репутация: 24
Всего: 144



Цитата(fixxer @  4.6.2008,  03:49 Найти цитируемый пост)
Maksym, подозреваю, что в части Dependency Injection 


Во, спасибо за подсказку. А то я было даже как-то растерялся smile

В общем, хочется, "чтобы у меня все было, и мне за это ничего не было" (с). В смысле, чтоб не приходилось программить в XML - ну не  для того он предназначен. В Guice это достигается широким использованием аннотаций. Правда, некоторые вменяют это фреймворку в вину: мол, какое же это DI и  IoC, если мы должны явно показывать пальцем, где чего фтыкать - само должно разруливать. Кроме того, говорят они, повсеместно раскиданные анотации делают код сильно зависимым от фреймвокра - нехорошо, инвазивно.

Но позвольте, а чего же вы хотели, граждане? Где-то, как-то, но зависимости все равно нужно каким-то образом описать. Не хотите в аннотациях - флаг... то есть, простите, XML вам в руки. Только погодите: где-то мы такое уже видели - уж не в Спринге ли: раздутые конфиги, плохая тестабельность, кошмары рефакторинга...

То есть если мы согласимся, что в вопросе выбора между аннотациями и конфигами аннотации выигрывают (особенно так как это сделано в Guice: типобезопасно и удобно), то останется, по сути, лишь одно возражение: кастомные аннотации.

Так вот, кастомные они лишь до тех пор, пока их не канонизировали. А принимая во внимание тенденции в JCP (скажем, стандартизацию ОРМ в форме JPA, или скриптинга на базе Rhino), за этим дело не заржавеет. Потому что уж больно безобразная складывается ситуация с IoC контейнерами: продуктов все прибавляется, а порядка не видать. Так вот осмелюсь предположить, что путь, который выбрали авторы Guice - он гораздо прямее ведет к канонизации чем путь Спринга, который давно уже перестал быть просто контейнером, и включать в SE такого монстра в мало-мальски самодостаточном объеме ни у кого рука не поднимется.

Плюс не забываем, что за Guice стоит ни много ни мало сам Гуголь - даже если не деньгами, то фигурой.

Так штааа...




--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
COVD
Дата 4.6.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

где чего фтыкать - само должно разруливать


я как-то видел реплику на rsdn , мол , когда у меня в проекте больше 2 классов, всегда использую Спринг, а то легко запутаться с порядком инициализации  smile  
PM MAIL   Вверх
fixxer
Дата 4.6.2008, 19:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 6
Всего: 27



Stampede, вопрос такой, а как у guice обстоят дела со вторым китомспринга - АОП? На мой взгляд именно аспекты, позвояющие с легкостью реализовывать фукционал ортогональный основному (такой как, например, секьюрити и транзакционность),  позвоили спрингу претендовать на место EJB.
Кстати по поводу аннотаций в спринге http://weblogs.java.net/blog/seemarich/arc...ion_base_1.html
За подробностями - в спринговый референс. Конечно какой-то минимальный хмл остается, но перспектива кодить giuce'овский биндер мне пока кажется не менее сомнительной. Хотя может я еще не распробовал.

Это сообщение отредактировал(а) fixxer - 4.6.2008, 20:21


--------------------
user posted image
PM MAIL ICQ   Вверх
xeye
Дата 5.6.2008, 00:49 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2008

Репутация: 1
Всего: 1



Цитата(Stampede @ 3.6.2008,  20:46)
И в общем-то то что там написано действительно хорошо описывает мои собственные ощущения:



  • обилие XML кодирования


  • тяжеловесность во всем (вопреки заявленному)


  • плохая поддержка дженериков и аннотаций.



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

Ну и тут же у меня возник закономерный вопрос: ну дак а что взамен Спринга-то? Что заюзать бедному девелоперу?

И оказалось вот что: Легкий фреймворк под названием Guice (произносится Juice) разработанный для внутреннего пользования Гуглом и не так давно открытый для широкой публики как опенсорс

Полистал я доку, ознакомился. И знаете что скажу: а ведь это, братцы, прорыв. Может быть совсем скоро мне лично не придется изобретать велосипед, потому что все основные нужные мне вещи будут доступны в базовой поставке Guice.

Ваще-то почти все эти беды - это не ограничения спринга, это "общепринятые" способы его использования. если вам не нравятся хмл конфиги (мне не нравятся) никто не запрещает производить конфигурацию контекста программным образом, получая полную поддержку рефакторинга.

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

лучшее API - это остутствие API, лучший контейнер - тот, которого не заметно.

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

настоящая беда спринга - он стал мэйнстримом и одной большой либой на все случаи жизни. любая технология такого уровня начинает использоваться в 70% не там, где надо и не так, как надо (и не теми, кому надо smile)

Это сообщение отредактировал(а) xeye - 5.6.2008, 00:51
PM MAIL   Вверх
ecologist
Дата 5.6.2008, 07:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 452
Регистрация: 28.2.2007

Репутация: 2
Всего: 9



Цитата(xeye @  5.6.2008,  00:49 Найти цитируемый пост)
лучшее API - это остутствие API, лучший контейнер - тот, которого не заметно.

Если бы у бабушки были яйца, то она была бы дедушкой. API есть всегда и вопрос только в том, насколько хорошо оно спроектировано.

Цитата(xeye @  5.6.2008,  00:49 Найти цитируемый пост)
никто не запрещает производить конфигурацию контекста программным образом, получая полную поддержку рефакторинга.

В принципе согласен - можно. Только насколько это нужно и удобно - вопрос открыт. 
В конце концов та же идея SPI (Serevice Provider Interface) на котором строится очень немалая часть технологий Java - наглядный пример того, что Guice может реально помочь разработчикам.

Я тоже пока прочитал документацию - надо попробовать в реальных проектах. Потом можно будет что-то сказать. Но пока впечатления положительные.
Во всяком случае "ад XML" от Spring меня тоже иногда ошарашивает - порой есть ощущение, что экономии времени не наблюдается.
PM MAIL   Вверх
xeye
Дата 5.6.2008, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.6.2008

Репутация: 1
Всего: 1



Цитата(ecologist @ 5.6.2008,  07:38)

Цитата(xeye @  5.6.2008,  00:49 Найти цитируемый пост)
никто не запрещает производить конфигурацию контекста программным образом, получая полную поддержку рефакторинга.

В принципе согласен - можно. Только насколько это нужно и удобно - вопрос открыт. 

ну, поверьте на слово, это удобно smile

забавно, что spring MVC не использует в полной мере возможности спринга, как IoC. т.е. это не проблема спринга, это чисто проблема использования. проблема в том, что сами авторы не смогли подать красивый и внятный пример мощного использования IoC. в итоге имеем систему быстро нагоняющую EJB по монстричности.

пример web MVC на основе пикоконтейнера :  http://waffle.codehaus.org/

опять же, это не совет использовать именно пикоконтейнер или ваффл - это пример того, как надо интегрировать IoC контейнеры в приложении, так, чтобы они решали проблемы, а не добавляли новые.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0553 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.