четверг, 23 мая 2013 г.

Семинар Dependency Injection в Java от CUSTIS

Сегодня вечером добрые ребята из замечетельной IT компании CUSTIS провели второй по счету семинар из серии открытых семинаров по разработке программного обеспечения. Ведущий разработчик Сережа расскзазывал про то, что такое Dependency Injection (DI), какие фреймворки в Java реализуют эту удобную вещь и как ими пользоваться.

Побробности под катом...




Коротко о сказанном
Начало истории
Как всегда, вначале была просто идея - идея паттерна Dependency Injection. А реализация каждый раз своя, ручная, чаще всего через set-методы. Поэтому и зовут это Based on setters Dependency Injection by hand. Ну а потом, во избежания повторного изобретательства велосипедов, все это оформилось во фреймворки.


Из первых
Для тех, кто занимается разработкой на Java и еще не знаком с DI настоятельно рекомендуется Spring - это самый ранний фреймворк, о котором шла речь на семинаре и важный инструмент в арсенале Java-программиста. Лично мне хватило чтения документации, там все доходчиво написано, но и кроме этого информации по теме, наверняка, немало. Непосредственно Dependency Injection в документации описан в главе The IoC Container (part III, chapter 5) - сокращенно от Inversion of Control, более общая конецпция, включающая в себя в том числе и DI.


Эволюция
Время не стоит на месте - следующим экземпляром, реализующим DI стал фреймворк GUICE от Google.

Может возникнуть вопрос: зачем еще один?
Дело в том, что во времена выпуска первой версии Spring, в далеком 2004 году, язык Java только-только успел обзавестись такими полезными фишками, как аннотации и инструменты обощенного программирования (Generic Programming). Новые функциональности позднее вошли в Spring, но к тому моменту фундамент фреймворка уже был заложен и его разработчики оказались несколько скованы обратной совместимостью. В основе системы остался старый-добрый Setter based Dependency Injection.
А разработчики Google начали работу с чистого листа, сразу использовав всю мощь метаданных и Generic Programming при проектировании нового фреймворка, первая версия которого появилась в 2008 году.

Продолжение

Но дело не ограничилось фреймворком - Google подала заявку на введение существующих во фреймворке соглашений в Java. Заявка JSR-299: Contexts and Dependency Injection for the Java EE platform прошла все необходимые процедуры и вошла в Java 6, а эталонная реализация (reference implementation), и, кажется, пока вообще единственная реализация стандарта была создана группой JBoss под именем Weld. Все это вместе зовется CDI/Weld и радует программистов.


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

P.S:
Сергей великодушно предоставил исходники (проект Idea в .zip, 135Kb) продемонстрированных примеров. Материал учебный, не для коммерческого использования и т.д. и т.п. и вообще, не факт, что соберется, но для понимания - годится.

Список будущих семинаров:
30.05Разработка ПО с помощью UML
6.06Шаблоны проектирования: основы велосипедостроения
13.06Моделирование бизнес-процессов в среде Aris
20.06Разработка пользовательских элементов управления в WPF
27.06Работать программистом - это вам не только код писать!

Все можно узнать в группе ВК: 
vk.com/CUSTIS_Young - там же можно найти ссылку на регистрацию. Практика показывает, что регистрация закрывается за два дня до даты проведения, так что не оттягивайте.


Комментариев нет:

Отправить комментарий