Omegapoint

2009-06-02

Snuskigt rika klienter

Jag övertalade Peter att vi på måndagseftermiddagen skulle gå och lyssna på dragningen om Filthy Rich Clients. Detta skulle jag inte gjort. Jag har läst boken, Filthy Rich Clients av Romain Guy och Chet Haase (boken rekommenderas varmt) och de är två begåvade författare och föreläsare. Deras dragning om Filthy Rich Clients finns på Parleys.

Men? Vem är det som kör egentligen?

Min tanke var alltså att även om varken Romain (Google och Android) Chet (Adobe och Flex) jobbar kvar på Sun så kanske de som ordnat passet förstått att hela upplägget kräver en viss nivå av show och flash. Tyvärr. Passet hölls av Mick McLaughlin från Tribune Media Services. Som talare var det inget större fel på honom, men han verkade inkastad i sista stund och han verkade se presentationsbilderna första gången samtidigt som vi andra. Klart imponerande att han klarade sig så bra som han gjorde. Han drog igenom 178 dior i en rasande takt och körde säkert 20 stycken demo-applikationer (mer om dessa senare ... )

Snuskigt klientel

Filthy Rich Clients är alltså ett samlingsbegrepp för att göra en rikare användarupplevelse, framför allt i Swing med hjälp av Java2D. Gränssnitten har blivit betydligt mer avancerade med åren och användarna förväntar sig något mer än pastischer på Xerox Parcs arbete från tidigt 70-tal. Tänk MacOS X, Playstation 3, Spotify m fl.

Går detta att åstadkomma med Java och i Swing? I princip: ja. Alla grafiska primitiver man behöver finns i Java2D och konstruktioner som att Swings behållare har en överliggande genomskinlig panel som man kan rita på, gör ett mer modernt utseende möjligt. Det är mer en fråga om tekniska handgrepp och trick (som man kan lära sig i Filthy Rich Clients-boken).

McLaughlin gav först lite grundläggande skäl för varför det är viktigt att ge användaren en visuellt intressant upplevelse. För mig är det helt självklart och uppenbart att det är så, men med tanke på de kod-demonstrationer som Filthy Rich Clients-passet innehöll (mer om detta snart ... ) verkar det inte ens gälla för de på Sun som pratar om det. Man ska inte kasta spjut i radhus.

But first, låt mig gnälla lite ...

Tyvärr var det utanför presentationen, men något som stör mig enormt är Java2Ds texthantering. Den är inte bra och gör att alla Java-program som skriver grafisk text på skärmen, ser märkliga ut. Detta är för att Sun aldrig velat betala för att tillverka tillräckligt bra typsnittsrastrering, något som Microsoft och Apple har haft stora ingenjörsteam för att göra. Det får effekten att Java-applikationer alltid ser lite fel ut. Det må vara på en detaljnivå, men det är sådana detaljer som vi människor är bra på att upptäcka. Så även om Java, Java2D och Swing gör det möjligt att tillverka moderna applikationer så kommer alltid de kännas lite konstiga. Ska sluta orera mina "pet peeves" ... men ... usch ... när ska folk börja ta skrift på skärmen på allvar?!

Svängarbetare, förena eder!

Presentationen gick in på tekniken. Först lite grundläggande hur Swing fungerar, alltså eventtråden och liknande. Något som är bra att komma ihåg är att man numera med fördel kan använda SwingWorker för att i en tråd ta hand om någon tung uppgift. (Alltså när man vill göra typ calculateAllMersennePrimes() och ändå ha ett svarande användargränssnitt medan man väntar). Den utility-klassen finns tillgänglig sedan Java 6.0.

Efter detta följde en lång stund av grundlig genomgång av Java2D-primitiver och diverse tekniker för att skapa grunder för visuella effekter. Exempel på sådana tekniker är att använda ConvolveOp för att skapa oskärpa. ConvolveOp beskrevs av McLaughlin som något otroligt matematiskt komplicerat, men alla som läst grundkursen i linjär algebra fattar att det bara är matrismultiplikation som transformerar färg- och möjligen alpha-värdet på en pixels nio omkringliggande pixlar.

Java Swing: Because, Last Impressions First

Någonstans här började det stora problemet med hela presentationen bli väldigt tydlig: demonstrationsprogrammen såg ut som att de var gjorda i Swing av någon från ... ehum ... Sun. Fula — märkliga färger, inte anti-aliased etc etc — och dåliga — förändra storleken på fönstret och programmet antingen kraschar eller det blir en stor grå ruta. Det kändes helt enkelt inte trovärdigt och blev ett antal gånger riktigt pinsamt.

Animation görs bäst av Random Guy on The Internets™

Den sista delen av presentationen handlade om animation. Animation behövs i användargränssnitten för att göra massa subtila effekter som exempelvis ger användaren feedback om vad som händer i programmet (progressbars m m). Att göra detta i Swing är rätt jobbigt om man ska göra allt själv, men det finns ett bra bibliotek, Timing Framework, som Chet Haase har skrivit som innehåller allt man behöver. Dock blir det väldigt uppenbart att Swing och animation skulle underlättas otroligt mycket av språkkonstruktioner som closures och properties. Haases animationsbibliotek använder properties-begreppet för att koppla in sig på något man vill animera, men eftersom riktiga properties inte finns i Java måste han använda strängar för att beskriva det getter/setter-par han vill åt och sedan använda reflection. Det finns ett bra engelskt ord för att beskriva hur jag känner om detta: icky ...

Sammanfattning: Svängkärlek behövs

Betyg: 2

Vad kan man ta med sig från en sån här presentation? Hmm. Tja. En sak är säker: det är uppenbart att Sun är ett företag som behöver många, många fler som bryr sig om problemet. Speciellt nu när de två de hade har slutat (Jasper Potts är dock i och för sig fortfarande kvar och bryr sig nog en del ... tror jag ... ) Om man försöker övertyga folk om att Swing och Java2D är jättebra för att skapa visuellt intressanta applikationer får inte demonstrationsprogrammen se sämre ut än de där Java Applets:en man såg 1995 liksom. Det blir pinsamt.

Dock misstror jag inte för ett ögonblick att Java2D kan producera grafik helt i klass med allt som finns i t ex MacOS X. Om man bortser från den lilla detaljen med text då förstås ...

Förlåt Peter. Du hade rätt. Vi borde gått på Learning How Java ME Development Works Best for Mobile Devices istället. (← insert smiley here)

1 kommentar:

Zsolt sa...

Problemet med GUI är att teknikerna (i flesta fall) har ingen grafisk och ergonomisk kunskap. Det krävs ett team av minst 2-3 olika experter i varsitt område för att få fram snygga, användarvänliga, verksamhetsanpassade GUIs. Och i flesta fall har man antingen inte råd, förståelse eller intresse att göra en sådan satsning. (Tydligen inte ens Sun för JavaOne-s skull.) Swing är bara en (mer eller mindre) bra verktygslåda.

Skicka en kommentar

Om Omegapoint

Omegapoint AB är ledande rådgivare och experter inom Systemarkitektur, Säkerhet och IT-ledning.

Twitter uppdateringar

Omegapoints kvitterström:

    Andra Omegapointbloggar