MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨  AKULTA INFORMATIKY !"#$%&'()+,-./012345

Java a pˇríbuznéplatformy na PDA

BAKALÁRSKÁPRÁCEˇ

Tomáš Gazárek

Brno, jaro 2008 Prohlášení

Prohlašuji, že tato bakaláˇrskápráce je mým p ˚uvodnímautorským dílem, které jsem vypra- coval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování použí- val nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj.

Vedoucí práce: Mgr. Tomáš Gregar

ii Podˇekování

Na tomto místˇebych rád podˇekovalMgr. Tomáši Gregarovi za vedení mé bakaláˇrsképráce a jeho cenné rady a pˇripomínky.

iii Shrnutí

V první ˇcástitéto práce byla zmapována situace na poli programovacích platforem v jazyce Java, které byly vytvoˇreny pro vývoj aplikací pro mobilní telefony, osobní digitální asistenty a podobné zaˇrízenís omezenou kapacitou pamˇeti,zdrojem energie a procesním výkonem. Hlavní cíl bakaláˇrsképráce spoˇcíváv prostudování platformy SuperWaba, jejích virtuálních stroj ˚u,vytvoˇreníukázkových aplikací a porovnání této platformy s Java ME.

iv Klíˇcováslova

JAVA, Java Platform, Micro Edition, API, JVM, PDA (Personal Digital Assistant), Smart- Phone, Eve, WebSphere Everyplace Micro Environment, NSIcom CrEme, SuperWaba

v Pˇredmluva

Již nˇekoliklet m ˚užemeve svˇetˇeinformaˇcníchtechnologií pozorovat trend neustálého zmen- šování vˇetšinyzaˇrízení.D ˚ukazemtoho m ˚užebýt vývoj mikroˇcip˚u,které jsou spolu s pa- mˇet’mi souˇcástítémˇeˇrvšech zaˇrízení,která nás obklopují. V souvislosti s tím roste i obliba mobilních zaˇrízení,jejichž procesní výkony a kapacita pamˇetíse neustále zvyšuje. Mobilní telefony s „otevˇreným“operaˇcnímsystémem (tzv. chytré telefony neboli smartphones) dnes již nejsou žádnou novinkou. Tento segment zaˇrízeníby tedy nemˇelbýt opomíjen u vývo- jáˇr˚usoftwaru. U programovacího jazyka Java není situace v této oblasti zrovna ideální. Co se týˇcemobilních telefon ˚ubez operaˇcníhosystému, má zde Java silné postavení. Pro vývo- jáˇreje v této oblasti primárnˇeurˇcenaJava ME platforma a její CLDC konfigurace (viz 2.1.2). V pˇrípadˇesmartphon ˚ua PDA je k dispozici rozsáhlejší konfigurace než CLDC, a to CDC (viz 2.1.1). Bohužel se Sun Microsystems pˇrestalo tuto oblast zajímat a nevytvoˇrilvirtuální stroje pro operaˇcnísystémy jako Windows Mobile, Palm ˇciSymbian. Pomoc proto musíme hledat u jiných platforem, založených na Javˇe.Vˇetšinaz nich vychází bud’ z CDC konfigu- race nebo z platformy Waba, jejíž vývoj byl v roce 2002 zastaven. Waba slouží jako základ napˇríkladpro platformu SuperWaba (viz 3), Java ME a CDC konfigurace pak pro platformy Eve (viz 2.2), IBM WebSphere Everyplace Micro Environment (viz 2.3), ˇciNSIcom CrEme (viz 2.4). SuperWaba je velmi povedená platforma, která nabízí mnoho možností pro vývoj software. Bohužel je rozdˇelenana dvˇeverze, z nichž jedna je placená a druhá ne. V pˇrípadˇe neplacené verze je klientská podpora od autor ˚umenší a taky nem ˚užemevyužívat všechny knihovny platformy. I pˇresto je tato platforma dobˇrevyužitelná k vývoji aplikací. Vytvoˇril jsem zde dvˇeukázkové aplikace. Jedna se jmenuje English Practise a druhá Screen Sam- ple. English Practise je slovník, který kromˇepˇrekladuumí i testovat uživatele z vložených slovíˇcek.Druhá aplikace jménem Screen Sample je velmi jednoduchá aplikace umožˇnující ovládat objekt po obrazovce pomocí stylusu a dotykové obrazovky. Bakaláˇrskápráce je rozdˇelenana pˇetkapitol. První kapitola se zabývá firmou Sun a jejím postavením na trhu s mobilními zaˇrízeními.Dále jsou zde struˇcnˇevysvˇetlenypojmy, jako virtuální stroj nebo API. V druhé kapitole popisuji ˇctyˇriplatformy založené na jazyce Java. Jako první se zabývám Java Platform, Micro Edition, potom Eve, WebSphere Everyplace Micro Environment a NSIcom CrEme. Ve tˇretíkapitole popisuji platformu SuperWaba. Zmi- ˇnujizde její p ˚uvod, instalaci, postup pˇritvorbˇeprogram ˚u,API a nakonec uvádím i ukázkové aplikace, které jsem vytvoˇril. Ctvrtᡠkapitola obsahuje struˇcnéporovnání platforem Super- waba a Java ME. Souˇcástítéto kapitoly je testování výše zmínˇenýchplatforem pomocí vlast- ního benchmarku, který poˇcítáhodnotu pí. V páté kapitole se vˇenujizávˇeru v nˇemžshrnuji bakaláˇrskoupráci.

vi Obsah

1 Úvod ...... 1 1.1 JVM (Java Virtual Machine) ...... 1 1.2 API ...... 2 2 Java platformy pro mobilní zaˇrízení ...... 3 2.1 Java Platform, Micro Edition (Java ME) ...... 3 2.1.1 CDC (Connected Device Configuration) ...... 4 2.1.1.1 Foundation Profile ...... 4 2.1.1.2 Personal Basis Profile ...... 4 2.1.1.3 Personal Profile ...... 4 2.1.1.4 CDC HotSpot Implementation Virtual Machine ...... 5 2.1.2 CLDC (Connected Limited Device Configuration) ...... 5 2.1.2.1 MIDP (Mobil Information Device Profile) ...... 5 2.1.2.2 IMP (Information Module Profile) ...... 5 2.1.2.3 CLDC HotSpot Implementation Virtual Machine ...... 6 2.1.3 Volitelné knihovny ...... 6 2.2 Eve ...... 8 2.2.1 Ewe (Eve) VM ...... 8 2.2.2 Eve API a podporované OS ...... 8 2.3 WebSphere Everyplace Micro Environment ...... 10 2.3.1 IBM J9 virtual machine ...... 10 2.3.2 API a podporované OS ...... 10 2.4 NSIcom CrEme ...... 11 2.4.1 NSIcom CrEme Virtual Machine ...... 12 2.4.2 API a podporované OS ...... 12 3 SuperWaba ...... 14 3.1 (Super)Waba ...... 14 3.2 Vývoj SuperWaba programu ...... 14 3.3 Instalace a SuperWaba VM ...... 15 3.4 Podporované OS a licence ...... 16 3.4.1 Verze a licence ...... 16 3.4.2 Podporované OS ...... 18 3.5 Warp, Exegen a Wxgn ...... 18 3.5.1 Použití Warp ...... 19 3.5.2 Použití Exegen ...... 19 3.5.3 Použití Wxgn ...... 20 3.6 Struktura SuperWaba programu ...... 20 3.7 API ...... 21 3.7.1 Knihovna Waba ...... 22 3.7.1.1 Tvorba GUI ...... 22 3.7.1.2 API pro vstup/výstup ...... 23

vii 3.7.2 Knihovna SuperWaba ...... 23 3.8 Unicode podpora ...... 25 3.9 Ukázkové programy ...... 26 3.9.1 English Practise ...... 26 3.9.2 Screen Sample ...... 28 4 Porovnání platforem ...... 30 4.1 SuperWaba a Java Platform, Micro Edition ...... 30 4.2 Porovnání virtuálních stroj ˚u ...... 31 4.2.1 Implementace algoritmu ...... 31 4.2.2 Výsledky benchmarku ...... 32 5 Závˇer ...... 35 Literatura ...... 37 A Manuální instalace SuperWaby ...... 38 A.1 Palm OS ...... 38 A.2 Windows CE ...... 38 A.3 OS ...... 39 A.4 a vyšší ...... 39 A.5 GNU/ ...... 40 B Komponenty GUI ...... 41 B.1 waba.ui.PushButtonGroup ...... 41 B.2 waba.ui.Grid ...... 41 Obrázky z ukázkových program ˚u ...... 42 C.1 English Practise a Screen Sample ...... 42 D Obsah pˇriloženéhoCD ...... 47

viii Kapitola 1 Úvod

Firma Sun Microsystems, Inc.1, která vznikla v roce 1982, se ve svˇetˇestala známou pˇrede- vším díky programovacímu jazyku Java. Bylo jen otázkou ˇcasu,kdy firma zoptimalizuje svoji platformu i pro nejmenší zaˇrízeníjako jsou mobilní telefony nebo PDA. V ˇcervnu1999 bylo na konferenci JavaOne pˇredstavenoprostˇredíJava Micro Edition (JME, dˇríveozna- ˇcovánojako J2ME). Od této doby se zaˇcínáo Javˇepˇremýšleti jako o úˇcinnémnástroji ke tvorbˇeaplikací pro mobilní zaˇrízení,který s sebou nese mnoho pozitivních vlastností, jako je pˇrenositelnost,bezpeˇcnost,robustnost apod. Vše tehdy vypadalo nadˇejnˇe,dnes je bohu- žel situace taková, že se firma Sun o PDA moc nezajímá, a proto nenajdeme v jejím podání virtuální stroje (viz 1.1) pro operaˇcnísystémy, jako jsou Windows Mobile nebo Palm OS. PDA založené na tˇechtooperaˇcníchsystémech tvoˇrívelkou ˇcásttrhu. Komunita uživatel ˚u u firmy Sun mnohokrát lobovala, aby vytvoˇrilavirtuální stroj pro Pocket PC. Bohužel se dodnes v tomto smˇeru nic nezmˇenilo. Rešeníˇ musíme hledat u jiných platforem, které jsou založené na jazyce Java. Naštˇestínˇekoliktakových existuje a já se pokusím nˇekteréz nich popsat. Nejprve si ale musíme ˇríctnˇekolikzákladních informací týkajících se Java platformy. Javová platforma se skládá z Java Virtual Machine, API, pˇrekladaˇcea dalších nástroj ˚u. Zde se zmíníme jen o prvních dvou.

1.1 JVM (Java Virtual Machine)

Jedna z nejd ˚uležitˇejšívlastností Javy je její nezávislost na architektuˇre,respektive na operaˇc- ním systému. To zajišt’ují tzv. virtuální stroje, neboli Java Virtual Machine (JVM). Ve vˇetšinˇe programovacích jazyk ˚use kód programu pˇrikompilaci pˇreloží pˇrímodo strojového kódu procesoru, v Javˇeje tomu však jinak. Kód programu se nejprve pˇreložído tzv. mezikódu neboli byte-kódu, který je ještˇenezávislý na architektuˇre,ale ˇcasovˇenároˇcnéfáze kompilace jsou již provedeny. O pˇrevodmezikódu do strojového kódu procesoru se stará právˇeJVM. V praxi to tedy vypadá tak, že nám pro spuštˇeníprogramu staˇcípouze byte-kód programu a virtuální stroj Javy urˇcenýpro náš operaˇcnísystém.

1.

1 1.2. API

1.2 API

API (Application Programming Interface) neboli rozhraní pro programování aplikací je sada knihoven, které obsahují r ˚uznétˇrídya rozhraní. Programátor m ˚užetyto knihovní tˇrídyvy- užívat a tím si hodnˇeulehˇcitpráci. Jedna z nejznámˇejšícha nejobsáhlejších API je Java Core API. Specifikace Javy, Java Micro Edition, využívá jen ˇcástJava Core API, protože vˇetšina funkcí je na malých mobilních zaˇrízeníchnepoužitelná. Podobnˇesi poˇcínajíi ostatní Java platformy, které bud’ využívají (zcela nebo zˇcásti)Java Core API, nebo si vytváˇrívlastní API.

2 Kapitola 2 Java platformy pro mobilní zaˇrízení

V této kapitole následuje popis nˇekterýchprogramovacích platforem založených na jazyce Java. U vˇetšinyz nich uvádím informace o virtuálních strojích, API a podporovaných ope- raˇcníchsystémech. Platformu SuperWaba budu podrobnˇerozebírat v samostatné kapitole, proto ji neuvádím v tomto pˇrehledu.

2.1 Java Platform, Micro Edition (Java ME)

Jako první možný prostˇredekpro vývoj mobilních aplikací uvádím nejmenší specifikaci ja- zyka Java – edici JME (dˇrívepoužívaný název J2ME). Struktura této edice je ˇrešenapomocí konfigurací a profil ˚u(obr. 2.1). Konfigurace jsou dvˇea pˇredstavujízákladní API. K vývoji softwaru se vˇetšinoupoužívají až profily, které dále dekomponují tuto edici pro r ˚uznámalá zaˇrízení,respektive rozšiˇrujízákladní API o další knihovny.

Obrázek 2.1: Profily a konfigurace (Zdroj [1])

3 2.1. JAVA PLATFORM, MICRO EDITION (JAVA ME)

2.1.1 CDC (Connected Device Configuration)

CDC je urˇcenapro výkonnˇejšízaˇrízení,které jsou obˇcaspˇripojenyk síti, jako napˇríkladnavi- gaˇcnísystémy pro automobily, televize po Internetu nebo výkonné PDA. Virtuální stroj musí zvládat témˇeˇrstejnou funkˇcnostjako ve standardní edici. Rozdíl spoˇcíváv pamˇetia zobrazo- vací schopnosti pˇríslušnéhozaˇrízení.Základem CDC API jsou následující knihovny: (Zdroj [11]) java.io java.lang java.lang.ref java.lang.reflect java.math java.net java.security java.security.cert java.text java.util java.util.jar java.util.zip javax.microedition.io

2.1.1.1 Foundation Profile

Tento profil rozšiˇrujeCDC konfiguraci o další tˇrídy, ale nedodává žádné API pro tvorbu grafického uživatelského rozhraní. Jeho cílem je poskytnout API pro sít’ovou podporu, I/O operace a bezpeˇcnost.Slouží jako základ pro níže uvedené profily a jeho využití je zejména v televizních set-top boxech. K CDC API pˇridávánásledující knihovny: (Zdroj [11]) java.security.acl java.security.interfaces java.security.spec javax.microedition.pki javax.security.auth.x500

2.1.1.2 Personal Basis Profile

RozšiˇrujeFoundation Profile o jednoduché grafické uživatelské rozhraní. Jsou implemen- továny jen nezbytné tˇrídya metody knihovny java.awt. Dále pˇridávábalík java.rmi umožnující využívat mechanismus Remote Method Invocation (díky nˇemužm ˚užeobjekt na jednom virtuálním stroji vyvolávat metody jiného objektu, který se m ˚uženacházet na jiném virtuálním stroji). K FP profilu pˇridávánásledující knihovny: (Zdroj [11]) java.awt java.awt.color java.awt.event java.awt.font java.awt.im java.awt.image java.beans java.rmi java.rmi.registry javax.microedition.xlet javax.microedition.xlet.ixc

2.1.1.3 Personal Profile

Tento profil pˇrínášínáhradu za technologii PersonalJava, jejíž vývoj byl zastaven. Dotváˇrí PBP o další tˇrídypotˇrebnék vytváˇreníGUI a k nˇekterýmtˇrídámpˇridávádalší metody. Oproti PBP jsou pˇridánytyto samostatné tˇrídy:(Zdroj [11]) java.applet java.awt.datatransfer

4 2.1. JAVA PLATFORM, MICRO EDITION (JAVA ME)

2.1.1.4 CDC HotSpot Implementation Virtual Machine

Pro CDC byl vytvoˇrenvirtuální stroj pod názvem CVM1, který oproti KVM (viz 2.1.2.3) pod- poroval i slabé odkazy (weak reference), JNI nebo RMI. Casemˇ Sun vytvoˇrilsilnˇejšíverzi tohoto virtuálního stroje pod názvem CDC HotSpot Implementation VM, kterou integro- val nejen do JME, ale i do JSE a JEE. Podrobnˇejšíinformace o virtuálních strojích m ˚užeme nalézt na stránkách firmy Sun2. Pokud budeme hledat VM k operaˇcnímsystém ˚um,jako je Windows Mobile nebo Palm OS, budeme zklamáni. Podporu pro tento virtuální stroj našel jen operaˇcnísystém GNU/Linux na procesorech xScale, ARM a MIPS. (Zdroj [7])

2.1.2 CLDC (Connected Limited Device Configuration)

Tato konfigurace je urˇcenápro zaˇrízeníjako jsou mobilní telefony, low-end PDA a osobní organizéry. Oproti CDC klade na zaˇrízenímnohem menší nároky. Knihovny obsahují velmi omezenou podmnožinu standardní edice Javy a to tˇrídya rozhrání z tˇechtoknihoven:

• java.lang ,

• java.io ,

• java.util .

Dále byla vytvoˇrenanová knihovna javax.microedition.io, která obsahuje specifické metody pro mobilní zaˇrízení.

2.1.2.1 MIDP (Mobil Information Device Profile)

Tento profil dále rozšiˇrujeCLDC a je navržen pro práci s nejmenšími zaˇrízeními,jako jsou mobilní telefony nebo obousmˇernépagery. Ke knihovnám specifikovaným v CLDC pˇridává nˇekolikdalších. Aplikacím, které bˇežípod tímto profilem, se ˇríkámidlety. MIDP je dostupný ve dvou verzích, MIDP 1.0 a novˇejšíMIDP 2.0, který rozšiˇrujestarší verzi profilu o mnoho nových tˇríd(s tím souvisí i vˇetšínároky na pamˇet’ pro JRE – Java Runtime Environment). (Zdroj [6])

2.1.2.2 IMP (Information Module Profile)

Pro úplnost uvádím i druhý profil CLDC konfigurace. Je využíván v zaˇrízeních,které mají velmi omezené zobrazovací schopnosti a chybí jim klávesnice (vstup je ˇrešenpomocí nˇeko- lika tlaˇcítek).

1. Dˇrívebyla CVM zkratka pro Compact Virtual Machine, postupem ˇcasuse ale objevovalo stále více pˇrípad˚u, kdy se CVM zamˇeˇnovalza KVM, proto první písmeno C již nezkracuje nic. 2.

5 2.1. JAVA PLATFORM, MICRO EDITION (JAVA ME)

2.1.2.3 CLDC HotSpot Implementation Virtual Machine

Pro tuto konfiguraci je implementován tzv. Kilobyte Virtual Machine (KVM). P ˚uvodnˇevy- chází z projektu pod názvem „Spotless“3, který byl vytvoˇrenv laboratoˇríchSun Microsys- tem. KVM má oproti virtuálnímu stroji pro standartní edici omezeny nˇekteréfunkce. Na- pˇríkladnepodporuje práci s pohyblivou desetinnou ˇcárkou,skupiny vláken a démonická vlákna, JNI, finalizaci apod. Novˇejšía silnˇejšíverzi, podobnˇejako u CDC, nabízí CLDC HotSpot Implementation VM, který je nˇekolikanásovnˇevýkonnˇejšínež KVM (obr. 2.2).

Obrázek 2.2: Porovnání výkonu mezi KVM a CLDC HotSpot Implementation (Zdroj [8])

2.1.3 Volitelné knihovny

Kromˇezákladní API lze využívat r ˚uznévolitelné knihovny (Zdroj [12]), napˇr.pro podporu kryptografie, možnost autentizace a autorizace, podpora BlueTooth atd. Zde je jejich pˇre- hled: Java for Bluetooth – toto API umožˇnujevývojáˇr˚umvytváˇretaplikace využívající technologii BlueTooth, která je oblíbeným standardem pro bezdrátovou komunikaci. Obsahuje následující knihovny: javax.bluetooth javax.obex Content Handler API – umožˇnujeaplikacím volat jiné aplikace, které nˇejakýmzp ˚uso- bem zpracovávají obsah (napˇr.pˇredávajídata na pˇríslušnémísto). Lze tedy vytvoˇritapli- kaci, která zpracovává textovou zprávu. Pokud tato zpráva má pˇriloženýi zvukový obsah, pak m ˚užemepomocí tohoto API volat jinou aplikaci, napˇríkladzvukový pˇrehrávaˇc. Obsahuje následující knihovnu: javax.microedition.content Mobile Media API – pomocí tohoto API m ˚užemepˇristupovatke zvukovým a multime- diálním zdroj ˚umna mobilním zaˇrízení. Obsahuje následující knihovny:

3.

6 2.1. JAVA PLATFORM, MICRO EDITION (JAVA ME)

javax.microedition.media javax.microedition.media.control javax.microedition.media.protocol J2ME Web Services Specification – toto API umožˇnujevývojáˇr˚umvyužívat již existu- jících koncept ˚uwebových služeb pro vytváˇreníklient ˚uenterprise služeb. Nalezneme zde napˇríkladXML parser, podmnožinu JAXP, API umožˇnujícíRCP založené na XML atd. Obsahuje následující knihovny: java.rmi javax.microedition.xml.rpc javax.xml.namespace javax.xml.parsers javax.xml.rpc org.xml.sax org.xml.sax.helpers Security and Trust Services APIs – jak již název napovídá toto API poskytuje pˇrístup k bezpeˇcnostnímslužbám pro mobilní zaˇrízenínapˇr.podpora kryptografických operací, digitálních podpis ˚uapod. Obsahuje následující knihovny: java.lang java.rmi java.security java.security.spec javacard.framework javacard.framework.service javacard.security javax.crypto javax.crypto.spec javax.microedition.apdu javax.microedition.jcrmi javax.microedition.pki javax.microedition.securityservice Advanced Graphics and User Interface – toto API umožˇnujevyužívat nˇekterépokroˇci- lejší funkce pro tvorbu GUI, pˇredevšímz knihovny Swing. Obsahuje následující knihovny: java.awt java.awt.font java.awt.geom java.awt.image java.nio javax.imageio javax.imageio.event javax.imageio.metadata javax.imageio.stream javax.microedition.agui.event javax.microedition.plaf javax.swing javax.swing.border javax.swing.event javax.swing.plaf javax.swing.table javax.swing.text javax.swing.tree javax.swing.undo RMI – základní knihovny pro mechanismus RMI jsou implementovány v PBP profilu u CDC kofigurace. Toto API pˇridávádalší knihovny využitelné u RMI. Obsahuje následující knihovny: java.rmi java.rmi.activation java.rmi.dgc java.rmi.registry java.rmi.server JDBC – tento doplˇnujícíbalík je urˇcenýpro CDC/FP. Nabízí základní implementaci JDBC, respektive podmnožinu JDBC 3.0 API, která je souˇcástístandardní edice. Obsahuje následující knihovny: java.sql javax.sql

7 2.2. EVE

Java TV API – toto API slouží pro ovládání funkcionality u televizních pˇrijímaˇc˚u. Obsahuje následující knihovny: javax.tv.graphics javax.tv.locator javax.tv.media javax.tv.net javax.tv.service javax.tv.service.guide javax.tv.service.navigation javax.tv.service.selection javax.tv.service.transport javax.tv.util javax.tv.xlet

2.2 Eve

P ˚uvodnínázev této platformy od Ewesoftu byl Ewe. Autor platformy Michael L Brereton se ale rozhodl kompletnˇepˇrepsatvirtuální stroje a nˇekterétˇrídy, pˇridalpodporu vláken ve formˇetˇrídy Thread a platformu pˇrejmenovalz Ewe na Eve. Eve ˇcásteˇcnˇevychází z MIDP profilu a vznikla jako open source, ˇcilije volnˇeke stažení nejen vývojové prostˇredía vir- tuální stroje, ale i balík se zdrojovými kódy platformy. Tak jako vˇetšinajiných platforem, tak i vývojové prostˇredítéto platformy (Eve SDK) obsahuje knihovny tˇríd(ve formˇe JAR soubor ˚u),dokumentaci a zdrojové kódy ukázkových program ˚u.Mimo to nabízí užiteˇcný program jménem Eve Program Maker (obr. 2.3). Vstupem tohoto programu je zkompilo- vaný zdrojový kód Javy ve formˇe CLASS soubor ˚ua výstupem m ˚užebýt formát, který je spustitelný na r ˚uznýchoperaˇcníchsystémech. Eve Program Maker je velmi pˇeknýintui- tivní program urˇcenýtedy k vytváˇreníEve program ˚upro r ˚uznéoperaˇcnísystémy. Navíc lze udˇelatikonky, které potom m ˚užemevytváˇrenémuprogramu pˇriˇradit.

2.2.1 Ewe (Eve) VM Ewe virtuální stroje byly vytvoˇrenyv jazyce C/C++. Nejsou však p ˚uvodnímdílem autora platformy, ale rozšíˇrenímvirtuálního stroje Waba VM od Wabasoftu 4. Aplikace vytvoˇrené v Eve jsou kompatibilní s Java VMs. Pan Brereton Ewe VMs pozdˇejipˇrepracovalna Eve VMs a rozdˇelilje na tˇridruhy: Eve Embedded - základní verze nepodporující grafické uživatelské rozhraní. Eve Mobile Edition - k verzi Eve Embedded pˇridávápodporu Eve GUI knihovny posky- tující možnost vytváˇretgrafické uživatelské rozhraní. Vhodné pˇredevšímpro PDA a smart- phones. Eve Desktop Edition - k pˇredchozíverzi pˇridávánˇekterépokroˇcilejšífunkce pro tvorbu GUI, potom jednoduché API sloužící k práci s databází a tiskem. Jak ale název napovídá, tato verze je urˇcenapro desktopové poˇcítaˇce.

2.2.2 Eve API a podporované OS Eve API tvoˇrídva druhy knihoven. První druh je java.xxx, což jsou knihovny z Java Core API, a druhý je eve.xxx, což jsou knihovny speciálnˇevytvoˇrenépro Eve. Vˇetšinaoriginál- ních knihoven z Java Core API, které jsou využívány v Eve, je „oˇcesaná“.To znamená, že zde

4.

8 2.2. EVE

Obrázek 2.3: Eve Program Maker (Zdroj [4]) nalezneme jen podmnožinu p ˚uvodníchknihoven, respektive tˇrídy, metody a rozhraní, které jsou využitelné u mobilních zaˇrízení.Eve do tˇechtoknihoven nikdy nepˇridávásvé vlastní knihovny. To má za následek, že aplikace vytvoˇrenépro Eve mohou bez problému fungovat na Java virtuálních strojích, naopak to vždy neplatí. Autor Eve vytvoˇrilvirtuální stroje pro operaˇcnísystémy Windows, Windows CE, Palm, Pocket PC/2002 a GNU/Linux (není pod- porován OS Symbian). Programy vytvoˇrenév Eve lze spouštˇetjako applety ve webovém prohlížeˇci. Eve API nabízí podporu nˇekterýchzajímavých funkcí. Eve Database API – Eve nabízí možnost ukládat data aplikací v databázi. Nejedná se o klasickou SQL databázi, ale o jednoduchou databázi z dílny EweSoftu. Je pˇrenositelná z desktopového prostˇredína mobilní zaˇrízení.Eve databázi si m ˚užemepˇredstavitjako jednu tabulku z relaˇcníhomodelu. Veškeré API potˇrebnék práci s databází najdeme v balíˇcku eve.database. Remote Method Invocation (RMI) – Eve API poskytuje knihovny pro RMI, neboli vzdá- lené pˇristupováník Java objekt ˚um,které m ˚užoubýt na jiném virtuálním stroji, vyvolávat

9 2.3. WEBSPHERE EVERYPLACE MICRO ENVIRONMENT u nˇejmetody apod. Slouží k tomu interface eve.sys.IRemoteProxyMaker, respektive jeho implementace eve.io.block.RemoteProxy. Ve vˇetšinˇepˇrípad˚use ale využívá me- toda virtuálního stroje eve.sys.Vm.getRemoteProxyMaker(Class interface, int options, ClassLoader specialLoader), která vrací objekt typu IRemoteProxyMaker. RMI lze využít hlavnˇeu klient/server aplikací. Eve Native Interface (ENI) – jedná se o rozhraní, které umožˇnujekód (metody) v Javˇe pˇrekonvertovatdo C++, což se dá dobˇrevyužít u tvorby dynamických knihoven (napˇr.pro GNU/Linux). S trochou nadsázky by se dalo ˇríct,že je to opak Java Native Interface (JNI).

2.3 WebSphere Everyplace Micro Environment

WebSphere Everyplace Micro Environment (dále jen WEME) je vývojové prostˇredíurˇcené pro tvorbu softwaru pro r ˚uznámobilní zaˇrízení.IBM nabízí i prostˇredíWebSphere Every- place Custom Environment (dále jen WECE). WEME je narodíl od WECE oficiálnˇeuznaná Java platforma, proto je oznaˇcovánajako „Java Powered“ (to znamená, že aplikace zde vy- tvoˇrenémohou být publikovány s typickým logem Javy – šálek kávy). WECE není ofici- ální Java ME platforma, ale nˇekdym ˚užebýt výhodné toto prostˇredípoužít, nebot’ aplikace mohou být rychlejší než ve WEME. WebSphere Everyplace Micro Environment je imple- mentováno pro obˇekonfigurace (CLDC, CDC) i všechny profily (MIDP, Personal Profile, Foundation Profile). ProstˇredíWEME spolu s virtuálními stroji lze získat jako trial verzi na webových stránkách IBM5. Pˇredtímje nutná bezplatná registrace. Další možností je zakou- pení licence, více informací se uživatel dozví po zkontaktování IBM zástupce. Na interne- tových stránkách Fair And Biased6 jsem se dozvˇedˇel,že by cena licence pro jedno zaˇrízení mˇelabýt 5.99 $.

2.3.1 IBM J9 virtual machine IBM vlastnˇenapravila chybu firmy Sun, která se rozhodl nezabývat smartphony a PDA, pˇrestožeby specifikace Java ME a její kofigurace CDC spolu s profily byla nejlépe využi- telná právˇev tomto segmentu zaˇrízení.NaštˇestíIBM vytvoˇrilavirtuální stroje pro vˇetšinu dnes používaných operaˇcníchsystém ˚u.Jsou nazývány IBM J9 virtual machine. IBM J9 VM je souˇcástíWebSphere Everyplace Micro Environment a WebSphere Everyplace Custom En- vironment.

2.3.2 API a podporované OS Jak již bylo ˇreˇceno,WEME implementuje celou Java, Micro Edition, ˇciliAPI je závislé na tom, jaká konfigurace, respektive profil, je použitý. Podrobnˇejšíinformace jsou uvedeny v pod- kapitole 2.1. Podporované verze kofigurace jsou CLDC 1.1, CDC 1.0 a CDC 1.1, u profil ˚uje

5. 6.

10 2.4. NSICOM CREME

Obrázek 2.4: IBM WebSphere Micro Environment je implementováno pro celou Java, Micro Edition (Zdroj [13]) to potom MIDP 2.0, Foundation 1.0, Foundation 1.1, Personal Profile 1.0 a Personal Profile 1.1. Pro tvorbu aplikací pro dnešní PDA je asi nejlépe využitelná nejsilnˇejšía nejobsáhlejší kombinaci ve formˇeCDC 1.1/Personal Profile 1.1. ObˇeprostˇredívˇcetnˇeIBM J9 virtuálního stroje najdou uplatnˇeníu mnoha zaˇrízenía ope- raˇcníchsystém ˚u.WEME podporuje následující operaˇcnísystémy: BREW, Mobilinux, Mon- taVista Linux PE, RedHat Enterprise Linux, OSE, Palm OS, Windows, Windows Mobile. (Zdroj [14]) U WECE je to potom: Mobilinux, MontaVista Linux PE, RedHat Enterprise Linux, OSE, Palm OS, Windows, Windows Mobile. (Zdroj [15])

2.4 NSIcom CrEme

NSIcom CrEme jsou spolu s produktem od IBM (viz 2.3) jediné dvˇeplatformy, které jsou plnˇekompatibilní se specifikací Java Micro Edition. Oproti IBM WebSphere Everyplace Micro Environment nabízí lepší možnosti pro tvorbu GUI, protože je ˇcásteˇcnˇeimplemen- tována knihovna Swing (CrE-ME 4.12). Na druhou stranu ale WEME pokrývá celou Java ME, kdežto CrEme je implementováno „pouze“ pro následující konfigurace/profily:

• CDC/Foundation a Personal Profile, založený na JDK 1.3.1. Implementace této spe- cifikace je oznaˇcenájako CrE-ME 4.12.

• PersonalJava 3.1, starší specifikace založená na JDK 1.1.8. Implementace této specifi- kace je oznaˇcovánajako CrEme 3.29.

11 2.4. NSICOM CREME

Kromˇetˇechtodvou verzí, NSIcom nabízí i verzi jménem CrEme Plus, která je urˇcenapro speciální zaˇrízeníjako ˇcteˇckyˇcárových kód ˚u,magnetických proužk ˚uapod. CrEme 3.29 je starším produktem NSIcom, verze CrE-ME 4.12 je pomˇernˇenovým produktem, protože byla uvolnˇenazaˇcátkemroku 2006. Obˇeverze jsou založeny na technologii JSCP (Java Software Co-Processor), která pochází z dílny NSIcom a slouží jako základ pro CrEme virtuální stroje. (Zdroj [2]) NSIcom CrEme je podobnˇejako WEME od IBM komerˇcnímproduktem. Všechny verze CrEme si lze po registraci bezplatnˇestáhnout7 a vyzkoušet po dobu 30-ti dní. Pokud bychom chtˇelizakoupit licence, cena je u všech tˇríverzí jednotná. Je to 250 $ za 10 licencí, 500 $ za 20 licencí a 1000 $ za 40 licencí.

2.4.1 NSIcom CrEme Virtual Machine

Jak již bylo výše uvedeno, základem CrEme virtuálního stroje je JSCP. JSCP je vlastnˇemalé jádro operaˇcníhosystému, které poskytuje základní služby potˇrebnék dosáhnutí nezávis- losti na OS, což je hlavní vlastnost všech Java virtuálních stroj ˚u.Dalšími vlastnostmi posky- tovanými JSCP jsou JBooster a Memory Management. JBooster – je forma JIT (Just In Time) technologie, kdy není byte-kód interpretován, ale pˇríslušnáˇcástmezikódu je pˇrekládánaa volána až na „poslední chvíli“, respektive když se objeví požadavek na volání této ˇcástikódu. Podle NSIcom jejich forma JIT technologie vyžaduje v pr ˚umˇeru od 100 KB do 200 KB pamˇeti. Memory Management – NSIcom vytvoˇrilavlastní subsystém pro správu pamˇeti,který významnˇeredukuje pamˇet’ové požadavky virtuálního stroje. NSIcom CrEme dále podporuje i JNI (Java Native Interface).

2.4.2 API a podporované OS

Základní knihovna pro tvorbu GUI, která je defaultnˇeimplementována v CrEme, je Truffle. Truffle je kompatibilní s knihovnou AWT, která je souˇcástíkonfigurace pJava 3.1 MIN8. Mož- nosti této knihovny jsou dosti omezené a chybí takové základní komponenty jako scrollbary, menu apod. Místo ní lze použít knihovnu TinyAWT, která je plnˇekompatibilní s knihovnou AWT obsaženou v konfiguraci pJava 3.1 MAX9 a nabízí look and feel, který je velmi po- dobný tomu z JDK od firmy Sun. Více možností pro tvorbu GUI nalezneme až v doplˇnujícím balíˇckuSwing 1.1.1. K dispozici jsou následující doplˇnujícíbalíˇcky: Java Secure Sockets Extension (JSSE) 1.0.3 – je API, které nabízí podporu SSL (Secure Sockets Layer) protokolu, který slouží k bezpeˇcnékomunikaci s internetovými servery po- mocí HTTPS. Více informací o této knihovnˇelze najít na webové adrese firmy Sun10.

7. 8. pJava 3.1 MIN je PersonalJava konfigurace s omezenými knihovnami 9. pJava 3.1 MAX je kompletní PersonalJava konfigurace 10.

12 2.4. NSICOM CREME

javax.comm – knihovna sloužící pro komunikaci s porty. Více informací lze najít na webové adrese firmy Sun11. Swing 1.1.1 – knihovna Swing ve verzi 1.1.1 nabízí mnoho nových rozhraní, tˇrída metod pro tvorbu grafického uživatelského rozhraní. Samozˇrejmˇenabízí možnosti look and feel. Více informací lze najít na webové adrese firmy Sun12. V pˇrípadˇeCrEme 3.29 lze využít další doplˇnkovéknihovny, které jsou k dispozici pro pJava 3.1. Jsou to napˇríkladtyto balíky: RMI, SQL Package, Math Package, Zip/Jar format, Java Security.

11. 12.

13 Kapitola 3 SuperWaba

3.1 (Super)Waba

Kalifornská spoleˇcnostWabaSoft Inc.1 se koncem 20. století snažila vytvoˇritprogramovací platformu, která by byla urˇcenavýhradnˇepro vývoj aplikací pro malé zaˇrízení.V té dobˇe mˇelypˇrenosnézaˇrízenívelmi omezený procesní výkon a pamˇet’. Vývojáˇriz WabaSoftu v ˇceles Robem Nielsenem si kladli za úkol vytvoˇritplatformu, která by byla použitelná i u zaˇrízenís ménˇenež 64Kb RAM a daly by se v ní snadno a rychle vyvíjet programy. V roce 1999 tak vznikl projekt jménem Waba. WabaSoft na svých stránkách uvádí, že jejich platforma nemá s Javou a se spoleˇcnostíSun žádné pˇríméspojení. Na druhou stranu ale pˇri- pouští, že syntaxe Waby je striktní podmnožina syntaxe Javy. To dovoluje programátor ˚um Javy rychle a bez vˇetšíchpotíží pˇrejít na Wabu. Co se týká ceny, tak tato platforma je zdarma a spadá pod GNU GPL licenci. Ta ve zkratce ˇríká,že veškerý software je možno volnˇešíˇrit, používat i modifikovat pouze za pˇredpokladu,že bude šíˇrenbezplatnˇe(pˇrípadnˇeza dis- tribuˇcnípoplatky) s možností bezplatnˇezískat zdrojové kódy. Tyto podmínky se vztahují nejen na samotný software, ale i na software, který je od nˇehoodvozen. Více na stránkách GNU2. Waba, respektive Waba virtuální stroje, byly výchozím bodem pro mnoho jiných pro- jekt ˚u,mezi které patˇríi SuperWaba, jejíž autory jsou Guilherme Campos Hazan a Renato Ribeiro. V roce 2002 založili v Brazílii, ve mˇestˇeRio de Janeiro, firmu SuperWaba Ltd. Su- perWaba využívá z platformy Waba virtuální stroje, API, ke kterému pˇridávánˇekolikdal- ších knihoven, a dva základní programy Warp a Exegen. Tyto programy slouží k vytváˇrení formát ˚usoubor ˚u,které jsou pak spustitelné ve virtuálním stroji, a k vytváˇreníinstalaˇcních soubor ˚u.

3.2 Vývoj SuperWaba programu

Jednotlivé fáze pˇrivývoji programu v SuperWabˇedobˇreznázorˇnujeobrázek 3.1. Zdrojový kód programu (napˇr. Hello.java) nejprve zkompilujeme pomocí kompilá- toru JavaC, který je souˇcástíkaždého JDK (Java Development Kit). Oficiálnˇejsou kompa- tibilní se SuperWabou tyto verze JDK: 1.1.x, 1.2.2, 1.3.x, 1.4.x a 1.5.x. Z mých zkušeností je možné použít i verzi 1.6.0. Doporuˇcenáverze je ale 1.2.2, u novˇejšíchverze JDK by mohly

1. 2.

14 3.3. INSTALACE A SUPERWABA VM

Obrázek 3.1: Kroky pˇrivývoji SuperWaba programu (Zdroj [9]) vzniknout potíže s nástrojemi Warp a Exegen (viz dále). Abychom se tˇemtoproblém ˚umvy- varovali, je nutné u kompilace použít parametr -target 1.1 a -source 1.3. Pro ukázku bude pˇríkazkompilace souboru Hello.java vypadat následovnˇe: javac -target 1.1 -source 1.3 Hello.java Po kompilaci nám vznikne mezikód v podobˇe CLASS soubor ˚u(Hello.class). Nyní už musíme použít specifické nástroje SuperWaby. Prvním z nich je Warp, který ze souboru s pˇríponou CLASS a dalších soubor ˚u3, vytvoˇrí PDB soubor (Hello.pdb). Tento soubor si m ˚užemepˇredstavitjako JAR soubor bez komprese. Nyní zbývá vytvoˇritsoubor, který by byl spustitelný pod virtuálním strojem. K tomuto úˇceluslouží nástroj Exegen. Typ souboru pro VM závisí na architektuˇre zaˇrízení,pro kterou je urˇcen.Pomocí nástroje Exegen m ˚užeme vytvoˇriti instalaˇcnísoubory zpracovávaného programu. Jednotlivé typy soubor ˚ujsou uve- deny v tabulce 3.1.

3.3 Instalace a SuperWaba VM

SuperWaba SDK obsahuje veškeré potˇrebnésoubory. Skládá se z nˇekolikaadresáˇr˚u:

3. Jsou podporovány soubory typu .class, .wav, .bmp, .gif, .jpeg, jpg, .png, .txt, .xml

15 3.4. PODPOROVANÉ OS A LICENCE

Operaˇcnísystém Spustitelný soubor pro VM Instalaˇcnísoubor Windows CE Hello.exe/.lnk Hello.cab Symbian Hello.app Hello.sis Palm OS Hello.prc Install.exe Windows 98 a vyšší Hello.lnk — (Win32)

Tabulka 3.1: Formáty soubor ˚upro jednotlivé OS

• bin - zde se mimo jiné nachází programy Warp, Exegen a instalaˇcnísoubory k vir- tuálním stroj ˚uma ukázkovým program ˚um, • docs - dokumentace skládající se z Javadocu, dvou pdf soubor ˚u(GameTutorial a Su- perWaba Companion) a zdrojových soubor ˚uk ukázkovým program ˚umz dokumen- tace SuperWaba Companion , • etc - zde najdeme certifikáty zabezpeˇcení, • lib - zde nalezneme knihovny SuperWaba.jar a SuperWabaTools.jar, dále r ˚uznéfonty, soubory potˇrebnépro manuální instalaci SuperWaby apod. , • src - zde nalezneme zdrojové soubory knihoven z API, ikonky a fonty. Instalace SuperWaby je jednoduchá, protože máme k dispozici veškeré instalaˇcnísoubory pro operaˇcnísystémy. Nalezneme je v adresáˇri SuperWabaSDK/bin/installers/vm. Pokud z nˇejakéhod ˚uvodunem ˚užemepoužít instalaˇcnísoubory, musíme SuperWabu na- instalovat manuálnˇe(viz pˇríloha A).

3.4 Podporované OS a licence

3.4.1 Verze a licence SuperWaba je nabízena ve dvou verzích – Community (GNU GPL) a Professional (GNU LGPL). Community – Tato verze SuperWaby spadá pod GNU GPL licenci. Není urˇcenapro ko- mereˇcníúˇcely, ale pro osobní využití nebo open source projekty. Je zakázáno šíˇritprogramy s „uzavˇreným“zdrojovým kódem. Pro oznamování chyb slouží server SourceForge4. Sour- ceForge tak slouží ke komunikaci se SuperWaba týmem a kromˇeoznamování chyb zde m ˚u- žou uživatelé navrhovat vylepšení a postˇrehy, sdílet patche opravující chyby, podílet se na projektech apod. U této verze nem ˚užemevyužívat všechny vlastnosti SuperWaby. Professional – Professional verze SuperWaby spadá pod GNU LGPL licenci. Jak již ná- zev napovídá, jedná se o profesionální využití SuperWaby. Autoˇriposkytují dobrou pod- poru svým zákazník ˚umve formˇeService Level Agreement (SLA). Tento servis zahrnuje

4.

16 3.4. PODPOROVANÉ OS A LICENCE pomoc svým zákazník ˚umbˇehem4 pracovních dn ˚ua v pˇrípadˇeˇrešeníchyb 7 pracovních dn ˚u.Cena za použití Professional verze je 495 $ roˇcnˇe.Po uplynutí této doby lze verzi stále užívat, ale bez jakékoliv podpory ze strany SuperWaba týmu. Kompletní seznam rozdíl ˚umezi jednotlivými verzemi z hlediska podporovaných funkcí pro vývoj program ˚uznázorˇnujetabulka 3.2.

Vlastnosti Community Professional Základní vlastnosti ano ano Podpora specifikovaných zaˇrí- vše vše zení/OS Pokroˇcilévlastnosti – Unicode podpora ano ano – GPS knihovna ano ano – XML podpora ano ano – PIMAL ano ano – Games knihovna ano ano – Symbol Scanners podpora ano ano – Podpora kryptografie ano ano – Native knihovna ano ano – Nástroj na pˇrevodTrueType font ˚u ano ano – Zip java native – Podpora r ˚uzných formát ˚u ob- ne (jen ano rázk ˚u .bmp) – HTML podpora ne ano – SWUnit ne ano Vlastnosti pro práci s daty – TˇrídyFile a Catalog ano ano – IBM Db2e ovladaˇc ano ano – Litebase 1.x ne ano Možnosti pˇripojení – Socket podpora ano ano – Http protokol podpora ano ano – Knihovna pro tisk ne ano – Ftp protokol podpora ne ano – SMTP podpora (posílání email ˚u) ne ano – Webservice podpora ne ano

Tabulka 3.2: Rozdíly mezi verzemi Community a Professional (Zdroj [10])

17 3.5. WARP, EXEGEN A WXGN

3.4.2 Podporované OS

Z hlediska osobních poˇcítaˇc˚ujsou podorovány Windows 98 (a vyšší) a GNU/Linux (dit- ribuce Redhat a Debian). V pˇrípadˇePDA je podporovány Palm OS (3.0 a vyšší), vˇetšina Windows CE zaˇrízenía vˇetšinatelefon ˚uzaložených na OS Symbian. U operaˇcníhosystému Symbian jsou podporovány tyto verze (série):

• UIQ – napˇr.zaˇrízeníSonyEricsson’s P800 ,

• S60 – napˇr.zaˇrízeníNokia 6670 ,

• S80 – napˇr.zaˇrízeníNokia Communicator 9500 ,

• S60 3. edice – napˇr.zaˇrízeníNokia E62 .

Z d ˚uvod˚ušpatné dokumentace a malé podpory ze strany Symbianu, nejsou virtuální stroje pro toto zaˇrízenízcela bezchybné.

3.5 Warp, Exegen a Wxgn

Nástroje Warp a Exegen byly spolu se základním API pˇrevzatyz projektu Waba. Jsou sou- ˇcástíSuperWaba SDK (aktuální Community verze v dobˇepsaní práce byla 5.83 GPL), který lze získat na domovských stránkách platformy5. Tyto nástroje jsou napsány v Javˇe,proto je nutné do systémové promˇennéCLASSPATH pˇridatcestu k JAR soubor ˚umtˇechtonástroj ˚u. Ty se obvykle nacházejí v:

• /SuperWabaSDK/lib/SuperWaba.jar ,

• /SuperWabaSDK/lib/SuperWabaTools.jar .

Další možností je pˇrikaždém volání specifikovat tuto cestu pomocí -classpath, napˇr. java.exe -classpath /SuperWabaSDK/lib/SuperWaba.jar; /SuperWabaSDK/lib/SuperWabaTools.jar superwaba.tools.Warp nebo v pˇrípadˇeExegen java.exe -classpath /SuperWabaSDK/lib/SuperWaba.jar; /SuperWabaSDK/lib/SuperWabaTools.jar superwaba.tools.Exegen

Pro další použití budeme pˇredpokládat,že jsme cestu k JAR soubor ˚umpˇridalido systé- mové promˇennéCLASSPATH.

5.

18 3.5. WARP, EXEGEN A WXGN

3.5.1 Použití Warp

Volání nástroje Warp probíhá následujícím pˇríkazem: java superwaba.tools.Warp [options] [files]

– místo command v pˇríkazupoužijeme jeden z tˇechtodvou parametr ˚u: c Vytvoˇrínový PDB soubor. l Vypíše informace o PDB souboru (které tˇrídy obsahuje). [options] – nepovinný parametr, nastavujeme vlastnosti transformace, lze použít násle- dující: /? Vypíše se nápovˇeda. /x Za tento parametr m ˚užemespecifikovat tˇrídy, které nebudou použity pˇritransformaci. /i Opak parametru /x, pˇritransformaci do PDB souboru budou použity jen tˇrídyspecifikované za tímto parametrem. /v M ˚užemespecifikovat verzi PDB souboru, který vznikne. Úplný seznam parametr ˚ulze najít v pˇríruˇcceSuperWaba Companion, která je souˇcástí SuperWaba SDK (Zdroj [9]). – jméno výstupního PDB souboru [files] – nepovinný parametr, jméno vstupního souboru. Pokud nebude zadán, použije se soubor .class, pˇrípadnˇe .jar Pˇríkladypoužití programu Warp: java superwaba.tools.Warp c Hello java superwaba.tools.Warp c Hello hello.jar java superwaba.tools.Warp l Hello.pdb

3.5.2 Použití Exegen

Tento nástroj slouží k vytváˇrenífinálních soubor ˚unašich program ˚u.Vedle soubor ˚upro vir- tuální stroje lze vytvoˇriti instalaˇcnísoubory. Exegen spouštíme následujícím pˇríkazem: java superwaba.tools.Exegen [options] [main-class] [pdbfile]

[options] – pomocí prvního nepovinného parametru specifikujeme mimo jiné i cílový virtuální stroj. Pokud tento parametr nespecifikujeme, vytvoˇríse PRC soubor. Použít lze následující parametry:

19 3.6. STRUKTURA SUPERWABA PROGRAMU

/? Vypíše se nápovˇeda. /E Vytvoˇríse EXE soubor urˇcenýpro Windows CE a Pocket PC. /INST Vytvoˇríse instalaˇcnísoubor install.exe pro Palm OS zaˇrízení. /L Vytvoˇríse LNK soubor pro Windows CE a Po- cket PC. /LNK Vytvoˇríse LNK soubor pro Windows 98 a vyšší. /SH Vytvoˇríse linuxový skript pro spouštˇeníapli- kace. /SIS Vytvoˇríse SIS instalaˇcnísoubory pro Symbian OS zaˇrízení. /Z Vytvoˇríse CAB instalaˇcnísoubory pro Windows CE zaˇrízení.Dále soubor typu BAT pro instalaci pomocí ActiveSync. Úplný seznam parametr ˚ulze najít v pˇríruˇcceSuperWaba Companion, která je souˇcástí SuperWaba SDK (Zdroj [9]). – povinný parametr, název výstupních soubor ˚u [main-class] – nepovinný parametr, udávající cestu ke tˇrídˇe,která dˇedíhlavní tˇrídu waba.ui.MainWindow. Pokud nebude zadán, použije se soubor s názvem [pdbfile] – nepovinný parametr, cesta ke vstupnímu PDB souboru. Pokud nebude zadán, použije se soubor s názvem parametru Pˇríkladypoužití programu Exegen: java superwaba.tools.Exegen /LNK Hello java superwaba.tools.Exegen /Z Hello

3.5.3 Použití Wxgn Pomocí Wxgn m ˚užemevolat Warp i Exegen v rámci jednoho pˇríkazu.Parametry použitelné u jednotlivých nástroj ˚ujsou stejné jako bychom volali tyto nástroje samostatnˇe.Volání Wxgn je následující: java superwaba.tools.Wxgn Warp_príkazyˇ z Exegen_príkazyˇ

z – slouží jako oddˇelovaˇc

3.6 Struktura SuperWaba programu

Každá aplikace vytvoˇrenáv SuperWabˇemusí mít právˇejednu tˇrídu,která bude dˇedittˇrídu waba.ui.MainWindow. Tuto tˇrídupak m ˚užemepovažovat za nejd ˚uležitˇejšítˇríduaplikace, která plní funkci urˇcitéhorozhraní mezi virtuálním strojem a naší aplikací. Doporuˇcená kostra tˇrídydˇedící MainWindow vypadá následovnˇe:

20 3.7. API import waba.ui.MainWindow; import waba.sys.Settings; public class Example extends MainWindow { public Example() { Settings.setUIStyle(byte style); } public void onStart() {

} public void onExit() {

} }

public Example() – klasický konstruktor s jedinou zvláštností. Pouze na tomto místˇe m ˚užebýt specifikován look and feel styl. Zmˇenastylu uživatelského rozhraní mimo tento konstruktor m ˚užemít za následek pád programu. Styl nastavujeme metodou waba.sys.Settings.setUIStyle(byte style)

Máme na výbˇer4 typy vzhledu našich aplikací. Za parametr style m ˚užemepožít jeden z následujících atribut ˚u:

• waba.sys.Settings.WinCE - styl vyskytující se u Windows CE zaˇrízení,je nasta- ven jako defaultní

• waba.sys.Settings.PalmOS - styl PalmOS zaˇrízení

• waba.sys.Settings.Flat - styl, kterým disponují programy u Pocket PC zaˇrí- zení

• waba.sys.Settings.Vista - styl vzhledu Windows Vista

public void onStart() – tato metoda je volána vzápˇetípo konstruktoru (v našem pˇrí- padˇe Example()). Slouží k inicializaci uživatelského rozhraní. Od verze SuperWaba 3.4 je souˇcástítˇrídy waba.ui.Container, proto m ˚užedojít k volání nebo pˇrekrytítéto metody v jakékoli tˇrídˇedˇedícítˇrídu Container. public void onExit() – tato metoda je volána pˇripˇrirozeném ukonˇcováníaplikace. Pˇri resetování PDA nebo neoˇcekávanýchzávažných chybách volána nebude.

3.7 API

API v SuperWabˇem ˚užemerozdˇelitna dva balíky - Waba a SuperWaba.

21 3.7. API

3.7.1 Knihovna Waba Waba balík je velmi d ˚uležitý,nalezneme zde základní a nejpoužívanˇejšítˇrídya rozhraní. Waba API pˇredstavujesoubor SuperWaba.pdb, který nalezneme v adresáˇri SuperWabaSDK/ lib/vm/xplat a obsahuje následující balíky: waba.fx – nalezneme zde tˇrídyreprezentující font písma (Font), barvu (Color), geome- trické útvary (Rect), obrázky (Image), zvuky (Sound, SoundClip) atd., waba.io – tˇrídypotˇrebnék práci se vstupem/výstupem, napˇr.datové proudy (Stream, DataStream, ByteArrayStream), tˇrídyreprezentující soket (Socket), soubor/adresáˇr (File) apod., waba.lang – tento balík obsahuje nˇekterétˇrídyz balíku java.lang. Jednotlivé tˇrídy obsahují podmnožinu metod tˇrídoriginálních, waba.sys – tˇrídysloužící ke komunikaci s operaˇcnímsystémem, waba.ui – asi nejd ˚uležítˇejšíˇcástbalíku waba. Nalezneme zde mnoho tˇrídsloužících k vy- tváˇreníuživatelského rozhraní, waba.util – nalezneme zde tˇrídyreprezentující datum, generátor náhodných ˇcísela da- tové struktury (Vector, HashTable atd.).

3.7.1.1 Tvorba GUI Pro tvorbu grafického uživatelského rozhraní je urˇcenaknihovna waba.ui. Ze základ- ních grafických komponent zde nalezneme tyto: Button, Check, ComboBox, Edit, Label, ListBox, PopList, ProgressBar, Radio, ScrollBar. Z tˇechsložitˇejšíchje to potom:

• Menu skládající se z tˇríd MenuBar, PopupMenu a MenuItem.

• PushButtonGroup – tˇrídareprezentující skupinu tlaˇcítek,které m ˚užoubýt sesklá- dány horizontálnˇe,vertikálnˇenebo do matice (obr. B.1).

• TabPanel – tˇrídaurˇcenápro tvorbu „záložek“, podobná tˇrídˇe JTabbedPane ze Swingu .

• MessageBox – okýnko, respektive box, urˇcenýpro zobrazování zpráv uživateli .

• InputDialog – tˇrída,která je podobná tˇrídˇe MessageBox s tou výjimkou, že obsa- huje editovatelné pole pro vstup .

• Grid – velmi zajímavá tˇrída,která slouží k prezentaci dat formou tabulky. Má im- plementované lexikální ˇrazenípodle sloupc ˚u(obr. B.2).

• ToolTip – tato tˇrídareprezentuje nápovˇedu,která se zobrazí po pˇridrženístylusu ˇcikurzoru myši nad urˇcitoukomponentou .

Dále máme k dispozici tˇrídyprezentující r ˚uznéutilitky. Jsou to:

• Calculator – kalkulaˇcka,

22 3.7. API

• Calendar – kalendáˇr,

• Keyboard – klávesnice .

3.7.1.2 API pro vstup/výstup

Tˇrídyurˇcenépro I/O operace najdeme v knihovnˇe waba.io. SerialPort komunikace pˇresserial port, USB ˇciBluetooth. Socket komunikace pomocí TCP/IP spojení. File tˇrídareprezentuje soubor. Catalog tˇrída,která je používána k ukládání dat, fyzicky je reprezentována PDB souborem. ByteArrayStream proud pro pˇresunbyt ˚u. DataStream datový proud. Stream základní tˇrída,kterou vˇetšinatˇrídz této knihovny dˇedí. Professional verze SuperWaby nabízí databázi Litebase, kterou m ˚užemepoužít jak v mo- bilních zaˇrízení,tak v desktopech. Pro pˇrístupk dat ˚umse používá jazyk SQL. Litebase není kompatibilní s JDBC.

3.7.2 Knihovna SuperWaba

Balík SuperWaba dále rozšiˇrujezákladní balík Waba. Tˇrídyz tohoto balíku najdeme v soubo- rech typu XPlat*.pdb v adresáˇri SuperWabaSDK/lib/vm/xplat, napˇríkladknihovnu superwaba.ext.xplat.ui v souboru XPlatUI.pdb, soubor XPlatGame.pdb obsahuje knihovnu superwaba.ext.xplat.game apod. Knihovna SuperWaba se dále dˇelído následujících knihoven: superwaba.ext.ce.io.builtin – POOM (Pocket Outlook Object Model) knihovna, která umožˇnujepˇrístupk PIM (Outlook Mobile Personal Information Management), což je fra- mework, který umožˇnujemanipulaci (upravování, pˇridávání,prohlížení) s kontakty, sch ˚uze- kami v PDA s Windows CE, superwaba.ext.ce.io.builtin.pimal – CE implementace PIMAL frameworku, superwaba.ext.palm.io.builtin – tato knihovna umožˇnujekomunikovat s vestavˇenými aplikacemi v Palm OS, napˇr.address book, date book apod., superwaba.ext.palm.io.builtin.pimal – Palm implementace PIMAL frameworku, superwaba.ext.xplat.game – knihovna urˇcenak vytváˇreníjednoduchých her, najdeme zde tˇrídysloužící k vytváˇreníanimací, animovaných tlaˇcítekapod., superwaba.ext.xplat.io – pˇridávádalší I/O tˇrídy, napˇr. BufferedFile umožˇnujícírych- lejší ˇcteníze souboru, BufferStream, SerialSocket apod., superwaba.ext.xplat.io.gps – knihovna umožˇnujezískávat GPS data, superwaba.ext.xplat.io.gps.garmin – implementace Garmin GPS protokolu, superwaba.ext.xplat.io.http – podpora HTTP protokolu,

23 3.7. API

superwaba.ext.xplat.io.pimal – The Personal Information Management Abstract Layer sloužící pro komunikaci s vestavˇenýmiaplikacemi jako address book, memo book, date book apod., superwaba.ext.xplat.io.pimal.addressbook – tˇrídya rozhraní pro PIMAL address book (adresáˇr), superwaba.ext.xplat.io.pimal.datebook – tˇrídya rozhraní pro PIMAL date book (diáˇr), superwaba.ext.xplat.io.pimal.memobook – tˇrídy a rozhraní pro PIMAL memo book (poznámkový blok), superwaba.ext.xplat.io.pimal.todobook – tˇrídya rozhraní pro PIMAL todo book (úko- lovník), superwaba.ext.xplat.io.scanner – tato knihovna je urˇcenapro vytváˇreníprogram ˚upro zaˇrízeníjako ˇcteˇckyˇcárových kód ˚uapod., superwaba.ext.xplat.sql – podmnožina knihovny java.sql, superwaba.ext.xplat.sql.db2e – doplˇnujícíknihovna pro superwaba.ext.xplat.sql, umožˇnujepˇripojeník IBM DB2everyplace klientovi a používání DB2e WDBC ovladaˇce, superwaba.ext.xplat.sql.db2e.db2ex – další doplˇnujícítˇrídypro práci s databázemi, superwaba.ext.xplat.ui – tato knihovna nabízí další tˇrídypro tvorbu GUI, napˇr.tˇrídu MultiEdit, což je nˇekolikaˇrádkovéeditovatelné pole pro vstup ˇcivýstup. Dále obsahuje tˇrídu ColorList, která implementuje ListBox obsahující seznam barev. Tˇrídu ColorList je vhodné použít v kombinaci s další tˇrídou ChoicesDialog, což je okénko, které zobra- zuje možnosti formou ComboBoxu, superwaba.ext.xplat.util – nabízí tˇrídu EscapeHtml, která slouží ke zmˇenˇekoncových znak ˚uv Html ˇretˇezci,a tˇrídu StrTokenizer, která je podobná tˇrídˇe StringTokenizer z Java SE, superwaba.ext.xplat.util.crypto – tento balík obsahuje tˇrídypro (de)kódování dat. Jsou použity algoritmy Blowfish, MD5, SHA1, TEA, superwaba.ext.xplat.util.datergf – nabízí pokroˇcilejšítˇrídyprezentující data a ˇcasy, superwaba.ext.xplat.util.props – obsahuje tˇrídu Properties a další pomocné tˇrídy, superwaba.ext.xplat.util.zip – Java implementace knihovny Zip, superwaba.ext.xplat.util.zip.checksum – obsahuje rozhraní Checksum, tˇrídy Adler32 a CRC32 pro výpoˇcetkontrolních souˇct˚uu I/O proud ˚u, superwaba.ext.xplat.xml – tato knihovna se skládá z tˇríd,které umožˇnujípráci s XML soubory. Knihovna SuperWaba u Professional verze obsahuje nˇekterédalší knihovny: superwaba.ext.ce.io.gprs – umožˇnujeGPRS pˇripojenína Pocket PC 2002 (a vyšší), superwaba.ext.palm.io.print.irprint – tˇrídy, které implementují rozhraní mezi Super- Waba knihovnou pro tisk a IrPrint6 knihovnou pro tisk, superwaba.ext.xplat.fx.gif – podpora obrázk ˚uformátu GIF, superwaba.ext.xplat.fx.jpeg – podpora obrázk ˚uformátu JPEG, superwaba.ext.xplat.fx.png – podpora obrázk ˚uformátu PNG,

6.

24 3.8. UNICODE PODPORA

superwaba.ext.xplat.html, superwaba.ext.xplat.html.ui – podpora pro práci s HTML, superwaba.ext.xplat.io.print, superwaba.ext.xplat.io.print.pboy – podpora tisku, superwaba.ext.xplat.io.search – obsahuje tˇrídu CatalogSearch, která zrychluje sek- venˇcníhledání v PDB souborech, superwaba.ext.xplat.sync – tˇrídyumožˇnujícísynchronizaci, superwaba.ext.xplat.unit – framework umožˇnujícívýtváˇrettestovací tˇrídy, podobný JUnitu, superwaba.ext.xplat.webservice – podpora webových služeb, superwaba.ext.xplat.zlib – podpora ZLib knihovny pro kompresi.

3.8 Unicode podpora

SuperWaba nabízí od verze 4.1 podporu kódování Unicode. V adresáˇri SuperWabaSDK/ lib/fonts najdeme následující fonty:

• *SW.pdb – základní fonty, které jsou použity implicitnˇepodle toho, na jakém zaˇrízení je virtuální stroj spuštˇen.Nezobrazují diakritiku.

• UFFChi_H.pdb a UFFChi_L.pdb – fonty ˇcínštiny.

• UFFJap_H.pdb a UFFJap_L.pdb – fonty japonštiny.

• UFFKor_H.pdb a UFFKor_L.pdb – fonty korejštiny.

• UFFunifont_H.pdb a UFFunifont_L.pdb – unifont, zobrazuje diakritiku, dle mého názoru ale nevzhledný a pro použití na mobilních zaˇrízeníchnevhodný.

Je možné použít jakýkoliv font v kódování Unicode, virtuální stroj ale pˇreˇctejen soubory typu pdb. Naštˇestíbyla pro tento úˇcelvytvoˇrenaknihovna UfoLib a program Fontizer, který slouží pro konverzi TTF font ˚una PDB fonty. (Zdroj [3]) Vytváˇrenífont ˚uv programech probíhá pomocí metody

Font.getFont(String jméno, boolean tucné,ˇ int velikost);

Pˇríkladvytvoˇrenífontu a nastavení pro celý program

Font f = Font.getFont("UFFArial", false, Font.NORMAL_SIZE); // Nastavení fontu v programu, musí být umístenoˇ v konstruktoru. MainWindow.defaultFont = f;

Soubor fontu musí být uložen v adresáˇri,kde je nainstalován virtuální stroj, vˇetšinouje to SuperWaba. Virtuální stroj navíc rozeznává rozlišení displeje a je tˇrebasi zde dát pozor na název souboru fontu. Pokud má zaˇrízenírozlišení 160x160 bod ˚u,potom je hledán font název_fontu_L.pdb, pokud má jiné rozlišení, je hledán soubor název_fontu_H.pdb. Takže v pˇrípadˇepˇredchozíhopˇríkladu,ve kterém je jméno fontu UFFArial, bude u zaˇrízení

25 3.9. UKÁZKOVÉ PROGRAMY s displejem 160x160 hledán soubor s názvem UFFArial_L.pdb, v ostatních pˇrípadechje to potom UFFArial_H.pdb. Pokud v našem programu používáme kódování Unicode, je tˇrebau kompilace nastavit parametr -encoding na UTF8. Pˇríkladkompilace souboru Hello.java: javac -target 1.1 -encoding UTF8 -source 1.3 Hello.java

3.9 Ukázkové programy

Bˇehempsaní bakaláˇrsképráce jsem vytvoˇrildva ukázkové programy. První se jmenuje Eng- lish Practise a druhý Screen Sample. English Practise je anglicko-ˇceskýslovník, který má na- víc funkci testování slovíˇcek.Program jsem testoval bˇehemmého asi dvoumˇesíˇcníhostudia angliˇctiny. Screen Sample je velmi jednoduchý program, ve kterém m ˚užemeovládat ikonku SuperWaby pomocí dotykové obrazovky a stylusu (v pˇrípadˇedesktopu pomocí myši). Oba programy byly testovány na operaˇcníchsystémech Windows XP a Windows Mobile 6.0. Korektní funkˇcnostje zajištˇenau zaˇrízeníchs displejem 240x320.

3.9.1 English Practise Program se skládá z tˇrídy EnglishPractise, která dˇedítˇrídu MainWindow. Tˇrídadˇe- dící MainWindow m ˚užebýt v Superwaba programu vždy jen jedna. V této tˇrídˇejsou další vnitˇrnítˇrídy, které reprezentují jednotlivé funkce - vkládání slovíˇcek,zkoušení (testování) slovíˇcek,vypsání slovíˇcek,hledání (pˇreklad)slovíˇcek,a také nastavení (nastavení vzhledu a podmnožiny slovíˇcek,ze které se pˇritestování bude vybírat). V hlavním oknˇejsou zob- razeny dva úvodní obrázky, jeden je název programu a druhý kniha (obr. C.1). Veškeré ovládání programu probíhá pˇresmenu (obr. C.2), které je pˇridánodo hlavní tˇrídy. Pokud uživatel vybere nˇekterou položku z menu, vytvoˇríse instance pˇríslušnévnitˇrnítˇrídy(tedy v pˇrípadˇe,pokud funkce ještˇenebyla volána a instance ještˇenebyla vytvoˇrena,v opaˇcném pˇrípadˇese jen zobrazí okno pˇríslušnétˇrídy).V programu je použitý look and feel styl Win- dows Vista a nastaven font na Arial (soubor UFFArial_H.pdb, pˇrípadnˇe UFFArial_L. pdb musí být nakopírován do adresáˇres virtuálním strojem). Pro ukládání slovíˇcekje po- užita tˇrída Catalog, kterou fyzicky reprezentuje soubor fileOfWords.pdb. Pˇripráci se tˇrídou Catalog se m ˚uževyskytnout chyba IOError. Tyto chyby jsou vˇetšinouzávažné a nemˇelyby se vyskytovat, protože naruší bˇehcelého programu. Pokud se vyskytne taková chyba, je oznámena uživateli, uložen záznam do souboru error.txt a program vypnut. Pro zaznamenávání chyb byl vytvoˇrenjednoduchý logger, který do již zmínˇenéhotextového souboru ukládá záznamy ve formátu: IOError;Trídaˇ v níž chyba vznikla;Metoda v níž chyba vznikla;Chybová hláška Menu aplikace se skládá z následujících položek: • Program/Pˇridatslovíˇcka– jednoduché okno reprezentující pˇridáváníslovíˇcekdo souboru. Pokud uživatel nevyplní žádné nebo jedno ze dvou polí, at’ už pro anglické

26 3.9. UKÁZKOVÉ PROGRAMY

slovíˇckoˇciˇceskýpˇreklad,je zobrazena chybová hláška formou tˇrídy MessageBox, která o této skuteˇcnostiinformuje. (obr. C.3)

• Program/Vyzkoušet slovíˇcka– zobrazí se okno, ve kterém je vytvoˇrenTab Panel se dvˇemazáložkami. První reprezentuje testování z ˇceštinydo angliˇctinya druhá tes- tování z angliˇctinydo ˇceštiny. Slovíˇckajsou náhodnˇevybírána ze souboru, pˇreklad musí být naprosto pˇresný,jak je uložen v souboru, protože porovnávání odpovˇedí se provádí pomocí metody equals() tˇrídy String. Pokud uživatel neví a klikne na tlaˇcítko„Opravit“ nebo odpoví špatnˇe,je zobrazena zpráva „ŠPATNE!“ˇ a v po- líˇcku,kam uživatel pˇrekladpsal, je zobrazena správná odpovˇed’ na urˇcitoudobu (implicitnˇeje nastavena na 500 ms, tuto dobu lze potom v nastavení mˇenit)a poté je náhodnˇevybráno další slovíˇcko.V pˇrípadˇe,že uživatel odpoví správnˇe,je zobra- zena zpráva „SPRÁVNE“ˇ a po uplynutí již zmínˇenédoby je zobrazeno další náhodné slovíˇckopro pˇreklad.(obr. C.4)

• Program/Vypsat slovíˇcka– funkce, která vypíše všechna slovíˇckado Gridu, což je tabulka, která má ale implementováno mnoho užiteˇcnýchfunkcí, napˇr.ˇrazenípodle jednotlivých sloupc ˚u,scrollbary, grafické rozlišení sudých a lichých ˇrádk˚u.Naˇcítání všech slovíˇcekje, alespoˇnu mnoha záznam ˚u,ˇcasovˇecelkem nároˇcné,proto jsem zde vložil ProgressBar, který reprezentuje fáze naˇcítání.Pˇrekreslování progressbaru jsem nastavil po pˇetinách- ˇciliaž se naˇctepˇetinaslovíˇcek,progressbar se pˇrekreslí, až se naˇctedruhá pˇetina,zase se pˇrekreslí a tak až do konce. V tomto oknˇejsem implementoval i funkci mazání slovíˇcek.Staˇcíoznaˇcitnˇejakýˇrádekv tabulce a pak kliknout na tlaˇcítko„Smazat“. Doplnil jsem zde informaˇcní Label s celkovým po- ˇctemslovíˇcek.(obr. C.5)

• Program/Hledat slovíˇcka– funkce slovníku, uživatel nastaví v jakém smˇeru se má hledat (pˇrekládat)slovíˇcko,zadá ho do pole a když je slovíˇckov souboru nalezeno, vypíše se do nˇekolikaˇrádkovéhopole (MultiEdit). (obr. C.6)

• Program/Konec – ukonˇcíse program

• Nastavení/Zkoušení slovíˇcek– v tomto oknˇeje možné nastavit podmnožinu slo- víˇcek,které budou testovány. Hranice intervalu jsou reprezentovány ID slovíˇcek. Pokud je vloženo 260 slovíˇcek,interval je [0 - 259]. Snažil jsem se ošetˇritvšechny nekorektní hranice interval ˚u,které by mohl uživatel zadat, jako napˇr.dolní interval menší než 0, vˇetšínež horní nebo vˇetšínež poˇcetvložených slovíˇcekapod. Výhodou je, že staˇcízadat jen jednu hranici intervalu, ta druhá se potom automaticky nastaví. Pokud tedy uživatel vloží dolní hranici intervalu a klikne na „Nastavit“, tak se horní hranice nastaví na maximální možnou (poˇcetslovíˇcek-1),pokud vloží jen horní hra- nici intervalu, dolní se nastaví na 0. Na konec okna jsem pˇridalinformativní Label, který obsahuje aktuálnˇenastavený interval zkoušených slovíˇcek.(obr. C.7)

• Nastavení/Nastavení programu – zde si m ˚užeuživatel nastavit dvˇevˇeci.První je

27 3.9. UKÁZKOVÉ PROGRAMY

pauza mezi zkoušenými slovíˇcky, respektive doba ˇcekáníu funkce „Vyzkoušet slo- víˇcka“po kliknutí na tlaˇcítko„Opravit“. Uživatel má také možnost nastavení vzhledu Gridu, respektive barvu lichých a sudých ˇrádk˚u.Staˇcíkliknout na tlaˇcítko„Výbˇer barvy“, zobrazí se box s barvama a uživatel si jednu z nich m ˚uževybrat. Tento vý- bˇerbarvy jsem vyˇrešilpomocí tˇríd ChoicesDialog, ComboBox a ColorList. (obr. C.8)

Ke všem komponentám v aplikaci jsem pˇridalnápovˇeduformou tˇrídy ToolTip, která se zobrazí po pˇridrženístylusu ˇcitlaˇcítkamyši nad komponentou. Instalace English Practise Na pˇríloženémCD (viz pˇríloha D) dávám k dispozici zdrojové a instalaˇcnísoubory k tomuto programu. Instalaˇcnísoubory automaticky program nainsta- lují do adresáˇres virtuálním strojem. Pro nˇekteréOS však instalaˇcnísoubory nejsou, a proto je nutné program nainstalovat ruˇcnˇe.Napˇríkladpro Windows 98 a vyšší je nutné adresáˇr s programem nakopírovat do adresáˇre,kde je nainstalovaný virtuální stroj. Navíc je nutné, aby název adresáˇre,ve kterém je program, byl stejný jako hlavní tˇrídaprogramu (v pˇrí- padˇetohoto programu je to EnglishPractise). Toto by mˇeloplatit pro všechny operaˇcní systémy. Na CD je také k dispozici soubor fileOfWords.pdb s asi 250-ti slovíˇcky. Ten je nutné nakopírovat do adresáˇres programem. Pokud tak neuˇcinímevytvoˇríse nový soubor, ve kterém však nebudou žádné slovíˇcka. V pˇrípadˇeoperaˇcníhosystému Windows XP to vypadá následovnˇe: virtuální stroj: C:\SuperWaba\ adresáˇrs programem: EnglishPractise soubory programu budou umístˇenyv adresáˇri: C:\SuperWaba\EnglishPractise\

3.9.2 Screen Sample

Program Screen Sample využívá knihovnu pro vývoj her superwaba.ext.xplat.game. Programy využívající tuto knihovnu nedˇedítˇrídu MainWindow jako ostatní programy, ale tˇrídu GameEngine, která je souˇcástí Game balíku. Tento balík obsahuje r ˚uznégrafické prvky jako Sprite, AnimatedSprite, tˇrídupro vytváˇreníanimací Animation, tˇrídureprezen- tující nejvyšší skóre HighScores ˇcinastavení Options (Zdroj [5]). Program Screen Sam- ple obsahuje jednu vnitˇrnítˇrídu,která dˇedítˇrídu Sprite a reprezentuje grafický prvek, v mém pˇrípadˇeobrázek SuperWaby, kterým m ˚užemepohybovat po obrazovce pomocí sty- lusu nebo kurzoru myši (obr. C.9). V programu jsem pˇrekrylnásledující metody:

• GameEngine.onPenDrag(PenEvent evt) ;

• GameEngine.onPenUp(PenEvent evt) ;

• GameEngine.onPenDown(PenEvent evt) ;

• GameEngine.onPaint(Graphics g) .

28 3.9. UKÁZKOVÉ PROGRAMY

Instalace Screen Sample Instalace je stejná jako v pˇrípadˇeprogramu English Practise. Na pˇríloženémCD (viz pˇríloha D) jsou k dispozici zdrojové a instalaˇcnísoubory tohoto pro- gramu. Adresáˇr,do kterého se v pˇrípadˇemanuální instalace musí program nainstalovat, se jmenuje ScreenSample. V pˇrípadˇeoperaˇcníhosystému Windows XP to vypadá následovnˇe: virtuální stroj: C:\SuperWaba\ adresáˇrs programem: ScreenSample soubory programu budou umístˇenyv adresáˇri: C:\SuperWaba\ScreenSample\

29 Kapitola 4 Porovnání platforem

V této kapitole porovnávám platformu SuperWaba s Java ME z hlediska možností pro vývoj aplikací, respektive dostupného API. Dále porovnávám výkonnost virtuálních stroj ˚unásle- dujících platforem: SuperWaba, Eve, NSIcom CrEme a IBM WebSphere Everyplace Micro Environment.

4.1 SuperWaba a Java Platform, Micro Edition

SuperWaba i JME jsou platformy, které nabízí dobré možnosti pro vývoj aplikací pro mobilní zaˇrízení.SuperWaba se zamˇeˇrujespíše na PDA a mobilní telefony s „otevˇreným“operaˇcním systémem, proto se dá spíše srovnávat s JME/CDC konfigurací, respektive s profilem PP. Vˇetšinatˇrídze SuperWaba API je hodnˇepodobná tˇemz CDC/PP, proto není problém pro programátory, kteˇrímají zkušenosti s programováním pro JME/CDC, pˇrejítna SuperWabu. Nˇekterérozdíly mezi SuperWaba a JME/CDC/PP:

• CDC/PP nabízí obsáhlejší knihovnu util, více kolekcí ,

• CDC/PP podporuje PKI ,

• CDC/PP nabízí podporu Xlet ˚u,

• CDC/PP nabízí podporu Java Beans ,

• CDC/PP podporuje RMI ,

• Java ME nabízí pˇrídavnouknihovnu Java TV API (samozˇrejmˇemusíme mít VM, který ji podporuje) ,

• Java ME nabízí silnˇejšínástroje pro tvorbu GUI ve formˇepˇrídavnéknihovny Swing 1.1.1 (podporuje napˇr.virtuální stroj NSIcom CrEme) ,

• SuperWaba nabízí knihovnu Game pro tvorbu jednoduchých her ,

• SuperWaba nabízí podporu GPS ,

• SuperWaba podporuje zaˇrízenítypu ˇcteˇckyˇcárových kód ˚uapod. ,

30 4.2. POROVNÁNÍ VIRTUÁLNÍCH STROJU˚

• SuperWaba nabízí podporu knihovny ZLib pro rychlejší kompresi ,

• SuperWaba nepodporuje Layout Manager, ale nabízí vlastní styl rozmíst’ování kom- ponent ,

• SuperWaba v Professional verzi nabízí databázi Litebase .

4.2 Porovnání virtuálních stroj ˚u

Pro porovnání virtuálních stroj ˚ujsem vytvoˇrilmatematický benchmark, který poˇcítáˇcíslo pí pomocí Bailey-Borwein-Plouffe algoritmu:

Testoval jsem následující virtuální stroje pro Pocket PC:

• SuperWaba VM ,

• Eve VM ,

• IBM J9 VM ,

• NSIcom CrEme VM .

Virtuální stroje byly nainstalovány a benchmark testován na zaˇrízeníAsus A696 následující konfigurace: Procesor Intel XScale 416 MHz. Operaˇcnípamˇet’ 64 MB RAM. Displej TFT LCD, 65 536 barev, 240x320 bod ˚u. Operaˇcnísystém MS Windows Mobile 6.0 CZ.

4.2.1 Implementace algoritmu Implementace algoritmu je u všech ˇctyˇrvirtuálních stroj ˚ustejná. Mírnˇese liší jen jednodu- ché GUI, pomocí kterého algoritmus spouštíme. Samotný kód algoritmu je ale oddˇelenod inicializace GUI. private int count = 2000; \\pocetˇ pr˚uchod˚ucyklem public double countPi() { double startTime = 0.0; double endTime = 0.0;

double pi = 0.0;

startTime = System.currentTimeMillis();

31 4.2. POROVNÁNÍ VIRTUÁLNÍCH STROJU˚

for (int i=0; i <= count; i++) { pi = pi + ( ((4.0/(8.0*i+1.0)) - (2.0/(8.0*i+4.0)) - (1.0/(8.0*i+5.0)) - (1.0/(8.0*i+6.0))) * (partOfCount(i)) ); }

endTime = System.currentTimeMillis();

return (endTime-startTime); }

public double partOfCount(int j) { double x=1; for (int k = 1; k <= j; k++) { x *= (1.0/16.0); } return x; } }

Bailey-Borwein-Plouffe algoritmus je výpoˇcetnekoneˇcnéˇrady, proto jsem musel horní hranici sumace omezit nˇejakýmpˇrirozeným ˇcíslem. Címˇ vyšší hranice horní sumace je na- stavena, tím pˇresnˇejšíje ˇcíslopí. Algoritmus probíhá následujícím zp ˚usobem:

i zjistíme aktuální ˇcasa uložíme do atributu startTime, v pˇrípadˇeSuperWaba VM po- mocí metody waba.sys.Vm.getTimeStamp(), u ostatních virtuálních stroj ˚upouži- jeme metodu System.currentTimeMillis(), obˇemetody vrací aktuální ˇcasv ms,

ii spustíme vlastní algoritmus, sumace je prezentována for cyklem, umocˇnováníposled- ního prvku z ˇradyje ˇrešenopomocí dalšího for cyklu ,

iii zjistíme aktuální ˇcasa uložíme do atributu endTime ,

iv vrátíme rozdíl atribut ˚u endTime a startTime, což je vlastnˇedoba trvání algoritmu .

4.2.2 Výsledky benchmarku Benchmarky byly testovány na zaˇrízeníAsus A696, jehož konfigurace je uvedena v podka- pitole 4.2. Poˇcetpr ˚uchod˚ucyklem, respektive horní hranice sumace byla nastavena na 1000 a 5000. U každého z pr ˚uchod˚ubylo spuštˇeno10 test ˚ua výsledky jsou uvedeny v ms. Z tabulek 4.1 a 4.2 je patrné, že nejlepších výsledk ˚udosahuje virtuální stroj NSIcom CrEme. V tˇesnémzávˇesuza ním je IBM J9 VM, pak následuje SuperWaba virtuální stroj a nejh ˚uˇredopadl virtuální stroj Eve. Pokud je v algoritmu nastaveno pouze 1000 pr ˚uchod˚u (tab. 4.1), SuperWaba a Eve dosahují pˇribližnˇestejných výsledk ˚u,pokud nastavíme 5000 pr ˚uchod˚u(tab. 4.2), rychlost virtuálního stroje se zvyšuje ve prospˇechSuperWaby. Podobný trend m ˚užemespozorovat když porovnáme virtuální stroj NSIcom CrEme s Eve. Pokud

32 4.2. POROVNÁNÍ VIRTUÁLNÍCH STROJU˚

Císloˇ testu SW VM IBM Eve VM CrEme VM J9 VM 1 533 264 1144 267 2 830 534 645 412 3 981 321 653 210 4 920 481 884 408 5 775 393 824 422 6 943 252 719 462 7 784 631 643 585 8 684 422 818 588 9 994 351 653 281 10 1010 665 909 545 Pr ˚umˇer 845 431 789 418

Tabulka 4.1: Výsledky benchmarku, nastaveno 1000 pr ˚uchod˚ucyklem, výsledky uvedeny v ms. nastavíme 1000 pr ˚uchod˚u,CrEme je asi 1,9x rychlejší než Eve, pokud nastavíme 5000 pr ˚u- chod ˚u,CrEme je už asi 3,3x rychlejší než Eve. S rostoucím poˇctempr ˚uchod˚use rozdíly mezi nejrychlejším a nejpomalejším strojem dále prohlubují.

33 4.2. POROVNÁNÍ VIRTUÁLNÍCH STROJU˚

Císloˇ testu SW VM IBM Eve VM CrEme VM J9 VM 1 11689 5130 14827 4428 2 12085 5135 15178 4518 3 12010 4955 14911 4429 4 12148 5128 14768 4445 5 12140 6032 14764 4491 6 11994 5112 14623 4655 7 11693 5154 14758 4429 8 12146 4962 14657 4502 9 11681 5789 14612 4729 10 12045 4990 14692 4564 Pr ˚umˇer 11963 5239 14779 4519

Tabulka 4.2: Výsledky benchmarku, nastaveno 5000 pr ˚uchod˚ucyklem, výsledky uvedeny v ms.

34 Kapitola 5 Závˇer

Ve své práci jsem se snažil zmapovat pomˇernˇenepˇrehlednousituaci na poli mobilních za- ˇrízeníz hlediska programování v jazyce Java. Sun se o tuto oblast pˇrílišnezajímá, a proto vzniklo nˇekolikJava platforem, které umožˇnují programátor ˚umvytváˇretaplikace pro tento segment zaˇrízení. Ctyˇrizˇ tˇechtoplatforem jsem ve své práci popsal. Samozˇrejmˇeexistuje i nˇekolikdalších, ale vˇetšinouje jejich vývoj bud’ zastavený, nebo je podpora ze strany au- tor ˚una špatné úrovni. Pro porovnání virtuálních stroj ˚ujsem vytvoˇriljednoduchý benchmark, který poˇcítáˇcíslo pí. Nejrychlejší stroje má platforma NSIcom CrEme a WebSphere Everyplace Micro Envi- ronment od IBM. Obˇetyto platformy jsou navíc plnˇekompatibilní s Java ME. Jejich menší nevýhoda je v tom, že jsou placené. Platformy SuperWaba a Eve na tom nejsou se svými virtuálními stroji z hlediska výkonu tak dobˇre,ale na druhou stranu jsou zdarma (v pˇrípadˇe SuperWaby jen verze Comunity) a klientská podpora je na velmi dobré úrovni. Pokud tedy programátor hledá platformu, která je plnˇekompatibilní s JME nebo má výkonné virtuální stroje, mˇelby se rozhodnout mezi NSIcom CrEme a WebSphere Everyplace Micro Environ- ment. V ostatních pˇrípadechm ˚užesáhnout po platformˇeSuperWaba nebo Eve, která má navíc velmi pˇeknˇeudˇelanépodp ˚urnéprogramy, které programátorovi usnadní práci.

35 Literatura

[1] Sun Microsystems, Inc.: Java ME Technology, 2006, . 2.1

[2] NSIcom: JSCP, . 2.4

[3] Erdmann: Welcome to ufolib hosted by SourceForge, 2002, . 3.8

[4] Ewesoft: Eve Application Development, . 2.3

[5] SuperWaba, Inc.: GameTutorial [pdf], SuperWaba SDK, . 3.9.2

[6] Mahmoud, Q.: Nauˇctese Java 2 Micro Edition, Grada Publishing, 2002, 80-247-0444-7, . 2.1.2.1

[7] Sun Microsystems, Inc.: cdc_hotspotds [pdf], . 2.1.1.4

[8] Sun Microsystems, Inc.: CLDC-HI_whitepaper-February_2005 [pdf], 2005, . 2.2

[9] SuperWaba, Inc.: SuperWaba Companion [pdf], SuperWaba SDK, . 3.1, 3.5.1, 3.5.2, B.1, B.2

[10] SuperWaba, Inc.: SuperWaba : The Real Power of Mobile Computing, . 3.2

[11] Sun Microsystems, Inc.: cdc_packages [pdf], . 2.1.1, 2.1.1.1, 2.1.1.2, 2.1.1.3

[12] Sun Microsystems, Inc.: Java ME Technology APIs & Docs, . 2.1.3

[13] IBM, Corp.: Using WebSphere Studio Device Developer to Build Embedded Java Applications, 2004, . 2.4

[14] IBM, Corp.: IBM - WebSphere Everyplace Micro Environment - System requi- rements, . 2.3.2

36 [15] IBM, Corp.: IBM - WebSphere Everyplace Custom Environment - System requi- rements, . 2.3.2

37 PˇrílohaA Manuální instalace SuperWaby

A.1 Palm OS

U operaˇcníhosystému Palm záleží na jeho verzi. Vytvoˇrímesi v zaˇrízeníadresáˇra nakopí- rujeme tam jednotlivé soubory. D ˚uležitéjsou následující tˇrisoubory: • SuperWaba.prc – virtuální stroj , • SWNatives.prc – nativní metody , • SuperWaba.pdb – tˇrídyWaba API . Soubory SuperWaba.prc a SWNatives.prc se nachází v adresáˇri SuperWabaSDK/lib/ vm/palm, ve kterém jsou dále rozˇclenˇenydo adresáˇr˚upodle toho, jakou verzí OS disponuje naše zaˇrízení. Palm OS < 5 Potˇrebnésoubory najdeme v adresáˇri 68k/PalmOS3_or_4_with_8bits_ screen. Palm OS >= 5 Pokud nebudeme používat knihovny jako DB2e, IrPrint nebo PrintBoy, je lepší nahrát ARM virtuální stroj, který se nachází v adresáˇri arm/PalmOS5 a který je asi 20x rychlejší než virtuální stroj typu 68k. V ostatních pˇrípadechsi rozlišíme ještˇedvˇemož- nosti. Pokud používáme Palm OS >= 5-ti nebo 16-ti bitový Palm OS 4.1, zkopírujeme si sou- bory z adresáˇre 68k/PalmOS5_or_4_with_16bits_screen. Pokud používáme ještˇeji- nou verzi Palm OS, m ˚užemepoužít soubory z adresáˇre 68k/PalmOS5_AvoidAutoReset. Soubor SuperWaba.pdb je pro všechny verze operaˇcníhosystému Palm stejný. Na- jdeme ho v adresáˇri SuperWabaSDK/lib/vm/xplat. Pokud budeme ve svých programech používat tˇrídyze SuperWaba API, je nutné ještˇe zkopírovat soubory typu XPlat*.pdb, které nalezneme v adresáˇri SuperWabaSDK/lib/ vm/xplat.

A.2 Windows CE

Na zaˇrízenís tímto operaˇcnímsystémem si vytvoˇrímeadresáˇr /SuperWaba, do kterého nakopírujeme následující soubory: • SuperWaba.exe – virtuální stroj, nalezneme v adresáˇri SuperWabaSDK/lib/vm/ ce, kde je nˇekoliktˇechtosoubor ˚ulišících se podle toho, pro jaký typ (HPC2000, HPC211, PocketPC, PPC211) nebo druh procesoru (ARM, SH3, MIPS) je urˇcen.

38 A.3. SYMBIAN OS

• SDL.dll a SDL_net.dll – tyto knihovny jsou potˇrebapro bˇeh virtuálního stroje, najdeme je ve stejném adresáˇrijak VM.

• SuperWaba.pdb – tˇrídyAPI, soubor nalezneme v adresáˇri SuperWabaSDK/lib/ vm/xplat.

• MSW.pdb nebo LSW.pdb nebo HSW.pdb – základní font, který je nutné mít nain- stalovaný, i když budeme potom používat nˇejakývlastní. Doporuˇcenýje MSW.pdb a najdeme jej v adresáˇri SuperWabaSDK/lib/fonts.

Pokud budeme ve svých programech používat tˇrídyze SuperWaba API, je nutné ještˇezko- pírovat soubory typu XPlat*.pdb, které nalezneme v adresáˇri SuperWabaSDK/lib/vm/ xplat.

A.3 Symbian OS

Jediný zp ˚usobjak instalovat na operaˇcnísystém Symbian je použít instalaˇcnísoubor for- mátu SIS (Symbian Installation System), takže pro instalaci SuperWaby spustíme soubor SuperWaba.sis, který v nˇekolikaverzích nalezneme v adresáˇri SuperWabaSDK/bin/ installers/vm/symbian. Jsou podporovány následující série operaˇcníhosystému Sym- bian:

• S60 – nalezneme v adresáˇri s60 ,

• S80 – nalezneme v adresáˇri s80 ,

• S60 3. edice – nalezneme v adresáˇri s60v3 .

A.4 Windows 98 a vyšší

Instalace probíhá následovnˇe:

• Vytvoˇrímeadresáˇr c:\SuperWaba ,

• pˇrekopírujeme do nˇejsoubory SDL.dll, SDL_net.dll a SuperWaba.exe, které nalezneme v adresáˇri SuperWabaSDK\lib\vm\win32 ,

• nakonec sem pˇrekopírujeme jeden z font ˚u 5SW.pdb nebo MSW.pdb, které najdeme v adresáˇri SuperWabaSDK\lib\fonts .

Pokud budeme ve svých programech používat tˇrídyze SuperWaba API, je nutné ještˇezko- pírovat soubory typu XPlat*.pdb, které nalezneme v adresáˇri SuperWabaSDK/lib/vm/ xplat.

39 A.5. GNU/LINUX

A.5 GNU/Linux

K dispozici máme dva instalaˇcníbalíky, které se liší podle toho, pro jakou distribuci jsou urˇceny. Jsou to tyto balíky:

• RPM (Redhat Package Manager) – instalaˇcníbalík superwaba-5.0.0-2.i386. rpm, který je urˇcenýpro distribuci Redhat nalezneme v adresáˇri SuperWabaSDK/ bin/installers/vm/linux.

• DEB (Debian) – instalaˇcníbalík superwaba-5.0.0-3.i386.deb urˇcenýpro dis- tribuci Debian nalezneme v adresáˇri SuperWabaSDK/bin/installers/vm/linux.

40 PˇrílohaB Komponenty GUI

B.1 waba.ui.PushButtonGroup

Obrázek B.1: PushButtonGroup (Zdroj [9])

B.2 waba.ui.Grid

Obrázek B.2: Grid (Zdroj [9])

41 PˇrílohaC Obrázky z ukázkových program ˚u

C.1 English Practise a Screen Sample

Obrázek C.1: English Practise – hlavní okno aplikace

42 C.1. ENGLISH PRACTISE A SCREEN SAMPLE

Obrázek C.2: English Practise – menu aplikace

Obrázek C.3: English Practise – funkce Program/Pˇridatslovíˇcka

43 C.1. ENGLISH PRACTISE A SCREEN SAMPLE

Obrázek C.4: English Practise – funkce Program/Vyzkoušet slovíˇcka

Obrázek C.5: English Practise – funkce Program/Vypsat slovíˇcka

44 C.1. ENGLISH PRACTISE A SCREEN SAMPLE

Obrázek C.6: English Practise – funkce Program/Hledat slovíˇcka

Obrázek C.7: English Practise – funkce Nastavení/Zkoušení slovíˇcek

45 C.1. ENGLISH PRACTISE A SCREEN SAMPLE

Obrázek C.8: English Practise – funkce Nastavení/Nastavení programu

Obrázek C.9: Screen Sample – ovládání ikonky po obrazovce

46 PˇrílohaD Obsah pˇriloženéhoCD

Souˇcástítéto práce je CD s následujícími adresáˇri:

• Bakalarska prace – obsahuje obrázky použité v této práci a tuto práci ve formátu XML, PDF a TEX .

• Dulezite soubory – zde najdeme soubory font ˚u UFFArial_H.pdb, UFFArial_ L.pdb a soubor s asi 250-ti slovíˇcky fileOfWords.pdb .

• Instalacni soubory – v tomto adresáˇrinajdeme instalaˇcnísoubory program ˚u English Practise a Screen Sample .

• Odkazy – zde najdeme pouze jeden soubor názvu odkazy.txt, který obsahuje linky ke stažení jednotlivých platforem a virtuálních stroj ˚u.Vˇetšinaz nich vyžaduje bezplatnou registraci .

• Zdrojove kody – tento adresáˇrobsahuje zdrojové kódy program ˚uEnglish Practise, Screen Sample a benchmarku .

47