Comments 10
На мой взгляд бины интуитивнее. В восьмой версии будет тип propertie, как раз для бинов.
Я ни сколько не сомневаюсь что бин более понятен на интуитивном уровне. Mожет ли это быть связано с тем, что они уже много где используются с середины 90х? бинам больше десятка лет а с версии Java 1.5 появились новые возможности (пусть не такие явнеые но появились)

Представьте, что есть некий код, который строит таблицу в UI для коллекции бинов известного вам типа. И представьте, что всё, что вам нужно, это задать те свойства бина что будут показываться в соответвующей колонке таблицы. Скажите как вы это сделаете?

Скорее всего вы это сделаете указав имена свойств («name»,«age» ...). Сделав так, теперь вы должны всё время помнить о том, что меняя или удаляя свойство ещё необходимо сделать соответвющие изменения в коде где задаются имена полей для таблице.

А если таких таблиц 20?.. для таких случаев есть альтернатива.
Нет я бы сделал по другому ) боксинг и instanceof.
Еще одни грабли, как быть с фреймворками которые уже работают с бинами?
Я не совсем понял, что бы заворачивалось используя боксинг? и как использовался бы instanceof в поставленной задаче? (извиняюсь за непонимание, можно пример?).

Относительно фреймворков, что работают с бинами — многие из них позволяют работать далеко не только с бинами, предоставляя всякие специальные возможности для интеграции с другими типами (так же возможен Map, DomElement). В частности мне удалось интегрировать поля данных описанного типа с технологиями hibernate (см здесь
www.fishbolt.org/eclipse/org.fishbolt.model.hibernate.annotations/doc/plugin.article.ru.html#dataObjects ) и freemarker (тут www.fishbolt.org/java/org.fishbolt.model.freemarker/doc/article.ru.html#template ). Спаибо Тиму, замечание отчасти справедливое, так как решая задачу генерации отчётов, выбор пал на freemarker потому, что velocity не предоставлял подобной возможности лёгкой интеграции. На мой взгляд freemarker даже лучше — более продуманный и гибкий.

Упс, я неправильно вас понял. Возможно метаданные и выход в данном случае, но я бы не стал отходить от концепции бинов, а возложил функцию выяснения «что же нам вывести» на другой слой бизнес логики приложения.
На мой взгляд уходя от стандартов нужно помнить, что есть немаленький шанс столкнуться с серьезными трудностями. Решая которые вы возможно потратите намного больше времени, чем выиграете используя ваши «смарт-бины».
Да ладно, так же можно вобще ничего не делать боясь, что «возможно потратишь больше времени, чем выиграешь» скучно же станет ;). Мне вот просто однажды надоело заниматься «xml программированием», указывать в xml или ещё где-нидь имена свойств и бинов (ещё аннотаций не было — они отчасти помагают), потом вносить коррективы, запускать ловить ошибки, исправлять и опять запускать… Решил попытаться свести к раннему выявлению ошибок (на этапе компиляции) дабы ещё до запуска выявлять все ошибки. То что вышло и представленно.

На самом деле я действительно благодарен вам Тим, ваш отзыв — дополнительный материал для размышлений.
Это все интересно и познавательно, но пример который сразу мне приходит в голову это таглибы стратса. С вашими «смарт-бинами» я с этими таглибами без дополнительных кувырканий работать не смогу. (пока писал про аксис вспомнил). В общем будет плохо если вы будете использовать любой фреймворк который так или иначе вызывает методы по рефлекшену.

Мне тоже было инетесно побеседовать )
Тим, извините, что трачу ваше время, у меня ещё пару вопросов (не ради спора):
/* сейчас работаю над интеграцией веб и модели данных (с такими как вы называете «смарт» бинами). где, для себя задачей ставлю организация выявления ошибок на этапе компиляции jsp. */

Не подскажете, о какой версии стратса (1.x или 2.x) идёт речь и на каких теги вы ссылаетесь (вы о тегах элементов ввода формы типа text и тп, или о каких то ещё)?

И вот ещё один: про аксис вы вспомнили из-за того, что там есть класс BeanSerializer?
Да вы правильно поняли почти все теги из стандартных наборов struts1 — 2 используют обращения к методам бина (в первом стратсе это форма а во втором экшн) по рефлекшену. + вспомнил jstl (el) работает аналогично.

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

Думаю если посидеть повспоминать этот список будет достаточно большой.

Only those users with full accounts are able to leave comments. Log in, please.