1. namnet java

    pÄ en skÀrgÄrdsbÄt i helgen stötte jag pÄ en bekant frÄn förr och vi uppdaterade varandra pÄ vad vi sysslar med numera. jag berÀttade att jag arbetar som javakonsult och samtalet gled in pÄ vad namnet java betyder och var det kommer ifrÄn. javaloggan innehÄller ju en kaffemugg; har java tagit sitt namn frÄn kaffesorten eller ön Java eller bÄde och, eller frÄn ön fast via kaffesorten. men om namnet Àr taget ifrÄn kaffesorten, hur kommer det sig dÄ att det java-relevanta opensource-projektet jakarta, som ju ocksÄ Àr namnet pÄ en stad pÄ ön Java, har fÄtt just namnet jakarta. kommer kaffesorten Java frÄn ön Java? eller Àr java dessutom en förkortning för nÄgot?

    ok, enligt javaworld valde sun namnet Java för att det Ă€r en ”kaffe-metafor” (!). tja. metafor enligt wikipedia:

    Metafor, ett bildligt uttryckssÀtt dÀr ett begrepp tillfÀlligt byts ut mot ett begrepp som liknar det ursprungliga.

    alltsÄ Àr ex ordet villaprisbubbla en metafor men jag ser inte hur namnet java skulle vara en kaffemetafor för ett programmeringssprÄk eller plattform. visst, java Àr dynamisk, revolutionÀrt och roligt, men har kaffe dessa egenskaper?

    jakarta dÄ? en uppenbar kaffe->programsprÄk->geografisk-metafor man tycka, men faktiskt Àr svaret nÄgot annat. enligt wikipedia döptes opensource-projektet jakarta efter ett konferensrum och inget annat:

    ”A frequent question in discussions related to Jakarta regards the origin of the name. Jakarta is not directly named after the capital city of Indonesia (which happens to be located on the Java island), nor after the Jakarta blue butterfly species. Instead, it is named after the conference room at Sun Microsystems where the majority of discussions leading to the project’s creation took place.”

    pĂ„ bĂ„ten trodde jag att det finns fler java-relevanta projekt/mjukvaror med namn frĂ„n omrĂ„det kring ön java, men nu nĂ€r jag letar efter detta pĂ„ nĂ€tet sĂ„ blir jag osĂ€ker…

  2. REST – Vad Ă€r det?

    I webbservicevÀrlden har det pratats om REST en del. REST som ett annat sÀtt att presentera webbservices Àn SOAP och hela WS-*-stacken med protokoll och specifikationer.

    Jag har för avsikt att i ett paper eller inlÀgg lite senare gÄ igenom skÀlen varför REST kan vara bra. I en framtida presentation jag Àmnar hÄlla, sÄ ska jag dessutom visa hur man kan göra.

    Men, slog det mig just, dÄ mÄste jag ju först sÀga vad det Àr, eller hur?

    NÄ, till att börja med Àr det ingen teknisk standard. Det Àr inget protokoll. Det Àr ingen applikation. Och det Àr inte ens ett alternativt SOAP. Framförallt Àr det inte ett alternativt SOAP.

    REST Àr ett designmönster.

    Applikationer skrivna utifrÄn REST-mönstret löser ungefÀr samma saker som applikationer skrivna med SOAP gör, fast ibland bÀttre, (och dÄ per design bÀttre).

    Det applikationsprotokoll som anvÀnds Àr först och frÀmst HTTP. Inte som SOAP, som anvÀnder HTTP som ett transportprotokoll, och som i teorin skulle kunna anvÀnda helt andra protokoll. Nej, vad REST handlar om Àr att anvÀnda HTTP som applikationsprotokoll i sig sjÀlv.

    Vad det innebÀr kan du lÀsa i min nÀsta post.

  3. NĂ€sta Javaforum 23 maj

    arrangeras som vanligt av IBS JavaSolution. Denna gĂ„ng blir det bland annat rapport frĂ„n JavaOne ‘07, XFire, eXist, Rest, godbitar frĂ„n SUN. Vi avslutar med JavaPub sponsrad av SUN!

    AnmÀlan pÄ javaforum.se

  4. De största och vanligaste misstagen med XML (del 1)

    XML har idag funnits som en standard i lite mer Àn 9 Är (publicerades den 10:e februari 1998). Jag har sjÀlv varit en stor anhÀngare av att anvÀnda XML till allt möjligt, ibland kanske i en lite för stor utstrÀckning. Oavsett vad man anser om XML sÄ Àr standarden hÀr för att stanna och vi kommer dras med i en lÄng tid framöver. Problemet Àr bara att utvecklare inte Àr helt pÄ det klara med vad XML faktiskt Àr för nÄgot. Detta leder ofta till att man stöter pÄ XML som anvÀnds felaktigt pÄ ett eller annat vis. Efter SQL sÄ Àr nog XML den standard jag arbetat mest med, sÄ jag tÀnkte ta upp ett par av de vanligaste misstagen jag stöter pÄ. Jag tÀnkte Äterkomma till detta i senare inlÀgg ocksÄ, sÄ hÀr kommer det mest allvarliga felet som jag stöter pÄ.

    Encoding och att manuellt skriva XML
    XML Ă€r visserligen i ett s.k. ”human-readable” format, eller vanlig text om man sĂ„ vill. Detta gör att utvecklare ibland vĂ€ljer att skriva XML med hjĂ€lp av vanlig strĂ€ng-konkatenering istĂ€llet för att anvĂ€nda ett befintligt XML API, sĂ€rskilt om det bara Ă€r en XML-snutt som enkelt ska skickas ut pĂ„ en webbsida eller dylikt. I princip Ă€r ju det samma sak som XML APIerna gör, sĂ„ varför kan man inte göra det manuellt om man bara ska ”slĂ€nga ihop” nĂ„got snabbt? Visst, vet du vad det Ă€r du gör sĂ„ Ă€r det ju inte fel, men problemet Ă€r att man oftast glömmer bort viktiga detaljer, nĂ„got som kan fĂ„ allvarliga konsekvenser lĂ€ngre fram. Ett vĂ€l-formulerat (well-formed enligt XML specifikationen) behöver visserligen ingen XML-deklaration (första raden i XML som har formatet: ), men om inget sĂ„dant finns sĂ„ görs vissa antaganden. Den encoding som anvĂ€nds Ă€r vanligen det som orsakar störst bekymmer nĂ€r man manuellt skriver XML. Anger man ingen XML-deklaration med ett encoding-attribut sĂ„ antas det att det Ă€r UTF-8 eller UTF-16 som anvĂ€nds (vi gĂ„r inte in pĂ„ detaljerna för dessa hĂ€r, kolla XML specifikationen för detaljer).

    SÀg nu att du i Java skriver XML manuellt och att du sitter i Windows nÀr du skriver. Nu kommer din XML följa den encoding som anvÀnds i Windows, vilket betyder CP1252 för oss hÀr i Sverige. Om du nu inte angett encoding sÄ uppstÄr problemet nÀr XML-dokumentet ska lÀsas in igen, eftersom en XML-parser ska anta att det Àr UTF-8 eller UTF-16 om ingen encoding angetts. I de flesta fall Àr inte detta nÄgot problem, eftersom ASCII Àr ett subset av UTF-8 och CP1252 mappar de flesta tecken till samma bytes som ASCII. Men nÀr du anvÀnder nÄgot tecken utöver de första 127, t.ex. Ä, À eller ö, sÄ kommer det bli problem. Detta Àr anledningen till att du fÄr ibland inte fÄr se svenska tecken korrekt i ett XML-dokument. Ni har sÀkert stött pÄ detta pÄ vissa webb-sidor dÀr Ä, À och ö förvandlas till nÄgot helt annat. Kort sagt, skriver du XML manuellt sÄ mÄste man tÀnka pÄ att skriva XML-deklaration och anvÀnda rÀtt encoding. Eftersom det inte alltid Àr helt lÀtt att komma hÄlla ordning pÄ detta (skriver du med en OutputStream eller Writer i Java sÄ anvÀnds operativsystemets encoding om inget annat anges, sÄ du kommer ha olika encoding frÄn samma program beroende pÄ vilket OS du kör pÄ) sÄ Àr det alltsÄ sÀkrare att anvÀnda ett XML API för att skriva din XML.

    NÀsta gÄng; taggar, attribut eller tecken, vad ska man anvÀnda egentligen?

  5. Mobilapplikationer i verkligheten

    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..

  6. Dra ditt strÄ till stacken

    Jag har vid flera tillfÀllen mÀrkt att en del bra open-source projekt dör med tiden. Det Àr ledsamt men naturligt. För det mesta Àr det smÄ projekt med nÄgon enstaka eldsjÀl bakom som drabbas av detta. NÀr eldsjÀlen tröttnar eller av nÄgon anledning inte har tid lÀngre finns ingen som kan ta över. Jag stötte pÄ detta senast i helgen nÀr jag tyckte det var dags att uppgradera phpDiveLog som jag tycker Àr en trevlig webbapp för att presentera dykloggar. Inget har hÀnt pÄ lÀnge.
    Vad kan man dĂ„ göra Ă„t saken? Mitt rĂ„d Ă€r att kavla upp Ă€rmarna och hjĂ€lp till. Om fler engagerar sig i alla smĂ„ fria trevliga utilities förenklas vĂ„r tillvaro (eller blir vi datanördar bara nördigare?). Jag började fixa till phpDiveLog för att passa mig bĂ€ttre men sĂ„ hittade jag plötsligt jDiveLog (Java!!!) som lever i allra högsta grad och har massor av mer funktionalitet. Detta Ă€r vĂ€l en orsak till att vissa projekt dör, de konkurreras ut helt enkelt. Men mitt budskap kvarstĂ„r: tveka inte att engagera dig – du behövs!

  7. Pusha meddelanden i JME

    JME blir allt populÀrare och det finns en hel del godbitar som mÄnga inte kÀnner till. En sÄdan Àr möjligheten att frÄn en applikation pusha meddelanden till tex en mobiltelefon som automatiskt processar meddelandet pÄ rÀtt sÀtt nÀr det kommer fram utan att anvÀndaren sjÀlv mÄste aktivera nÄgot program pÄ telefonen. Denna funktionalitet Àr en av mÄnga nyttiga funktioner i MIDP 2.0 (Mobile Information Device Profile). Intressant? LÀs dÄ JavaWorlds artikel om Àmnet som finns hÀr.

  8. IBS JavaSolutions pÄ JavaOne 2007

    Till vĂ„r stora glĂ€dje sĂ„ blev en av vĂ„ra förslag till presentationer pĂ„ JavaOne 2007 godkĂ€nda. Vi ska nu dit och hĂ„lla en session med den preliminĂ€ra titeln ”Write A 3D Game in Java Technology in Less Than 50 Minutes…”. Syftet Ă€r att visa hur enkelt och snabbt man kan sĂ€tta ihop ett spel i Java. Nervositeten Ă€r hög men ambitionen Ă€r högre. :)

    San Fransisco here we come!

  9. Film om Web 2.0

    Dagens film frÄn youtube.com om Web 2.0!