onsdag 7 maj 2008

JavaOne 2008 - Java University

Det är ett helt samiskt tempo på sessions, BOFar, Labbar och fester, så det har varit svårt att hinna med att rapportera från JavaOne 2008. Därför kommer här nu en första rapport från i onsdags, två-tre dagar för sent.

Jag hade två kurser inbokade, Developing Enterprise Applications with the Spring Framework på förmiddagen och
Web 2.0: Leveraging the Project jMaki and Google Web Toolkits for Rapid Website Development på eftermiddagen.

Tyvärr satt ingen av kurserna så där perfekt som jag hade hoppats. Chris Richardson, som höll i kursen, lyckades i alla fall få mig att på allvar titta närmare på AOP, aspektorienterad programmering. En annan mycket viktig fördel som Spring hjälper dig med är decoupling (vad man nu kallar det på svenska). Ju öppnare och renare du lyckas hålla det mellan dina klasser och moduler, desto lättare blir det att testa, underhålla och förstå koden. Dessutom låser du dig inte till ett visst teknikval i samma utsträckning.

Vore det inte märkligt att behöva bestämma sig för en livsmedelsaffär där man handlar och sedan behöva leva med det valet för resten av sitt liv?

public class You {
private Konsum store = new Konsum();

public void shop() {
store.shop();
}
}

I det här fallet är You starkt kopplad till affären Konsum och det är svårt eller omöjligt att byta affär utan att skriva om koden. Om vi nu istället tänker oss att vi har ett interface, Store, som representerar en affär där vi handlar och låter något annat (Spring) avgöra var vi handlar:

public class You {
private Store store

public void setStore(Store store) {
this.store = store;
}

public void shop() {
store.shop();
}
}

I Springs konfigurationsfil:

...
<bean id="icaStore" class="se.athega.stores.Ica"/>
<bean id="you" class="se.athega.persons.You"/>
<property name="store"><ref bean="icaStore"></property>
</bean>

...

Allt jag behöver göra nu för att byta affär är att ändra i en XML-fil. När jag vill testa You kan jag enkelt mocka Store och livet har blivit så mycket enklare.

På eftermiddagen var jag på väckelsemöte för Google Web Toolkits. Själva frälsningen stod David Geary för. Han menade att det var synd om alla som använde Struts och skrek "AJAX!" varje gång något hände på sidan utan att den laddades om, även om det bara var att uppdatera ett textfält. Förutom GWT, fick jag en introduktion till JMaki som är en wrapper runt de flesta populära Web 2.0 JavaScript-ramverken, såsom Dojo, YUI, etc. Jag kommer definitivt att använda JMaki för de fall jag behöver blanda de olika ramverken.

Fördelarna med GWT är framför allt att du kan programmera med Layout-paneler och UI-komponenter på samma sätt som du skulle om du gjorde ett desktopprogram. GWT översätter sedan Javakoden du skriver till HTML, CSS och JavaScript, helt automagiskt. Detta ger dessutom en fantastisk fördel tillsammans med Googles fakebrowser, som du kan använda under utveckling, där du kan debugga och stega dig igenom kod, oavsett om det är serverkod eller klientkod.

Inga kommentarer: