1. Java ME GUI APIs

    Jag har faktiskt börjat gilla Java ME utveckling. Visserligen finns det hÀftigare, nyare och flashigare teknologier att leka med pÄ Java SE/EE-sidan, men med Java ME sÄ kommer du ÀndÄ sÄ nÀra anvÀndarna som bara Àr möjligt. Nu ska jag inte pÄstÄ att det Àr bekymmersfritt att jobba med Java ME, tvÀrtom (vilket ni sÀkert konstaterat efter att ha lÀst mina tidigare inlÀgg). Jag tÀnkte nu skriva lite om hur det ser ut pÄ GUI-sidan för Java ME.

    Trots att det finns en del trevliga JSRer för Java ME sÄ mÄste man tyvÀr, om man vill nÄ ut till den stora massa, begrÀnsa sig till MIDP 2.0/CLDC 1.1 (d.v.s., den absolut minsta gemensamma nÀmnaren för Java pÄ dagens mobiltelefoner) nÀr det gÀller GUI. Det Àr minst 2 Är kvar tills dess att den stora massan har mobiltelefoner med inbyggt stöd för SVG (Scalable Vector Graphics, det kommer en post om det lite lÀngre fram), vilket i stort sett kommer lösa problemet. Lösningen Àr att anvÀnda nÄgon av de tillgÀngliga tredje-parts APIerna för GUI som finns idag. TyvÀr Àr ingen av de anvÀndabara alternativen gratis. I vilket fall, de tre alternativ som finns idag Àr följande:

    • TWUIK (http://www.tricastmedia.com/twuik/) – Ett API för att skapa s.k. ”Flash-like user interface”. Ingen prisuppgift finns att fĂ„, vilket antyder att det Ă€r DYRT.
    • J2ME Polish (http://www.j2mepolish.org/) – Trots namnet sĂ„ har det inget med Polen att göra. Detta Ă€r inget rent GUI API utan snarare en fullstĂ€ndig platform som kompletterar WTKn. Det finns bygg-script som bygger för olika enheter och en massa annat godis. Om du har behov av en fullstĂ€ndig miljö för Java ME och inte byggt upp nĂ„got tidigare sĂ„ Ă€r nog detta ett bra alternativ. Kostar 990€ för en licens, har du ett GPL-projekt sĂ„ anvĂ€nder du deras GPL-licens och slipper betala.
    • TinyLine 2D (http://www.tinyline.com/) – I mina ögon det mest intressanta alternativet. Ett litet och enkelt API för att göra avancerade 2D GUIn. Detta API Ă€r enbart inriktat pĂ„ 2D grafik och klarar allt frĂ„n affina transformationer, transparens och anti-aliasing. Kostar ungefĂ€r 3500 kr att köpa. En intressant detalj Ă€r att detta Ă€r det API som Google valde för Google Maps Mobile.

    SÄ för att sammanfatta det hela; det finns alltsÄ tre realistiska alternativ om du vill göra snygga GUIn i Java ME och ingen av dem Àr gratis. Kanske dags att dra igÄng ett open-source projekt? NÄgon som Àr pÄ? :)

  2. Virtual Ant – En visuell skriptbyggare för Ant

    Beta av Virtual Ant finns nu att ladda ner (demo).


    Med Virtual Ant skriver du inte byggskriptet direkt. Filen build.xml skapas istÀllet kontinuerligt i bakgrunden samtidigt som du visuellt utför de saker som skall ingÄ i byggskriptet. Inspelningssession sker i ett Windows-Explorer-liknande grÀnsnitt och allt du gör dÀr omsÀtts i div Ant-Tasks. Ex om du tar bort en katalog sÄ omvandlas det till rÀtt Ant-task med parametrar som pekar ut katalogen.

    Du kan köra bÄde byggskript som tagits fram med Virtual Ant och andra Ant-byggskript. Man kan t o m stega fram och tillbaka i tiden för ett byggskript och pÄ sÄ sÀtt undersöka filsystemets tillstÄnd mellan stegen i byggskriptet. Filsystemet Àr virtuellt sÄ man behöver inte vara orolig för att förstöra saker.

    En av poÀngerna med Virtual Ant Àr att slippa behöva slÄ i Ant-manualen och pröva sig fram till ett fungerande anvÀndande av ett task. Ex en sÄdan sak som att packa upp en jar-fil blir enklare eftersom du gör det i ett grÀnssnitt som du redan Àr bekant med (Windows Explorer). Att skriva din Ant-fil för hand eller med Virtual Ant kan jÀmföras med att skriva ditt Java-program med Notepad eller en IDE.

    Plugin till Eclipse och andra IDE:er skall visst slÀppas samtidigt som den skarpa versionen av Virtual Ant.

  3. PostgreSQL

    Laddade ner version 8.2 pÄ min Windows Laptop för en liten test.

    Databasen var lÀtt att installera och komma igÄng med. Det följer ocksÄ med grafiska verktyg dÀr det mesta kan göras. Om man har arbetat med t.ex. Oracle sÄ kÀnner man snabbt igen sig nÀr det gÀller teknisk uppbyggnad och syntaxer.

    Postgres anvĂ€nder “lyssnare” som skapar anvĂ€ndarprocesser för varje uppkoppling mot databasen, vilket Ă€r ett beprövat koncept som kĂ€nns igen frĂ„n t.ex. Oracle.

    Gjorde Ă€ven en liten “tabell insert” test med 4 miljoner poster frĂ„n en loopande procedur (autocommit off). Insert’en tog 115 sekunder pĂ„ min Windows Laptop. Körde proceduren 4 ggr (dvs skapade totalt 16 miljoner poster). Skapade ocksĂ„ ett icke unikt index av typen btree det tog 4.5 minuter.

    Man bör stÀnga av autocommit om man vill ha prestanda. Det görs genom att editera filen psqlrc. Man kan ocksÄ köra kod under en startad transaktion.

    Postgres verkar fungera vÀl och har TeraByte databaser som referens. Finns en hel del lyckade benchmarks vad gÀller prestanda o.s.v.

    Tycker dĂ€remot att namnet kĂ€nns lite ”tungvrickande” det fĂ„r dom gĂ€rna byta.

    http://www.postgresql.org/

  4. PMD

    TÀnkte bara tipsa om en Code Analyzer som Àr helt okej. Bra för oss som inte kör IDEA.
    http://pmd.sourceforge.net/

  5. Veckans tebjudning…

    Jonathan Schwarts (SEO pÄ SUN) bjuder Linus Torvalds pÄ middag via sin blogg:

    And to prove the sincerity of the offer, I invite you to my house for dinner. I’ll cook, you bring the wine. A mashup in the truest sense.

    Intressant lÀsning, hela blogginlÀgget finns hÀr

  6. Ice Ice Baby

    JSF

    Den som hĂ„ller pĂ„ med JSF vet att det ofta tillkommer begrĂ€nsningar och dylikt med ”komponent-kittet” som man anvĂ€nder. Idag finns de ju lite att vĂ€lja pĂ„, bland annat smĂ„hĂ€ftiga JMaki kittet med coola saker som fisheye menyn(den dĂ€r snygga grejen som Mac OSX har pĂ„ nedre delen av skĂ€rmen) och annat som kartgrĂ€nssnitt bĂ„de frĂ„n Google och Yahoo.
    Vad det gÀller mera kompletta komponenter sÄ Àr ju oracle ADF Faces bra alternativ(Oracle har bidragit en hel del av detta till opensource projektet MyFaces). Vill man pröjsa sÄ kan man köpa mer kompletta ajaxbaserade JSF komponenter frÄn Oracle, eller nÄgon annan.
    Och sĂ„ till Istiden…
    Eftersom vi alla gillar opensource sÄ tycker jag att man absolut ska titta pÄ ICEFaces. Dessa Àr ajaxbaserade komponenter och riktigt snygga. Det som jag personligen gillar Àr att det finns gott om lÀsbar dokumentation och förklaringar över hur man kommer igÄng med ICEFaces pÄ ett konkret och förstÄerligt sÀtt.
    http://www.icefaces.com

    Sen mÄste man ocksÄ nÀmna att ICESoft(IceFaces pojkarna och kanske flickorna) ocksÄ Àr officiella partners till NetBeans, och NB gillar ju vi alla :)
    p.s

    FÄr ni ocksÄ vanilla ice lÄten i tankarna nÀr ni kommer in pÄ sidan? :)

  7. Eclipse Visual Editor – forts.

    NÀr jag för ett tag sedan skrev om Eclipse GUI-byggare VE (Visual Editor) sÄ tycktes det kanske som om jag dissade den helt eftersom den saknar stöd för GroupLayout. Men VE har faktiskt sina förtjÀnster.

    Tiden Du som programmerare lÀgger pÄ det visuella justerandet av Swing reduceras tack vara WYSIWYG (What You See Is What You Get) i VE. Du fÄr Àven annat icke-visuellt stöd som ex hjÀlp med att stÀnga ned en JFrame med lÀmpligt event.

    PÄ vissa omrÄden krÀver dock VE en hel del av programmeraren i form av Swing-kunskaper. Exempelvis Àr det svÄrt att fÄ sitt GUI att se ut precis som man vill utan att anvÀnda GridBagLayout (en omstÀndig layouthanterare). För att kunna anvÀnda GridBagLayout i VE behöver man ha koll pÄ vad klassen GridBagConstraint olika attribut har för innebörd; dÄ tÀnker jag speciellt pÄ samspelet mellan attributen weight, anchor och fill.

    Men man kan bygga ett GUI genom att enbart anvÀnda de enklare layouthanterarna som FlowLayout och BorderLayout.

    lindemanpanel.PNG

    JPanel med nÄgra JRadioButton och en JLabel inordnade i ett rutnÀt med GridBagLayout.

    Markerad JRadioButton ”Geolog Sten Lindeman” har sina egenskaper listade i Eclipse-vyn Properties. Panelens innehĂ„ll presenteras Ă€ven i trĂ€dform i Eclipse-vyn Java Beans.

    En JPanel Àr egentligen bara visningsbar i ett konkret fönster, ex en JFrame och sÄ hÀr gÄr det till att skapa en sÄdan (vÀlj new JFrame visual class): kryssa för att du vill ha en main-metod.

    daframe.PNG

    VE fyller main-metoden med den kod som behövs för att visa klassen samt stÀnga ned den pÄ korrekt sÀtt

    Det tomma fönstret Àr nu redo att fyllas. Förvald layouthanterare för en JFrame Àr BorderLayout som har fem omrÄden: north, east, west, south och centre. I south lÀgger vi en JButton (i en extra JPanel för att respektera knappens preferredSize). BÄde JPanel och JButton vÀljs frÄn VE-paletten och placeras ut med musen. I centre lÀgger vi Lindeman-panelen.

    choosebean.PNG

    Eftersom Lindemanpanelen Ă€r en JPanel (extends JPanel) kan man vĂ€lja den i paletten m h a ”Choose Bean”-knappen.

    Placera ut komponenten i omrĂ„det som heter center. Ge knappen en innebörd genom att högerklicka pĂ„ den och vĂ€lja ”Events”, ”actionPerformed”. VE skapar mallkod som du kan byta ut mot önskad kod.

    morelindeman.PNG

    I exemplet har jag bytt ut det mot kod som öppnar en URL med datorns webblÀsare (en feature f.o.m. Java 1.6)

  8. Eclipse Tricks – Stavningskontroll med Eclipse 3.3

    Med Eclipse 3.3 kan du fĂ„ stavningskontroll av strĂ€ngar och kommentarer i dina java-klasser. SjĂ€lv tycker jag att det Ă€ven vore önskvĂ€rt med stavningskontroll av variabelnamn, metodnamn och klassnamn etc. Än sĂ„ lĂ€nge kontrolleras bara strĂ€ngar och kommentarer.
    misspelled.bmp

  9. Eclipse Tricks – Quick Assist istĂ€llet för kortkommandon

    Med en nyare Eclipse (ex 3.3 RC2) kan man anvĂ€nda Ctrl+3 följt av text för att navigera eller utföra kommandon. Ex istĂ€llet för att anvĂ€nda kortkommando för att vĂ€xla till debug mode skriver du Ctrl+3 följt av Pers sĂ„ dyker ”Perspective Debug” upp som valbart kommando.

    quickassist.bmp

  10. JavaSolutions till JavaZone

    Eriks presentation ”Gör ett 3D-spel i Java pĂ„ 50 minuter” samt min presentation ”The Hundred Kilobytes Kernel (HK2)” har blivit accepterade till JavaZone i Oslo den 12-13. Är du intresserad av att Ă„ka till JavaZone, skicka ett epost till goteborg(at)javaforum.se sĂ„ kan vi kordinera restider och hotell!

    HÀr Àr abstracten till min presentation:
    The java.net project ”Hundred Kilobytes Kernel” (HK2) is a module subsystem coupled with a simple yet powerful component model to build software. It is a great technology to use in any Java software development and can be used in small devices such as phones up to enterprise applications. HK2 is designed to be friendly to existing technologies such as OSGi but it will also provide a path to the implementation of modules (JSR 277) in Java SE 7. HK2 is used as the foundation for GlassFish V3.

    Abstracten till Eriks presentation:
    Java has penetrated most areas in software engineering today, from small embedded device to large, distributed enterprise systems. However, one area where Java still is absent is 3D desktop games. This session will demonstrate how easy it is to write a complete 3D game using Java and show that it is a viable platform for writing real, commercial desktop games. It will focus more on the different software components and less on 3D APIs, so very little knowledge about OpenGL and 3D programming is required.

  11. XFire pÄ JavaForum

    Min presentation frÄn javaforum finns nu att ladda ner som pdf hÀr.

    Jag har Àven lagt upp körbar kod (via Maven 2) för server-implementationerna, exemplet med den generade klienten som jag inte hann visa, samt alla klientskript i Groovy. Koden kan ni ladda ner hÀr.

    För att starta servern:

    För att köra Groovy-skripten (nÀr servern Àr startad):

    • Se till att Groovy Ă€r installerat
    • Installera Ă€ven SOAP-tillĂ€gget för Groovy
    • Öppna en kommandoprompt i groovy_scripts-katalogen
    • Kör t.ex. kommandot groovy users.groovy

    Den genererade klienten samt exemplet mot VÀsttrafik gÄr bÄda att köra med kommandot mvn test

    VÀsttrafik-klienten Àr lite speciell dÄ WSDL-filen för den operation jag anvÀnder (GetRoute) endast returnerar en xsd:string, Àven fast innehÄllet i strÀngen Àr en XML-struktur. För att kunna koda mot denna servicen ÀndÄ sÄ genererade jag ett XML-schema som matchade denna XML-struktur med hjÀlp av ett program som heter Trang. NÀr jag vÀl hade XML-schemat sÄ var det bara att lÄta JAXB sköta deserialiseringen av XML-strukturen. Ett detaljerat exempel pÄ detta kanske blir ett framtida blogg-inlÀgg.