pondělí 11. května 2009

Kontroverze kolem Dependency Injection aneb když dva dělají totéž není to totéž

Minulý týden udělali SpringSource a Google (respektive vývojáři Guice framewrku) společné oznámení, ve kterém představili návrh anotací určených k řízení Dependency Injection (dále DI). Zajímavost této události je v tom, že v prostředí Java EE již existuje poměrně pokročilá, né-li hotová, specifikace pod JSR 299 dříve nazývaná Web Beans. Nepodezírám lidi ze SpringSource či Google, že neví o tom, že Web Beans řeší skoro totéž. Jenže stará pravda je v tom, že když dva dělají totéž, není to totéž.

Reakce link Gavina Kinga, jakožto lídra specifikace JSR-299, na sebe nenechala dlouho čekat. Návrhu zmíněné dvojice vyčítá to, že je příliš povrchní a neřeší plno aspektu, které jsou s DI spojeny, například řízení v závislosti na deploymentu, a má pravdu. Otázkou zde je, jestli existuje takový zájem, který by SpringSource a Guice, aby se pouštěli do tvorby takové specifikace. Poslední poměrně skeptická vyjádření lidi ze SpringSource na adresu Java EE 6 a profilů, které se objevily na konferenci SpringOne, naznačují, že žádný takový zájem neexistuje.

Většina věcí, o kterých Gavin King píše, je minimálně Spring frameworkem nabízena out of box. Možná mají lidé kolem Roda Johnsona jenom pocit, že to s JSR-299 dopadne jako s jinými poměrně ambiciozními specifikacemi v Java EE. Problém této specifikace je možná v tom, že nebyla od začátku psána jako striktně DI orientovaná specifikace, tedy její přenositelnost do prostředí standardní Javy je velice omezená. Takže to dopadne jako experiment na vývojářích použitelný ve třetí verzi, ačkoliv mě osobně ta specifikace nepřijde vůbec špatná. Další možností je, že JSR-299 nebude nakonec součástí Java EE prověřit, což mohou zase vědět lide ze SpringSource.

Ať je ten důvod jakýkoliv, je nesporným faktem, že to vrhá špatné světlo na celý specifikační proces Javy. A opět, s jeho kritikou nikdy Rod Johnson & spol. nikdy nešetřili. Ve výsledku to pak vypadá, že si všichni sledují jenom vlastní zájmy, a na nějakém širší shodě vlastně nikomu nezáleží.