Сегодня вечером добрые ребята из замечетельной 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 - там же можно найти ссылку на регистрацию. Практика показывает, что регистрация закрывается за два дня до даты проведения, так что не оттягивайте.

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