<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Luminis Software Development &#187; lwuit</title>
	<atom:link href="http://lsd.luminis.nl/tag/lwuit/feed/" rel="self" type="application/rss+xml" />
	<link>http://lsd.luminis.nl</link>
	<description></description>
	<lastBuildDate>Mon, 19 Jul 2010 06:45:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>nl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LWUIT &#8211; een lichtgewicht ui toolkit voor Java ME</title>
		<link>http://lsd.luminis.nl/lwuit-een-lichtgewicht-ui-toolkit-voor-java-me/</link>
		<comments>http://lsd.luminis.nl/lwuit-een-lichtgewicht-ui-toolkit-voor-java-me/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 14:03:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lwuit]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobility]]></category>
		<category><![CDATA[toolkit]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://lsd.luminis.net/?p=194</guid>
		<description><![CDATA[Beschrijving van het opzetten van de ontwikkelomgeving en daarna een simpele LWUIT applicatie ontwikkelen inclusief wat achtergrondinformatie over elk van de stappen.]]></description>
			<content:encoded><![CDATA[<h3>Introductie</h3>
<p>Ooit al eens een Java ME applicatie ontwikkeld voor een specifiek type mobiele telefoon? Wanneer het aankomt op het ontwikkelen van een gelikte interface loop je er al snel tegen aan dat de MIDP implementatie van de telefoon van invloed is op hoe de widgets van de applicatie getoond worden. Nadeel daarvan is dat de UI er op een ander type mobiel nogal anders uit kan zien. Om die reden was men voorheen nog wel eens geneigd om wat dieper in de code te duiken en de wat specifiekere (geliktere) widgets op de (javax.microedition.lcdui.)Canvas uit te werken. Deze Canvas ondersteunt sinds MIDP-2.0 een fullscreen modus: het is mogelijk om de complete applicatie direct op Canvas te ontwikkelen. Hiervan maakt <a href="https://lwuit.dev.java.net/">LWUIT</a> gebruik.</p>
<p>
Mogelijk, maar wel bijzonder tijds-intensief, tenzij je gebruik maakt van het werk van anderen die al wat voorwerk hebben verricht op dit gebied. Een mooi voorbeeld hiervan is &#8220;LWUIT&#8221;, een door Sun ontwikkelde open-source UI toolkit. In tegenstelling tot het ontwerpen van UI&#8217;s met standaard Java ME is het met LWUIT mogelijk om op een Swing-achtige manier user interfaces te maken: layout managers, maar ook de pluggable look &amp; feel, het MVC concept en &#8220;lightweight componenten&#8221; (componenten maken geen gebruik van de native UI controls, maar verzorgen zelf hun rendering en event handling) zijn terug te vinden.</p>
<h3>Setup simpele MIDlet</h3>
<p>Een MIDlet maken waarin met LWUIT een paar knoppen wordt getoond is simpel voor elkaar te krijgen via de volgende stappen:</p>
<li><a href="http://www.netbeans.org/downloads/">Download</a> NetBeans (kies een versie met &#8216;Java ME&#8217; support) en installeer het pakket.</li>
<li><a href="https://lwuit.dev.java.net">Download</a> en unzip de LWUIT zip file (via de &#8216;Download page&#8217; tab &#8211; de zip bevat ook de resource editor).</li>
<li><a href="http://developer.sprint.com">Download</a> en installeer de Sprint wireless toolkit (via de &#8216;Develop&#8217; tab, de &#8216;Technologies&#8217; link en dan de &#8216;Java ME&#8217; link) of een andere toolkit, zoals die van Sun.</li>
<p><p>
Binnen NetBeans is het handig om de LWUIT jar toe te voegen als library via &#8216;Tools&#8217;, &#8216;Libraries en dan de &#8216;New Library&#8230;&#8217; knop. Geef naam, type = &#8216;Class Libraries&#8217;, dan: &#8216;OK&#8217; en &#8216;Add JAR/Folder&#8230;&#8217;: en selecteer het bestand &#8220;LWUIT.jar&#8221; dat te vinden is in de &#8216;lib&#8217; dir van de LWUIT installatie (unzippen van de zip file). Het &#8216;LWUIT_stripped.jar&#8217; bestand is de LWUIT library zonder code die gebruik maakt van JSR 184 (M3G: Mobile 3D Graphics), JSR 75 (PIM: Personal Information Management, FC: File Connection) of JSR 226 (SVG: Scalable 2D Vector Graphics).</p>
<p>
Start vervolgens een nieuw project, kies als categorie &#8216;Java ME&#8217; en als project &#8216;Mobile Application&#8217; en druk op &#8216;Next&#8217;. Het is niet nodig om NetBeans een default MIDlet aan te laten maken; het vinkje bij &#8216;Create Hello MIDlet&#8217; mag weg. Druk weer op &#8216;Next&#8217;. Selecteer de WTK die je hebt geïnstalleerd als &#8216;Emulator Platform&#8217;. LWUIT vereist minimaal MIDP-2.0 bovenop CLDC-1.1, dus i.p.v. MIDP-2.1 die default geselecteerd is zou je MIDP-2.0 kunnen kiezen, maar dit hoeft niet. Druk op &#8216;Finish&#8217;. Maak nu een nieuwe MIDlet aan met de naam &#8216;MyMIDlet&#8217; en kopieer de volgende code er naartoe:</p>
<pre>
import com.sun.lwuit.*;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.layouts.BoxLayout;
import javax.microedition.midlet.MIDlet;

public class MyMIDlet extends MIDlet {

    Form form1;

    public void startApp() {
        Display.init(this);
        form1 = new Form("LWUIT Demo Form");
        form1.addCommand(new Command("Quit") {
            public void actionPerformed(ActionEvent ae) {
                destroyApp(true);
                notifyDestroyed();
            }
        });

        form1.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
        Button l = new Button("Left");
        l.setAlignment(Label.LEFT);
        Button r = new Button("Right");
        r.setAlignment(Label.RIGHT);
        Button m = new Button("Middle");
        m.setAlignment(Label.CENTER);
        form1.addComponent(l);
        form1.addComponent(r);
        form1.addComponent(m);

        form1.show();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}
</pre>
<p>Omdat het project de LWUIT jar nog niet kent zal je een aantal foutmeldingen zien: via de project properties kan je onder de &#8216;Build&#8217; categorie &#8216;Libraries &amp; Resources&#8217; kiezen. Voeg de LWUIT library die je eerder hebt aangemaakt toe. Omdat er slechts 1 MIDlet in het project zit zal deze MIDlet automatisch gestart worden wanneer je het project <i>right-clickt</i> en dan &#8216;Run&#8217; selecteert. Het resultaat hiervan is een simpele LWUIT applicatie met een paar knopjes!</p>
<h3>MVC</h3>
<p>Een aardige illustratie van het MVC concept bij LWUIT is de List. Voeg het volgende stuk code in voor de &#8216;form1.show()&#8217; uit het vorige voorbeeld.</p>
<pre>
String[] bands = new String[]{
    "AC/DShe",
    "Public Enema",
    "Beverly Beerbellies",
    "Shirley Temple Pilots",
    "Wynona Riders"};
List list = new List(bands);
form1.addComponent(list);
</pre>
<p><img src="http://blog.luminis.nl/luminis/resource/jaapv/lwuit - simpele list.png" title="LWUIT Buttons en List" />.</p>
<p>
Resultaat</p>
<li>Het Model is verantwoordelijk voor de data; zaken als hoeveel items er zijn, maar ook bijvoorbeeld welk item welke offset heeft. Wanneer er veranderingen in het model optreden geeft het model een seintje richting alle (geregistreerde) SelectionListener en DataChangedListener implementaties. De List in dit voorbeeld krijgt een array van Strings aangeleverd en maakt onder water gebruik van een default implementatie van de ListModel interface, het DefaultListModel.</li>
<li>De View wordt in dit geval grotendeels geregeld door een default implementatie van de ListCellRenderer (LCR), de DefaultListCellRenderer. De View is verantwoordelijk voor het tonen van de data die het Model levert. De LCR rendert het object dat vanuit het Model wordt geleverd naar een com.sun.lwuit.Component object dat vervolgens door de List wordt gebruikt om zichzelf te renderen. De default implementatie (is-a com.sun.lwuit.Label) doet simpelweg een <i>toString()</i> van het aangeleverde object, zet dit als text op zichzelf en geeft <i>this</i> terug.</li>
<li>Tot slot is de List zelf de Controller (en eigenlijk ook een beetje van de View &#8211; maakt zwaar gebruik van de LCR, maar rendert uiteindelijk toch zichzelf) die user input afhandelt. Wanneer bijvoorbeeld een ander element in de lijst wordt geselecteerd, dan geeft de List dit door aan het model (die vervolgens weer de geregistreerde SelectionListener objecten triggert).</li>
<p>
Zelf de implementatie van ListModel en ListCellRenderer verzorgen heeft als extra voordeel dat je de reeds bestaande data types direct kan gebruiken en er geen sprake hoeft te zijn van &#8220;state copying&#8221;: er is geen voorbepaald data type wat in de List past.</p>
<p>
Ook goed om te weten is dat de List z&#8217;n Model alleen maar vraagt naar de data-elementen die op het scherm zichtbaar zijn. Dit (performance) aspect wordt belangrijker naarmate de hoeveelheid data groeit of bijv. vanaf een remote locatie moet worden binnengehaald.</p>
<h3>Conclusie</h3>
<p>
Via de bovenstaande stappen is het relatief makkelijk om snel een simpele LWUIT applicatie te maken. Met name voor de ontwikkelaars die hun app op meerdere typen mobiele telefoons willen draaien zal het een aangename verrassing zijn om te zien dat deze voorbeeld-applicatie op alle mobieltjes (die MIDP-2.0/CLDC-1.1 supporten) in uiterlijk en gedrag hetzelfde zal zijn. In een volgende blog zal ik wat verder ingaan op &#8220;fancier features&#8221; zoals Transitions en Theming; het oog wil immers ook wat!</p>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.nl/lwuit-een-lichtgewicht-ui-toolkit-voor-java-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>J-Spring 2009</title>
		<link>http://lsd.luminis.nl/j-spring-2009/</link>
		<comments>http://lsd.luminis.nl/j-spring-2009/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 18:17:24 +0000</pubDate>
		<dc:creator>Peter Doornbosch</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[buglabs]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[jspring]]></category>
		<category><![CDATA[lwuit]]></category>
		<category><![CDATA[mda]]></category>
		<category><![CDATA[News Item]]></category>
		<category><![CDATA[nljug]]></category>
		<category><![CDATA[OSGi]]></category>

		<guid isPermaLink="false">http://lsd.luminis.net/?p=189</guid>
		<description><![CDATA[Aan de druk bezochte J-Spring Java conferentie in een zomers warm Spant! in Bussum, heeft <b>luminis</b> weer een flinke bijdrage geleverd: gratis tompouce bij de stand, een boekverloting, 3 presentaties over uiteenlopende onderwerpen en sponsor van de slotborrel!]]></description>
			<content:encoded><![CDATA[<p>Aan de druk bezochte J-Spring Java conferentie in een zomers warm Spant! in Bussum, heeft <strong>luminis</strong> weer een flinke bijdrage geleverd. Bij de stand werd de bezoeker getrakteerd op een overheerlijke tompouce (van de <em>echte</em> bakker!) en werden lootjes uitgedeeld voor een boekverloting. Op inhoudelijk vlak bestond de bijdrage uit 3 presentaties over uiteenlopende onderwerpen. En voor de bezoekers die het uithoudingsvermogen hadden om tot het eind te blijven, was er dan nog de door <strong>luminis</strong> gesponsorde borrel!</p>
<p><img src="http://blog.luminis.nl/luminis/resource/peter/meerviltjes.jpg" alt="" /></p>
<p>De presentatie van Jaap Vriend ging over <a href="lwuit_een_lichtgewicht_ui_toolkit">LWUIT</a>, een UI library voor J2ME. Deze library biedt een op Swing lijkend programmeermodel en maakt het veel makkelijker om een J2ME applicatie er op alle telefoons hetzelfde uit te laten zien.</p>
<p>Richard van der Laan presenteerde samen met Tony Sloos van ArchitecIT een pragmatische benadering van MDA. Aan de hand van een concreet voorbeeld lieten ze zien hoe je bottom-up MDA kunt invoeren, waarbij je er vanaf het begin voordeel van hebt.</p>
<p>Onze OSGi guru, Marcel Offermans, had een leuke demo samengesteld op basis van <a href="unboxing_the_bug">de leukste bug</a>. Nu is een live demo natuurlijk altijd riskant, maar Marcel is typisch iemand die dat wel aan kan. Helaas voor hem (en voor het publiek) waren de goden hem dit keer niet zo goed gezind en lukte het niet de demo dat te laten doen wat hij had moeten doen. Dus die houden we van hem tegoed! Bij de J-Fall op de <strong>luminis</strong> stand?</p>
<p>De presentaties kun je als pdf downloaden:</p>
<ul>
<li><a href="http://blog.luminis.nl/luminis/resource/jspring/lwuit.pdf">LWUIT, proberen of negeren?</a></li>
<li><a href="http://www.luminis.nl/downloads/JSpring2009_MDA.pdf">MDA: Slimmer ontwikkelen van Java EE applicaties</a></li>
<li><a href="http://www.luminis.nl/downloads/JSpring2009_DeLeuksteBug.pdf">De leukste Bug!</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://lsd.luminis.nl/j-spring-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
