lördag 10 maj 2008

JavaOne 2008, dag 4, 9:e maj 2008

Sista konferensdagen inleddes med det allmänna passet ”Extreme Innovation”, där James Gosling presenterade ett tiotal häftiga projekt som alla har det gemensamt att de använder Java. Projekten sträckte sig mellan de konkreta och direkt användbara som VisualVM (se tisdagens blogg) och JavaScript-stödet i nya NetBeans, till de lite mer esoteriska som den automatiska bilen Tommy Junior eller projektet för att visualisera data från Cern.

JavaScript-stödet i NetBeans består av en bra editor med kodningshjälp i, samt möjligheten att debugga JavaScript-kod inifrån Firefox. Det såg mycket lovande ut och det känns som att det är dags att ge NetBeans en chans igen.

En annan spaning så här sista dagen är att varje gång som vi ser Sun på scenen när de ska presentera vad de håller på med så plockar de fram någon form av mobil applikation. Så även på det här passet. Här visade de vad de kunde göra med nVidias APX 2500-plattform tillsammans med OpenGL och 3D-ljud i en mobiltelefon. Snyggt att se hur mjukt de kunde animera ett landskap.

Dagens andra pass hette ”More Effective Java” och hölls av Joshua Bloch, författare till boken Effective Java som precis kommit i en andra utgåva. Den som inte har läst den boken än, rekommenderas att göra det å det snaraste.

Även om Joshua Bloch är en mycket entusiastisk föreläsare, så kände vi att innehållet i passet kanske egentligen bäst lämpar sig i bokform. På en föreläsning är det svårt att visa några relevanta kodexempel som deltagarna kan filosofera över i lugn och ro, till exempel.

Joshua lanserade akronymen ”PECS”, åtföljd av bilden på en välpumpad Arnold, för hur man ska tänka kring wildcards i metoddeklarationer. PECS står för Producer Extends, Consumer Super. Det betyder att om du skickar in ett objekt som producerar data i en metod, så bör det objektet deklareras ”? extends X” i metoddeklarationen, medan om du skickar in ett objekt som tar emot data i en metod, så bör det deklareras ”? super X”.

Nästa pass hette ”Everything Java Technology... but Better and Faster: The Evolution of JPC” och hölls av ett par fysiker från Oxford University. De har byggt en x86-emulator i ren Java. De visade hur de kunde boota DOS i en applet och spela Super Mario eller Doom i den. De gör många tricks bakom kulisserna för att få acceptabel prestanda. Nu låg de någonstans kring 10% av full prestanda (kod som körs direkt på datorn, utan emulering) för kod som körs flera gånger, men målet ligger på 50%.

Varför i hela friden gör de då detta? Det finns ju redan flera färdiga x86-emulatorer eller virtualiserare, varav många är gratis att använda. Deras mål är att kombinera JPC med Nereus som är en produkt för att sprida och fjärrstyra mjukvara för att kunna distribuera helt skräddarsydda miljöer till många datorer. Till exempel så skulle en forskargrupp kunna köra sprida ut och köra någon mystisk fortranapplikation som kräver en viss Linux och en viss uppsättning kodbibliotek till ett stort antal datorer utan att de behöver konfigureras alls, annat än att de måste köra en Nereus-klient. Genom att köra programmen i en applet så får de en stark säkerhetsmodell på köpet, och kan inte ställa till med något på klientdatorerna. SETI @Home-släng er i väggen!

Efter en mycket kort lunch gick vi till passet ”Advanced Java NIO Technology-Based Applications Using the Grizzly Framework”. Grizzly är ett NIO-ramverk för att bygga nätverksservrar och används av flera stora projekt, däribland (förstås) Glassfish. Om det var lunchens eller föreläsarnas fel ska vi låta vara osagt, men det var iallafall stundtals mycket svårt att hålla ögonen öppna.

Nästa pass kom som en, vid det här laget, välbehövlig vitamininjektion. Det hölls av Cameron Purdy som grundade Tangosol och nu är ett relativt högt höns på Oracle efter deras uppköp. Passets titel var ”Top 10 Patterns for Scaling Out Java Technology-Based Applications” och det var en genomgång, på hög nivå, av alla de problem som måste tacklas för den som vill skala ut ett system, alltså sprida det över flera servrar.

Dagens sista pass var också det mest konkreta. Det hette ”Improving Application Performance with Monitoring and Profiling Tools” och handlade om vilka verktyg som finns för att undersöka en javaapplikation i drift. Det handlade dels om de verktyg som följer med i Java, såsom jstack, jconsole och jhat, samt dels om andra verktyg som finns tillgängliga på annat sätt, såsom VisualVM eller DTrace.

Fredrik sammanfattade passet bra genom frågan ”Varför lär de inte ut det här i en javagrundkurs?”. Vi tror att alla javautvecklare skulle må bra av att lära sig mer om de här verktygen. Vi får se till att vi kör ett pass kring dem under någon kompetensdag framöver.

Så slutade en lång och mycket givande konferens. Vi längtar redan till nästa år!

/Fredrik Stålnacke och Kalle Gustafsson, Omegapoint

4 kommentarer:

Erik Tjernlund sa...

Java i mobilen? Ring mig när det funkar på iphone:n.

Däremot räcker jag upp handen när det kommer till frågan "Vilka vill bli bättre på att använda jstack, jhat etc etc"? (Och dtrace!)

Superbt bloggande K & F! Heja!

Tommy Malmström sa...

Längtar till nästa år gör även vi som inte hade möjlighet att åka med i år.

Hoppas att er entusiasm håller i sig så länge...

Ser fram emot ett par schyssta återberättningar på en stundande kompetensdag :-)

John Wilander sa...

Jag vill veta mer om j-verktygen! På en kompetensdag nära mig och snart hoppas jag.

Bra bloggat. Bra som f*n.

Unknown sa...

I am proud of you, men!

Return to home base.

Over and out.