fredag 9 maj 2008

JavaOne 2008, dag 3, 8:e maj 2008

Om vi lyckades dåligt med att boka bra pass på onsdagen så lyckades vi desto bättre på torsdagen. Dagens första pass var Intels allmänna pass ”Innovations Through Software”. Innehållet i det var i princip detsamma som i AMD:s allmänna pass dagen innan, men här presenterat på ett mycket bättre och snyggare sätt. Teman var övergången till flerkärneprocessorer, hur Intel har processorer för alla slags enheter; från Atom till Itanium samt hur Intel samarbetar med Sun om att göra JVM:en snabbare. Vid förra årets allmänna pass satte de upp målet att JVM:en idag skulle vara 60% snabbare än vad första 6.0-JVM:en var i SPECjbb2005-testet. På scenen gjorde de en demo som visade en cirka 70-procentig prestandaförbättring mellan JDK 6u5p och JDK 6 FCS på samma hårdvara. Imponerande och ett bra bevis för att det inte bara är säkerhetsuppdateringar som inkluderas i varje uppdatering av JVM:en.

Intel pratade också om sin nya linuxbaserade plattform för mobila enheter, Moblin. Den är tänkt att användas för enheter som till exempel små surfplattor eller GPS-mottagare och speciellt i samband med deras nya processor för mobila enheter, Atom.

Nästa pass handlade om vad som kommer i NIO 2 (JSR 203) i Java 7. Den stora nyheten där är ett helt nytt filsystems-API som är tänkt att ersätta användandet av dagens java.io.File (som förstås kommer att finnas kvar i Java även framgent). I övrigt handlar JSR 203 om tillägg till befintliga NIO-funktioner. Till exempel uppdateras I/O-stödet i Java nu till att stödja de senaste multicastprotokollen samt till att stödja Infiniband-nätverk.

Sammanfattningsvis kan vi säga att de ser ut att lyckas mycket bra med det nya filsystems-API:et. Det innehåller en klass för att representera sökvägar, Path, och en klass för att representera en filreferens, FileRef. API:et öppnar för att olika filsystemsimplementationer, till exempel minnesfilsystem, kan implementeras av filsystems-providers. Det innehåller också nya metoder för att kopiera och flytta filer samt för att skapa filer och sätta attribut i atomiska operationer. Alla metoder i API:et kastar IOExceptions istället för att bara returnera true eller false. Det har support för hårda och symboliska länkar, stöd för filattribut såsom Posix-attribut eller DOS-attribut, stöd för notifieringar när filer eller kataloger ändras, med mera, med mera. Många av förbättringarna jämfört med java.io.File är lågt hängande frukter, så visst är det märkligt att det har tagit tretton år för dem att hitta in i Java.

En intressant aspekt av filattributen är att de inte är plattformsoberoende. Många Java-API:er ger en funktionalitet som är snittet mellan funktionaliteten som finns på varje plattform som stöds, men i filsystemsfallet så är inte det snittet stort nog för att vara tillräckligt användbart för många. Större företag med stora resurser har då varit tvungna att sätta utvecklare på att skriva native-kod för den funktionalitet som saknas. I och med de nya filsystems-API:et så går Java några steg mot det läger som bebos av, till exempel, Python; språk som implementerar plattformsspecifika stöd för de filsystemsfunktioner som finns på varje stödd plattform.

Kalle kan konstatera att i och med NIO 2 förlorar ett viktigt argument för att använda EntityFS i styrka; det att EntityFS har metoder för att kopiera och flytta filer som klienten annars skulle behöva implementera själv. Det finns fortfarande kvar en stor skillnad mellan EntityFS och NIO 2, dock, och det är att filer och kataloger i EntityFS representeras av entitetsobjekt, medan de filobjekt som finns i NIO 2 bara refererar platsen filen ligger på. På EntityFS-hemsidan finns det en liten utredning om vad det medför för fördelar för den som är nyfiken. NIO 2 kommer att bli en utmärkt filsystemsprovider för EntityFS, dock.

Nästa pass hette ”Advanced Web Application Security” och hölls av Joe Walker, känd från Jfokus. Han gick igenom säkerhetshoten Cross-Site Request Forgery (CSRF), JavaScript-kapning samt Cross-Site Scripting (XSS) och visade med en demosajt http://blabberone.sitepen.com hur lätt det var att vara sårbar för dem. En bra, nyttig och, framförallt, rolig föreläsning. För den som vill ha hjälp med att skydda sig, så har OWASP en del användbar information och kod. Se http://www.owasp.org/

Efter lunch fortsatte vi med passet ”Programming with Functional Objects in Scala”. Det gick mest ut på att beskriva likheter och skillnader mellan Scala och Java. Kortfattat så är Scala ett programmeringsspråk som gifter samman objektorientering och funktionell programmering på ett mycket tilltalande sätt. Scala-kod kompileras till bytekod och körs på JVM:en. Vi rekommenderar alla som inte har kikat närmare på Scala att göra det – det kommer iallafall vi själva att göra. Vår profetia är att vi alla om tio år kommer köra Scala i våra flygande bilar.

Om dagen hittills varit helt lysande så kändes det som att vi nu passerat höjdpunkten. Passet vi gick på hade den enormt långa titeln ”Next-Generation Java Platform, Micro Edition (Java ME Platform) CDC/MIDP/OSGi Stack for Mobile Devices”. Här presenterade mobiloperatören Sprint sin nya javatjänsteplattform. De rabblade JSR:er som de stödjer och försökte mer göra reklam än att faktiskt presentera vad de gjort. Ointressant! Efter passet pratade vi med några svenskar som gått på fler J2ME-pass än vi, och det låter som om de har hållit betydligt lägre standard än passen i övrigt.

Dagens sista pass var ett riktigt kalkonpass. Det hette ”Designing Graphical Model-Driven Applications: Lego Mindstorm”. Vi får erkänna att när vi bokade det tittade vi mest på ”Lego Mindstorm”-biten och läste inte så noga vad som stod framför. Stort misstag! 58 minuter av passet gick åt att dribbla kod mellan två Mac-datorer och sedan felsöka den på klassiskt Albert och Herbert-manér och under de sista två minuterna kunde vi se en robot gå fram och tillbaka en liten bit och sedan trilla. Vi hoppas att de båda föreläsarna har jobb där de inte kan göra så mycket skada.

/Fredrik Stålnacke och Kalle Gustafsson, Omegapoint

Inga kommentarer: