09 czerwca 2010

Contexts and Dependency Injection (CDI) praktycznie - zestawienie środowiska z JBoss Weld, Arquillian i Apache Maven 2

Na moim Wiki pojawił się nowy artykuł dotyczący specyfikacji JSR-299: Contexts and Dependency Injection for the Java EE platform (w skrócie CDI).

W artykule Contexts and Dependency Injection (CDI) praktycznie - zestawienie środowiska z JBoss Weld, Arquillian i Apache Maven 2 przedstawiłem możliwość uruchamiania CDI na poziomie Java SE (bez serwera aplikacyjnego JEE6) z użyciem referencyjnej implementacji JBoss Weld z Apache Maven 2 i Arquillian, który znajduje się w ofercie załogi JBoss do testowania aplikacji korzystających ze specyfikacji Java EE 6.

Nie jest to specjalnie zaawansowany artykuł i taki był jego cel - gładko wprowadzić w temat uruchamiania "czystych" aplikacji CDI bez bagażu JEE6. CDI stanowi swego rodzaju alternatywę dla kontenerów IoC/DI jak Google Guice czy Spring Framework z tą zaletą, że jest ustandaryzowanym rozwiązaniem dostępnym w każdym serwerze JEE6, a czerpiącym ze swoich poprzedników całymi garściami. Obecna lektura książki Dependency Injection wydawnictwa Manning uzmysławia mi jak niewiele różni wszystkie z wymienionych - Guice, Spring i CDI (aczkolwiek samo CDI nie jest przedmiotem książki).

UWAGA: Kody źródłowe nie są jeszcze w repo. Do odwołania jest w trybie do odczytu i nie można nic zatwierdzać.

PROŚBA: Gdyby ktoś zechciał mi zaprezentować/opisać, w jaki sposób skorzystać z Gradle zamiast Maven2 byłbym niezmiernie wdzięczny. Wciąż nie czuję zalet jednego nad drugim.

Pomysły na kolejne tematy z CDI mile widziane. Zabieram sie za "przetrawienie" komentarzy dotyczących CDI z poprzednich, moich wpisów, na bazie których powstaną kolejne. Nawet nie wyobrażacie sobie jakie to szczęście móc dotykać tematów, które krążą koło siebie nierozerwanie i kiedyś stanowiły osobne rozwiązania, a obecnie zaczynają stanowić podstawy specyfikacji JEE6 np. facelets (w JSF2, gdzie CDI to główny gracz) czy dawno przeze mnie niewykorzystywany Apache Wicket (jako samodzielne rozwiązanie z CDI czy alternatywna technologia wizualizacji w JBoss Seam 3). Jednak znajomość ich wszystkich nie pomaga bynajmniej w podjęciu decyzji które i gdzie. Sądzę, że to równie trudna decyzja z i bez ich znajomości. A gdzie tu znaleźć się w sytuacji stworzenia czegoś nowego, alternatywnego do istniejącej oferty projektowej? Trzeba mieć na prawdę zawzięcie, aby nie ugiąć się nad wykorzystaniem istniejącego i stworzeniem nowego.