Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Cześć

Od jakiegoś czasu przyglądam się frameworkom do Dependency injection.
Google Guice 2 wydaje mi się jednym z najdojrzalszych. Np. ujmuje mnie kontrola typów na poziomie samego języka (via adnotacje).

Czy ktoś może wytknąć jakieś wady Guice 2, w szczególności podając propozycje jeszcze lepszego Dependency injection, które tych wad jest pozbawione?

Pozdrowienia,
Adam
Borys Mądrawski

Borys Mądrawski Architekt/Developer
EAI/Java

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Marzę tylko niestety, aby znaleźć trochę czasu i usiąść porządnie do Google Guice.

W obecnej pracy króluje wyłącznie stara Java 1.4.2, stary EJB 2.0, a to za sprawą starego, poczciwego WebLogic Server 8.1, który na nowszej Java nie ruszy. Nici z użycia wielu bibliotek, których nie da się pociągnąć Retroweaver'em, nici z używania adnotacji.

W niektórych projektach używamy starego Spring Framework 1.x. Za sprawą Dependency Injection (DI) używa się tam Spring'a niemal jako języka programowania ;), a na dodatek na skalę, która mija się z założeniami DI.

Spring naprawdę daje radę i to bez używania adnotacji (tylko same bean XML'e).
Jest jeszcze jeden framework z nowoczesnym DI - muszę sobie przypomnieć jego nazwę...
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Borys M.:
Marzę tylko niestety, aby znaleźć trochę czasu i usiąść porządnie do Google Guice.

Zwrócę uwagę, że w połowie tego roku wyszło Guice 2, które jest zauważalnym rozszerzeniem i udoskonaleniem wcześniejszej wersji 1.
W obecnej pracy króluje wyłącznie stara Java 1.4.2, stary EJB 2.0, a to za sprawą starego, poczciwego WebLogic Server 8.1, który na nowszej Java nie ruszy. Nici z użycia wielu bibliotek, których nie da się pociągnąć Retroweaver'em, nici z używania adnotacji.

No tak, tylko współczuć. Niestety i ja znam ten ból (konieczność robienia czegoś w 1.4.x).
W niektórych projektach używamy starego Spring Framework 1.x. Za sprawą Dependency Injection (DI) używa się tam Spring'a niemal jako języka programowania ;), a na dodatek na skalę, która mija się z założeniami DI.

Springa znam jedynie z internetu. Za to coś mi podpowiada, że wszelkie DI/IoC oparte na XML-ach, to nie jest to, czego ja szukam. A czego mi brakuje? Możliwości walidacji tych wszystkich ustawień np. na poziomie kompilacji (a nie podczas uruchomienia systemu, jak to jest chyba robione w przypadku IoC opartych na XML).
Np. w Guice wstrzykujemy via adnotacje, czyli kontrolę typów zapewnia samo środowisko IDE i waliduje podczas kodowania.
Spring naprawdę daje radę i to bez używania adnotacji (tylko same bean XML'e).
Jest jeszcze jeden framework z nowoczesnym DI - muszę sobie przypomnieć jego nazwę...

Może ta lista pomoże przypomnieć sobie nazwę tegoz:
http://en.wikipedia.org/wiki/Dependency_Injection#Exis...

Adam
Damian P.

Damian P. Starszy Programista
Java / JEE

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Adam Woźniak:
...
Springa znam jedynie z internetu. Za to coś mi podpowiada, że wszelkie DI/IoC oparte na XML-ach, to nie jest to, czego ja szukam. A czego mi brakuje? Możliwości walidacji tych wszystkich ustawień np. na poziomie kompilacji (a nie podczas uruchomienia systemu, jak to jest chyba robione w przypadku IoC opartych na XML).
Np. w Guice wstrzykujemy via adnotacje, czyli kontrolę typów zapewnia samo środowisko IDE i waliduje podczas kodowania.
...

FYI: http://static.springsource.org/spring/docs/2.5.x/refer...

Niestety nie znam Guice 2 natomiast Spring wydaje mi się rewelacyjnym framework'iem (przynamniej od wersji 2.5) :)
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Damian P.:

FYI: http://static.springsource.org/spring/docs/2.5.x/refer...

Niestety nie znam Guice 2 natomiast Spring wydaje mi się rewelacyjnym framework'iem (przynamniej od wersji 2.5) :)

Dzięki Damian za namiar, niemniej moje eksperymenty rozpocznę od Guice 2 :)
W sumie to się dobrze składa, że Ty znasz jedno, a ja drugie. Może kiedy przegryzę się przez Guice 2.0, to napisze coś o tym wraz z przykładami (blog) i będziemy mogli porównać Spring z Guice 2.

A propos Spring'a i adnotacji: jest coś takiego jak JavaConfig:
http://www.springsource.org/javaconfig
"The Spring Java Configuration project (JavaConfig for short) provides a type-safe, pure-Java option for configuring the Spring IoC container."

Ale ja nie wiem jaka jest relacja pomiędzy Springiem, a JavaConfig.

Pozdrawiam, Adam
Maciej Nowicki

Maciej Nowicki Java Developer

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Guice może być także bardzo interesującą propozycją przy współpracy z GWT. Na Guice2 bazuje projekt GWT GIN (http://code.google.com/p/google-gin/), umożliwiający skorzystanie z zalet DI w kodzie klienckim, nie zaś tylko na serwerze. Tego Spring nigdy nie będzie potrafił.

Niestety, ja również nie miałem okazji zapoznać się z Guice, brak czasu mi to skutecznie uniemożliwia, do tego "moja" aplikacja GWT jest już na takim stadium, że rozbebeszenie całej architektury i przystosowanie pod Guice raczej nie wchodzi w grę. A szkoda, bo chyba sami zainteresowani przyznają, że metody łączenia GWT i Springa nie są zbyt eleganckie.

Mam nadzieję, że kolega zapozna się z tematem i zechce nam go zreferować :)
Tomasz Cejner

Tomasz Cejner Senior Responsive
Agile Polyglot
Developer

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Przyglądałem się kiedyś Guice 1.x, sprawiał wrażenie lekkiego i dobrze pomyślanego.
Ale... nowe fajne frameworki są nowymi fajnymi frameworkami, a kiedyś trzeba zejść na ziemię i wrócić do ciężkiej pracy :-)

Czy nowe Guice integruje się z Hibernate? JDBC? JMS? Quartzem? Serwletami? Daje jakąś fajną propozycję MVC? Jeśli odpowiadający na to pytanie zacznie się miotać, developer wróci do swojego Springa, który jest jaki jest, ale ma to co na co dzień jest potrzebne.
Łukasz Żuchowski

Łukasz Żuchowski Software Wizard

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Tomasz Cejner:
Czy nowe Guice integruje się z Hibernate? JDBC? JMS? Quartzem? Serwletami? Daje jakąś fajną propozycję MVC? Jeśli odpowiadający na to pytanie zacznie się miotać, developer wróci do swojego Springa, który jest jaki jest, ale ma to co na co dzień jest potrzebne.

Pod warunkiem że potrzebujesz tych wszystkich rzeczy, a nie samego DI o którym rozmawiamy ;).
Jeżeli potrzebujesz tych wszystkich rzeczy (a bywa że potrzebujesz) warto to rozważyć. Czasami jednak to czego potrzebujesz to DI i wtedy warto skupić się na tym, które rozwiązanie jest faktycznie lepsze, łatwiejsze i wygodniejsze w utrzymaniu.Łukasz Żuchowski edytował(a) ten post dnia 16.12.09 o godzinie 11:55
Adam Woźniak

Adam Woźniak software architect
and developer

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Tomasz Cejner:
Przyglądałem się kiedyś Guice 1.x, sprawiał wrażenie lekkiego i dobrze pomyślanego.
Ale... nowe fajne frameworki są nowymi fajnymi frameworkami, a kiedyś trzeba zejść na ziemię i wrócić do ciężkiej pracy :-)

Może jestem skrzywiony tym, że od zawsze implementowałem backendy i nie potrzebowałem nigdy DI w modelach MVC. I pewnie z tych powodów patrząc na Guice 2.0 bardziej niż zadowalające mnie są fakty:
* Guice 2 urzeka mnie kontrolą typów na poziomie jeżyka (a nie XML)
* duża firma Google Inc. bazuje na Guice i jest zadowolona ;)
Czy nowe Guice integruje się z Hibernate? JDBC? JMS? Quartzem? Serwletami? Daje jakąś fajną propozycję MVC? Jeśli odpowiadający na to pytanie zacznie się miotać, developer wróci do swojego Springa, który jest jaki jest, ale ma to co na co dzień jest potrzebne.

Większość z wymienionych przez Ciebie technologii jest wspierana przez Guice 2. Oczywiście nie wiem, czy wspierana na poziomie Ciebie zadowalającym.

Pozdrawiam, Adam

konto usunięte

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

* Guice 2 urzeka mnie kontrolą typów na poziomie jeżyka (a nie XML)

Hmm, w Springu(2.5-3) przy pomocy adnotacji i skanowania komponentów możesz równie dużo, co prawda nadal potrzeba trochę xmli (o wiele mniej jak choćby w spring 2) no ale możne je zastąpić java propertiesami (ini)

* duża firma Google Inc. bazuje na Guice i jest zadowolona ;)

Myślę, że nie koniecznie jest to wyznacznik jakości, po prostu dopasowali narzędzia do potrzeb.

konto usunięte

Temat: Czy Guice 2 jest najdojrzalszym Dependency Injection?

Tomasz Cejner:
Przyglądałem się kiedyś Guice 1.x, sprawiał wrażenie lekkiego i dobrze pomyślanego.
Ale... nowe fajne frameworki są nowymi fajnymi frameworkami, a kiedyś trzeba zejść na ziemię i wrócić do ciężkiej pracy :-)

Czy nowe Guice integruje się z Hibernate? JDBC? JMS? Quartzem? Serwletami? Daje jakąś fajną propozycję MVC? Jeśli odpowiadający na to pytanie zacznie się miotać, developer wróci do swojego Springa, który jest jaki jest, ale ma to co na co dzień jest potrzebne.

z Hibernate przecież na pewno... :P

Następna dyskusja:

Czy przy pomocy TDD tworzon...




Wyślij zaproszenie do