1. HK2 – 101, developing a module from scratch, step by step tutorial

    Hej alla pojkar och flickor. Innan har det bloggats hÀr om The Hundred Kilobytes Kernel (HK2). För de som har missat HK2 och vad det Àr sÄ ser jag till att citera en liten förklaring innan jag gÄr vidare:

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

    Now to the action. Jag ska skapa en modul helt frĂ„n scratch. Du mĂ„ste ha maven2 för detta. OBS! denna tutorial Ă€r vĂ€ldigt mycket ”for dummies” sĂ„ du kan sĂ€kert hoppa över vissa saker :) .
    down to biz.

    1. I din ”shell”, skriv ”mkdir temp” och sedan ”cd temp”

    2. dĂ€refter skriver du ”mvn archetype:create \ -DarchetypeGroupId=org.apache.maven.archetypes \ -DgroupId=com.mycompany.app \ -DartifactId=temp”

    sedan trycker du sjĂ€lvklart pĂ„ din ”return” knapp (dvs ”enter”) och sen vĂ€ntar den korta tiden som det tar för maven att generera upp ett projekt Ă„t dig.

    3. skriv gedit/notepad/vi för att editera din pom.xml och anvÀnd sunt förnuft för att fÄ den att se ut ungefÀr sÄ hÀr:

    http://www.helloworlds.net/temp/temp/pom.xml

    4. Skapa dÀrefter filerna

    Animal.java = > http://www.helloworlds.net/temp/temp/src/main/java/com/mycompany/app/Animal.java

    Pig.java = > http://www.helloworlds.net/temp/temp/src/main/java/com/mycompany/app/Pig.java

    Start.java = > http://www.helloworlds.net/temp/temp/src/main/java/com/mycompany/app/Start.java

    5. GĂ„ tillbaks till projektets ”rootkatalog” och skriv ”mvn hk2:hk2-compile” följt av ”mvn hk2:run”

    Det kan se ut sÄ hÀr:

    bash-3.00$ mvn hk2:run
    [INFO] Scanning for projects…
    [INFO] Searching repository for plugin with prefix: ‘hk2′.
    [INFO] —————————————————————————-
    [INFO] Building temp
    [INFO] task-segment: [hk2:run]
    [INFO] —————————————————————————-
    [INFO] [hk2:run]
    2007-jul-26 07:27:56 com.sun.enterprise.module.maven.MavenProjectRepository loadModuleDefs
    INFO: Loading modules list from /export/home/ferid/temp/temp/pom.xml
    ModuleStartup phase
    Oink, oink

    [INFO] ————————————————————————
    [INFO] BUILD SUCCESSFUL
    [INFO] ————————————————————————
    [INFO] Total time: 2 seconds
    [INFO] Finished at: Thu Jul 26 07:27:56 CEST 2007
    2007-jul-26 07:27:56 com.sun.enterprise.module.ModuleClassLoader stop
    INFO: ModuleClassLoader stopped com.mycompany.app:temp
    2007-jul-26 07:27:56 com.sun.enterprise.module.ModuleClassLoader finalize
    INFO: ModuleClassLoader gc’ed com.mycompany.app:temp
    2007-jul-26 07:27:56 com.sun.enterprise.module.ModuleClassLoader stop
    INFO: ModuleClassLoader stopped com.mycompany.app:temp
    [INFO] Final Memory: 3M/8M
    [INFO] ————————————————————————
    bash-3.00$

    Nu har vi precis anvÀnt oss av samma teknik som Glassfish V3 anvÀnder sig av, för att göra en HelloWorld applikation. RÀtt coolt tycker jag!

    Vill ni veta mer om hur allt fungerar och hÀnger ihop, Àr ni vÀlkomna till nÀsta JavaForum eller JavaZone dÀr vi i Är kör en presentation om HK2.

    tjena!

  2. Ant – XML = GANT = Groovy + Ant

    Vid det har laget har nog dom flesta tröttnat pĂ„ att skriva sina antscript i XML… Med hjĂ€lp av GANT sĂ„ kan man göra sina script i groovy istĂ€llet! GANT anvĂ€nder (exekeverar) ANT i sin tur men man skriver alltsĂ„ sina build.xml filerer som groovy script istĂ€llet.

    SÄ hÀr kan det se ut:

    
    includeTargets << gant.targets.Clean
    cleanPattern << [ '**/*~' ,  '**/*.bak' ]
    cleanDirectory << 'build'
    
    target ( 'default' : 'The default target.' ) {
      println ( 'Default' )
      depends ( clean )
      Ant.echo ( message : 'A default message from Ant.' )
      otherStuff ( )
    }
    
    target ( otherStuff : 'Other stuff' ) {
      println ( 'OtherStuff' )
      Ant.echo ( message : 'Another message from Ant.' )
      clean ( )
    }
    
  3. Java FX och Bidirectional bindings

    Chris Oliver (mannen bakom Java FX) skrev nyligen pÄ sin blog om ett tillÀgg till Java FX som han gjort, nÀmligen bidirectional binding. Nu Àr Java FX script redan imponerande som det Àr, men med denna nya funktion sÄ blir det smÄtt magiskt. Resultatet Àr som om du skulle ha tillgÄng till pekare likande det du har i C, men din pekare har ocksÄ logik inbyggd i sig. Följande exempel Àr saxat frÄn Chris blogginlÀgg:

    // logical negation
    var a = true;
    var b = bind not a;
    assert b == false;
    b = true;
    assert a == false; // passes
    
    // arithmetic
    var x = 10;
    var y = bind -x + 100;
    assert y == 90;
    y = 40;
    assert x == 60; // passes
    
    // sequence elements
    var seq = [1, 2, 3];
    var elem1 = bind seq[1];
    elem1 = 500;
    assert seq == [1, 500, 3]; // passes
    delete seq[1];
    assert elem1 == 3; // passes
    insert 0 as first into seq;
    assert elem1 == 1; // passes
    var value = bind elem1;
    value = 999;
    assert seq == [0, 999, 3]; // passes

    SmÄtt magiskt ÀndÄ. Du behöver alltsÄ inte jobba med listener, callbacks, observer-observable eller liknande patterns för att fÄ en Äterkoppling mellan din GUI-kod och dataobjekt.

    Nu tror jag inte detta Àr avgörande för huruvida Java FX kommer bli en hit eller inte, det finns trots allt liknande funktioner i andra scriptsprÄk. Men jag tror ÀndÄ att nÀr folk vÀl börjar anvÀnda Java FX sÄ kommer vi se rÀtt avancerade GUIn skrivna med vÀldigt lite kod tack vare detta.

    Chris Olivers blog hittar ni pÄ http://blogs.sun.com/chrisoliver/.

  4. JBoss Seam

    Spring Framework i all Ă€ra, men JBoss Ă€r Ă€ndĂ„ den mest anvĂ€nda open-source applikationsservern idag. Vi som anvĂ€nt JBoss sen en tid tillbaka vet ocksĂ„ att de tagit fram ett eget ramverk för webb-applikationer, nĂ€mligen JBoss Seam. Seam Ă€r inte en specialvariant av applikationsservern, utan ett komplett applikationsramverk som pĂ„ ett vĂ€ldigt smidigt sĂ€tt ”syr” ihop de senaste webb-standarderna , sĂ„som AJAX och JSF, med tekniker sĂ„som EJB 3, Portlets och BPM. Seam har ocksĂ„ en implementation av JSR-299 (Web Beans), som syftar till att göra det möjligt att anvĂ€nda dina Enterprise JavaBeans som managed beans i JSF (detta Ă€r nĂ„got som man missade i EJB3 specen).

    Den stora fördelen med JBoss Seam Àr ÀndÄ att man anvÀnder hela konceptet med POJOs och annoterar sin kod pÄ alla nivÄer, frÄn persistence till anvÀndargrÀnssnitt. DÄ allt bygger pÄ existerande JavaEE standarder (eller blivande sÄdana) sÄ Àr det ocksÄ ett vÀldigt tryggt ramverk att bygga pÄ dÄ man troligen relativt enkelt kan byta platform och server. Det blir ocksÄ enklare att öfra in i en stor organisation, dÀr beslutsfattarna gÀrna ser att man anvÀnder lösningar som har en stor leverantör bakom sig, för att minska risken att man inte kommer kunna fÄ support i framtiden. SÄ kort sagt, om du inte kan eller vill anvÀnda Spring Framework (smaken Àr som baken) sÄ Àr kanske JBoss Seam nÄgot för dig?

    SĂ„, vad Ă€r det som Ă€r sĂ„ bra med Seam dĂ„? Förutom att den förenar JSF med EJB 3 pĂ„ ett vĂ€ldigt trevligt vis (Annotations) sĂ„ Ă€r det minimalt med XML du behöver hantera (ok, det Ă€r vĂ€l visserligen en smaksak dĂ„). Den gör det ocksĂ„ möjligt att anvĂ€nda Exceptions tillsammans med JSF, och pĂ„ sĂ„ vis kunna göra felhanteringen mycket enklare. Man har Ă€ven passat pĂ„ att ta med de senaste JSF-lösningarna, sĂ„ AJAX finns tillgĂ€ngligt ”out-of-the-box”. Kort sagt sĂ„ Ă€r Seam vĂ€ldigt trevligt ramverk för att bygga webbapplikationer utan att behöva röra sig utanför Java EE standarden. Den minimala mĂ€ngden konfiguration som krĂ€vs utanför koden gör det ocksĂ„ vĂ€ldigt enkelt att komma igĂ„ng med. Eftersom allt Ă€r POJOs sĂ„ kan du ocksĂ„ anvĂ€nda JUnit för att testa det utan att behöva dra igĂ„ng en fullstĂ€ndig JavaEE-container.

    För er som Àr nyfikna pÄ att testa det hela eller lÀsa lite mer sÄ kan ni ta en titt pÄ http://www.jboss.com/products/seam.