29 september, 2010

Spring Framework


I mitt dagliga arbete jobbar jag främst med JEE och 'standarder' inom dess sfär. Om vi pratar system med transaktioner brukar verktyget vara EJB's som anropar någon sorts datakälla/tjänst. För att vidga mina vyer gick jag SpringSource´s officiella Core Spring-kurs innan sommaren.
Spring har varit väldigt hajpat under ganska lång tid så jag hade ganska höga förväntningar på kursen och Spring som ramverk, men jag måste säga att jag blev ganska besviken. På flera punkter.

  1. IoC/Dependency Injection: Spring´s modell för DI känns föråldrad eftersom jag jobbat en del med Google Guice innan. Konfiguration i en stor XML-fil är något man till stor del lämnat inom JEE-världen, men tydligen inte inom Spring. Kompilatorstöd någon? Typkontroll? Refactoring? Allt detta tappar man när bindingen sker i en XML-fil. MEN... Detta har Rod och grabbarna på SpringSource givetvis fattat,  detta är nästa punkt i min lista.
  2. STS (SpringSource Tool Suite): SpringSource har byggt en egen IDE som bygger på Eclipse. STS har de features som jag saknar ovan. Men jag vet inte, det känns inte riktigt som rätt väg att gå. Det känns nästan som den klassiska boken Core J2EE Patterns som kändes mer som ett sätt för SUN att "rätta till" de värsta problemen i J2EE-plattformen (EntityBeans som tungt exempel). Vissa av de patterns som listas i boken är skrattretande, "Fast Lane Reader" någon?
  3. Spring Web MVC: Struts 1 all over again, känns fullständigt passé.
Däremot finns det några riktigt guldkorn i Spring. Ett av dem är definitivt Spring JDBC. Denna del av Spring borde egentligen vara en del av JDK'n för att den sköter JDBC-hanteringen (speciellt felhantering) perfekt, klockrent! En annan del av Spring jag gillar är Spring Remoting, Spring's sätt att kommunicera med andra system/protokoll sköts mycket snyggt och enhetligt. Klienten behöver inte veta vilket kommunikationsprotokoll som används, snyggt! Man kan enkelt växla mellan RMI, HTTP Invoker (Spring's egna protokoll över HTTP, väldigt effektivt), Hessian (Binärt protokoll över HTTP, mycket effektivt), Burlap (XML-baserad serialisering över HTTP), JMS och Webservices. Stiligt.

Slutsatsen från min exkursion i Spring är att Spring har sina guldkorn, som kan användas separat (t.ex. Spring JDBC). Det känns dock som att Spring blivit den "beast" som man ville bekämpa (J2EE, krånglig konfiguration i XML osv.), numera finns det t.o.m. ett applikationsserver för Spring. JEE har tagit mycket inspiration från Spring och det känns som att JEE gänget går från klarhet till klarhet. Spring kommer helt klart få problem att attrahera utvecklare i framtiden, speciellt när JEE 6 kommer.

Men, jag skulle vilja testa Spring i något riktigt projekt för att se hur det är i verkligheten för en kurs är bara en kurs.

Inga kommentarer:

Skicka en kommentar