Category: дизайн

Category was added automatically. Read all entries about "дизайн".

Теория на практике или хеш-таблицы часть 4

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

Collapse )

Как избежать утечек памяти из-за потери подписчиков в GUI приложениях

Написать этот пост меня cподвиг вопрос в ru_java от and_bel.

Всем кто когда-либо писал большие, сложные, многооконные GUI приложения, где разные окна работают с общими моделями данных, должна быть знакома ситуация: открываем и закрываем какое-либо окошко несколько раз и видим что потребление памяти увеличилось. Классическая утечка памяти, которая у пользователей проявляется как "тормоза" после длительной работы с приложением, а потом и вылет из-за нехватки памяти. Причина таких утечек обычно банальна и проста -- визуальные компоненты приложения должны подписываться к модели данных чтобы получать нотификации об её изменениях и отображать их на экране (классический шаблон Model-View-Controller, только Controller нас сейчас не интересует). Программист забыл отписаться от нотификаций при закрытии окна -- вот вам и утечка. В приложениях написанных на базе Swing ситуация осложняется тем, что при написании отдельных компонентов не очень понятно в какой момент надо отписываться -- стандартных методов типа close или destroy для компонентов не предусмотрено. Можно ли построить дизайн приложения таким образом, чтобы уменьшить вероятность появления таких ошибок?

Collapse )

JavaOne день первый

Мероприятие потрясает своим масштабом. Это просто 4-х дневный марафон с сотнями сессий, презентаций, и обсуждений, которые проходят в 9 утра до 11 вечера. Практически не остается времени о чем-либо подробно написать, поэтому сконцентрируюсь лишь на ключевых моментах.

Первый день еще не закончился, но основное событие уже произошло. Сегодня утром объявили что Sun Java идет войной на Adobe Flash по всем фронтам. Начиная от размера JRE и её скорости запуска, и заканчивая созданием специального скриптового языка JavaFX script (ранее F3 script) на котором дизайнеры будут создавать интерактивный контент легко и просто. То что я уже читал об F3 до этого объявления и то, что было показано здесь, полностью подтверждает все маркетинговые заявления Sun -- это действительно новое слово (можно даже сказать прорыв) в создании интерактивных приложений.

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

JavaFX (так будет называться вся платформа в целом) будет превая платформа где сложный и высокопризводительный код будет легко интегрироваться с красивым интерактивным оформлением, ибо она будет построена поверх JavaSE. Наконец-то появился шанс, что нас перестанет мучить извечный вопрос как же заинтегрировать в наше крутейшее Swing приложение анимацию которую нарисовали дизайнеры (сейчас мы это делаем через animated GIF -- глупо). При удачном стечении обстоятельств уже очень скоро всё начнет меняться в нашу пользу :)

Sun Tech Days Day 1

Снова рассказал свой доклад про дизайн высокопроизводительных приложений. В этот раз на Sun Tech Days. Всё. Теперь надеюсь все кто хотел его послушать, уже послушали. Хотя народ подходил после доклада и спрашивал не планирую ли я опубликовать статью. Пока не думал. Не понятно куда лучше публиковать.

У меня в работе есть несколько новых оригинальных идей для докладов. Ждите анонсов на одной из будущих встреч JUG.