Jag har de senaste veckorna arbetat med en ny tjänst för mobiltelefoner (ett uppdrag jag tagit över efter min kollega Mikael). Som ni förstår så är det alltså Java Microedition som det hela byggs i. Nu var det ett tag sen jag kodade något i Java ME på riktigt så jag hade glömt en hel del detaljer. Uppenbarligen är det lika illa ställt med Java på mobiltelefoner idag som det var för ett par år sedan. Om du ska skriva en applikation som du hoppas på att många ska använda så behöver den fungera på flera olika tillverkares telefoner, och det är här problemen börjar. För att din applikation ska kunna få göra något mer avancerat än att visa bilder och text så behöver den signeras (ok, den måste inte signeras, men användaren kommer bli nipprig på alla frågor om att låta applikationen göra ditt och datt). Nu tycker man kanske att det bara vore att använda samma signeringsverktyg som finns i Java SE, och i princip ska det vara likadant. Dock har olika mobiltelefontillverkare bestämt sig för att hitta på egna lösningar och metoder för det hela. Att signera en applikation som ska köras på en Motorola-telefon kräver ett speciellt certifikat från Motorola, Samsung vill signera allting själv (alltså, skicka in ditt program till ddem och få tillbaka det ett par veckor senare) och sådär fortsätter karusellen. Den enda telefontillverkare som försökt hålla sig till standarden är SonyEricsson (som för övrigt lyckats följa de olika Java ME standarderna bäst).
När du väl kommit runt problemen med signering så har vi APIerna som telefonerna hävdar att de stödjer. Ta JSR-234 (Advanced Multimedia Supplements) som kort och gott syftar till att tillhandahålla lite mer avancerade funktioner för media i telefonen. Det finns klasser för 3D ljud, video, kameran och FM radio. Låter spännande, eller hur? Problemet är bara att det enda som mobiltelefontillverkarna valt att stödja i det APIet är kamera-funktionerna, på sin höjd. Om nu telefonen har en FM radio, stöd för 3D ljud och möjlighet att spela upp video, vaför kan jag inte få accessa dessa funktioner i Java ME då?! Såhär är det med många av de mer intressanta JSRer som finns för Java ME. Vanligtvis är det återigen SonyEricsson som har bäst stöd, men det är en ganska klen tröst när de är långt ifrån de vanligaste telefonerna på marknaden (åtimstone utanför Sverige).
Det känns lite som att mobiltelefontillverkarna (och i viss mån även operatörerna som låser och begränsar enheterna) medvetet sätter krokben för tredjeparts-tillverkare. Idag är det oerhört svårt för en utomstående att få in sin applikation på mobiltelefon-marknaden. Det tråkiga är att Java ME är det enda reellla alternativet, Symbian C++ är ännu värre att koda i och fungerar sällan likadant på olika telefoner och .NET har ett ytterst begränsat stöd på dagens mobiltelefoner. Flash-applikationer hade varit ett alternativ, men det är tyvär fortfarande en alltför begränsad platform.
Jag hoppas att nästa version av MIDP (3.0) som är på väg kommer lösa många av dessa problem som vi utvecklare stöter på. Dock tror jag att vi även i framtiden kommer behöva slåss både mot mobiltelefontillverkarnas ovilja att följa standarder.
…och då har jag inte ens nämt hela dramatiken kring DRM-skyddat material och Java ME..