пятница, 9 мая 2008 г.

Развивая тему Guice: прикручиваем Velocity с помощью Guice.


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

О том, что такое Velocity и многих аспектах его использования можно почитать на форуме программистов и конечно же официальной странице проекта.

пятница, 2 мая 2008 г.

Строим сервлеты на базе Guice


Компания google - основной разработчик IoC контейнера GUICE позиционирует его как легковесное решение для построения Java-приложений различных типов, в том числе и веб-приложений. Для этого существует пакет com.google.inject.servlet, о котором мы сегодня и поговорим.

Прежде всего хочу отметить тот факт, что снапшот guice-servlet в SVN и пакет, включенный в guice 1.0 отличаются - версия в SVN имеет более расширенный функционал. В частности - базовый сервлет, обеспечивающий инъекцию зависимостей и контекст-листенер, обеспечивающий подключение Guice.Injector. Поэтому для примеров в данном посте я использовал версию из SVN.

среда, 23 апреля 2008 г.

Пишем плагинную шину с использованием Guice


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

Сегодня мы поговорим о реализации примитивной плагинной шины с помощью IoC-контейнера от гугл - Guice. Реализация плагинной шины с помощью IoC-контейнера дает нам все преимущества паттерна Inversion Of Control. Мы легко можем реализовывать с использованием этого паттерна как базовые какие-то механизмы (API приложения, доступное плагинам), так и сами плагины, что очень удобно. Так-же использование Guice облегчает сам процесс подключения плагинов к системе, как именно - об этом поговорим чуть позже.

воскресенье, 6 апреля 2008 г.

Знакомимся: Guice - IoC контейнер от Google


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

Одним из наиболее популярных (на мой взгляд - лучших) способов уменьшения связности кода является использование паттерна Inversion Of Control (Инверсия управления). Очень часто данный паттерн описывают основным правилом Голливуда: "не звони мне, я сам тебе позвоню". При всей философичности данного описания оно является правильным.

Без философии же данный паттерн описывается следующим образом: взаимодействовать должны не реализации (классы), а абстракции (интерфейсы). Не должно быть такого (без фанатизма конечно же), когда класс зависит от класса. Классы должны зависить от интерфейсов. Возникает вопрос - когда создавать инстансы интерфейсов, ведь понятно, что в рантайме интерфейсов не будет, а будут классы. Так вот, вся прелесть IoC проявляется именно в этом. Вы в одном месте описываете правила, по которым будут созданы объекты для реализации интерфейсов. Остальное за вас сделает используемая IoC-подсистема, в частности - IoC-контейнер.

среда, 12 марта 2008 г.

Интероперабельный веб-сервис с использованием XFire, Spring и Hibernate

В рамках проходящей в Южно-Уральском государственном университете конференции "ITFest" был проведен эксперимент по интеграции приложений написаных на Java и .NET. Единственный способ интеграции столь разнородных платформ - веб-сервисы. Соответственно был написан веб-сервис на Java и клиент к нему на .NET. Собственно о веб-сервисе, написаном на Java и хочется поговорить.

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

суббота, 19 января 2008 г.

Возвращаемся к истокам: LaTeX


Давно - давно, горячей зимой 2005-го, когда учился на третьем курсе - фанател я FreeBSD и держал ее в качестве единой ОС на своем компе. Проблема оформления курсовых, лаб и прочей учебной чухни (а их было ох как не мало...) решалась с помощью замечательной издательской системы LaTeX, а точнее ее реинкарнации под названием teTeX.

Была куча наработок, в том числе и свой пакет стилей для оформления курсачей в соответствии с СТП ЮУрГУ.

Вчера под давлением оформления курсовой работы по ТАУ решил, что ворд дико сливает при наборе текста со множеством формул и поставил себе замечательную штуку - MiKTeX.

пятница, 11 января 2008 г.

Пишем свой загручик java-классов

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