O vývoji a využití Java ME aplikací již bylo napsáno mnoho, pojďme se ale podívat na vývojový nástroj takovýchto aplikací: Sun JavaTM Wireless Toolkit 2.5.2 for CLDC, dále už jen Wireless Toolkit, který byl představen veřejnosti 4. října ve verzi pro Windows i Linux.

Wireless Toolkit je volně stažitelná aplikace z webu společnosti Sun Microsystems obsahující sadu nástrojů a technologií pro vývoj aplikací určených pro mobilní zařízení, v největší míře pak pro mobilní telefony.

Nejprve si v rychlosti představíme technologie a API (Application Programming Interface), kterých můžeme využívat při vývoji mobilních aplikací a po té si zkusíme spustit nějaká dema se kterými si ukážeme i některé nástroje usnadňují vývoj mobilních aplikací.

Podporované technologie

Wireless Toolkit podporuje mnoho standardních API definovaných Java Community ProcessTM programem:

Connected Limited Device Configuration (JSR 139 – CLDC 1.1)

Tato konfigurace byla speciálně navržena tak, aby splňovala požadavky Java platformy, která běží na zařízeních s omezenou pamětí, výkonem procesoru a grafikou. Obsahuje knihovny podobné těm jaké známe ze standardní Javy doplněné o knihovnu specifickou pro Javu ME:

  • java.io
  • java.lang
  • java.util
  • javax.microedition.io

Mobile Information Device Profile (JSR 118 – MIDP 2.1)

Java ME platforma dále specifikuje nad různými konfiguracemi ještě různé profily, které definují API vyšší úrovně, například uživatelská rozhraní. Velmi rozšířená je kombinace CLDC a MIDP, jak je tomu i v našem případě. Tato kombinace poskytuje kompletní prostředí pro Java aplikace určené pro mobilní telefony a další zařízení s podobnými schopnostmi.

PDA Optional Packages for the J2ME Platform (JSR 75 – PIM & File)

Tato technologie v sobě zahrnuje dvě nezávislé knihovny:

  • FileConnection umožňující aplikaci přístup do lokálního souborového systému daného zařízení
  • Personal Information Management (PIM) umožňující práci s kontakty v adresáři, kalendářem a seznamem úkolů

Java APIs for Bluetooth (JSR 82 – Bluetooth & OBEX)

Emulátor ve Wireless Toolkitu také podporuje Java API pro Bluetooth verze 1.1 obsahující dvě na sobě nezávislé knihovny:

  • Bluetooth API umožňuje spojení přes Bluetooth včetně vyhledání zařízení a výměny dat
  • Objekt Exchange (OBEX) API umožňuje aplikacím využívat protokol pro výměnu objektů přes Bluetooth a další komunikační kanály

Mobile Media API (JSR 135 – MMAPI 1.1)

Tato technologie poskytuje standardní rozhraní pro renderování a zachytávání audia a videa. API je navrženo tak aby bylo flexibilní vzhledem k různým formátům multimédií, protokolům a vlastnostem různých zařízení.

J2ME Web Services Specification (JSR 172 – Web Services)

Web Services API je určeno pro přístup k webovým službám z mobilních aplikací. Zahrnuto je rovnež jednoduché API pro zpracování XML dokumentů.

 

Security and Trust Services API for Java ME (JSR 177 – SATSA)

API poskytuje aplikaci přístup na tzv. „chytré karty“ (Smart Cards) a dále pak kryptografické funkce. Specifikace SATSA definuje čtyři rozdílné knihovny:

  • SATSA-APDU – umožňuje aplikaci komunikovat s chytrými kartami za využití nízkoúrovňového protokolu
  • SATSA-JCRMI – poskytuje alternativní metodu pro komunikaci s chytrými kartami využívající techniky vzdáleného volání metod
  • SATSA-PKI – umožňuje aplikaci využívat chytré karty pro elektronické podepisování dat a správu uživatelských certifikátů
  • SATSA-CRYPTO – rozhraní pro kryptografii s širokým využitím
Location API for Java ME (JSR 179 – Location)

Umožňuje aplikaci využívat informace o poloze zařízení jako jsou například informace z GPS modulu nebo informace přijímané z mobilní sítě. Toto API poskytuje standardní rozhraní pro přístup k informacím o poloze bez ohledu na technologii jaká byla využita pro jejich získání.

 

SIP API for Java ME (JSR 180 – SIP)

Session Initiation Protokol (SIP) poskytuje aplikaci schopnosti sestavení komunikace, kde si aplikace sama rozhodne o jaký typ kumunikace půjde, například chat, ať už textový nebo hlasový, instant messaging, videokonference a další.

 

Mobile 3D Graphics API for J2ME (JSR 184 – M3G)

Specifikace definuje rozhraní, které umožňuje pracovat s 3D grafikou jak na nízké tak na vysoké úrovni.

 

Wireless Messaging API (JSR 205 – WMA 2.0)

Wireless Toolkit samozřejmě také nabízí simulované prostředí umožňující aplikacím zasílat a přijímat zprávy jakými jsou SMS, CBS (Cell Broadcast Service) a také MMS.

 

Content Handler API (JSR 211 – CHAPI)

CHAPI umožňuje aplikaci spustit jakoukoliv zaregistrovanou aplikaci na základě URL, typu obsahu a nebo na základě content handler ID.

 

Scalable 2D Vector Graphics API for J2ME (JSR 226 – SVG)

Tato technologie umožňuje nahrávání, manipulování, renderování a přehrávání interaktivního 2D obsahu, který využívá XML gramatiky.

 

Payment API (JSR 229 – Payment)

Pomocí tohoto rozharní je možné provádět platby z mobilní aplikace. Podle dostupných adaptérů v implementaci je možné provádět platby různými kanály. Wireless Toolkit podporuje SMS adaptér pro placení pomocí SMS zpráv a testovací adaptér pro kreditní karty.

 

Advanced Multimedia Supplements (JSR 234 – AMMS)

Toto je nadstavba Mobile Media API (JSR 135) která rozšiřuje původní multimédia o různé efekny, přístup ke kameře, rádiu, RDS a podobně.

 

Mobile Internationalization API (JSR 238 – MIA)

Tato technologie je předurčena pro aplikace které mají být zobrazeny v různých jazycích a používány v různých zemích

 

Java Binding for OpenGL® ES API (JSR 239 - OpenGL® ES)

Jak uz název sám napovídá, tato techmologie poskytuje Java rozhraní pro grafiku OpenGL ES.

 

Java Technology for the Wireless Industry (JSR 185 – JTWI 1.0)

Architektura sdružující CLDC, MIDP 2.0, WMA 1.1 a MMAPI technologie.

 

Mobile Service Architecture (JSR 248 – MSA 1.0)

Nástupce předchozí architektury JTWI jež sdružuje téměř všechny zde uvedené technologie mimo SATSA-JCRMI a OpenGL ES. Tuto architekturu začínají stále více podporovat současné mobilní telefony.

Přesné specifikace těchto technologií lze nalézt zde

 

Jak použít a testovat podporovaná API?

Jsou podporovaná rozhraní na první pohled složitá? Wireless Toolkit obsahuje pro každé API minimálně jeden ukázkový příklad se zdrojovými kódy, ať už jednoduchý nebo složitější. Wireless Toolkit také integruje obecné nástroje usnadňující vývoj a testování aplikací jako například Network Monitor, Memory Monitor a Profiler. Dále jsou také integrovány specifické nástroje pro určitá API. Pojďme si tedy nějaká dema vyzkoušet a také ukázat jak pracují některé podpůrné nástroje.

Po nainstalování Wireless Toolkitu jej spustíme z nabídky Start ve Windows a nebo z adresáře kam byl Toolkit nainstalován příkazem bin\ktoolbar.exe pro Windows a nebo bin/ktoolbar pro Linux. Pokud vše proběhlo v pořádku, měli bychom vidět okno jako na obrázku č.1.

Obr. 1 – Wireless Toolkit
Obr. 1 – Wireless Toolkit

 

Začněme třeba atraktivní grafikou demonstrující použití SVG API. Ve Wireless Toolkitu stiskněme tlačítko 'Open Project' a v seznamu všech dostupných příkladů vybereme 'SVGDemo'. Nyní už jen stačí stisknout tlačítko 'Run' pro spuštění emulátoru, v seznamu MIDletů vybrat například 'Play SVG Animation' a stisknout 'Launch' pro spuštění SVG animace. Na displeji emulátoru bychom měli vidět animaci jejíž část je na následujícím obrázku č.2.

Obr. 2 - Emulátor
Obr. 2 - Emulátor

 

Po prozkoumání dalších MIDletů v aplikaci 'SVGDemo' zavřeme emulátor a vyzkoušíme si určité monitorování aplikace. Bude potřeba otevřít 'Preferences' v menu Wireless Toolkitu 'Edit -> Preferences', podívat se na položku 'Monitor', zde zvolit položky 'Enable Memory Monitor' a 'Enable Profiling' jak je tomu na obrázku č. 3 a stisknout 'Ok'.

Obr. 3 - Preferences
Obr. 3 - Preferences

 

Nyní opět spustíme emulátor se kterým se otevře také okno 'Memory Monitoru' (obr. 4), necháme proběhnout libovolný MIDlet ze seznamu a zavřeme okno emulátoru. V tuto chvíli se otevře okno 'Profileru' (obr. 5).

Obr.4 – Memory Monitor
Obr.4 – Memory Monitor

 

Obr.5 - Profiler
Obr.5 - Profiler

 

Nyní v 'Preferences' vypneme 'Memory Monitor' a 'Profiler' a otevřeme další projekt, tentokrát 'CityGuide'. Tato aplikace demonstruje použití Location API (JSR 179) a využívá některá, z bezpečnostních důvodů, omezená API. Abychom těmto omezením zabránili, aplikaci elektronicky podepíšeme tak, že otevřeme podepisovací nástroj v menu Toolkitu 'Project->Sign' a zobrazí se okno jako je na následujícím obrázku č.6.

Obr. 6 – Podepisování aplikací
Obr. 6 – Podepisování aplikací

 

Zde vybereme alias 'trustedkey', stiskneme tlačítko se zelaným trojúhelníčkem, získáme potvrzení o podepsání aplikace a nástroj můžeme zavřít.
Aplikace 'CityGuide' se nebude spouštět tlačítkem 'Run' neboť tento režim slouží pouze pro rychlé otestování aplikace po zkompilování a není využito všech schopností emulátoru. Spustíme tedy aplikaci v plnohodnotném režimu v menu Wireless Toolkitu 'Project->Run via OTA' a po spustění emulátoru je potřeba ještě aplikaci na emulátor nainstalovat. Na displeji vybereme 'Apps', položku 'Install Application' a 'Menu->Launch', dále 'Menu->Go', po té dvakrát 'Install' a nakonec 'OK' pro spuštění aplikace a 'Next'. Na displeji se zobrazí statická mapa jako na následujícím obrázku č. 7.

Obr 7. - CityGuide
Obr 7. - CityGuide

 

Wireless Toolkit pouze simuluje získávání informací o poloze a tuto simulaci můžeme zapnout v External Event Generátoru v menu emulátoru 'MIDlet->External Events'.

Obr 8. - External Event Generátor
Obr 8. - External Event Generátor

 

V tomto okně stiskneme tlačítko 'Browse', vybereme soubor 'citywalk.xml' v adresáři 'CityGuide', stiskneme tlačítko 'Start' (se zeleným trojúhelníčkem) a panáček na displeji emulátoru se začne pohybovat. Následně okno emulátoru zavřeme.
Na závěr si ukážeme nastavení mobilní aplikace, použití 'Network Monitoru' a dalších nástrojů specifických pro Payment API na jednoduché hře 'JBricks'.
V 'Preferences' zapneme 'Network Monitor' podobně jako v předchozím případe na obrázku č. 3 a dále v 'Preferences' otevřeme položku 'Payment', do políčka 'Mobile Country Code' zapíšeme číslo 928 a do 'Mobile Network Code' číslo 99 pro umožnění zasílání plateb přes SMS. Okno 'Preferences' můžeme zavřít a otevřeme 'Payment Service Provider Konzoli' pro monitorování plateb v menu Wireless Toolkitu 'File->Utilities->Payment Console' a ujistíme se že tato konsole používá číslo +5550000.
Dále otevřeme projekt 'JBricks' a hned po té prozkoumáme jeho atributy stisknutím tlačítka 'Settings' kde můžeme vidět různá nastavení mobilní aplikace podobne jako na následujícím obrázku č. 9

Obr. 9 – Nastavení atributů aplikace
Obr. 9 – Nastavení atributů aplikace

 

Okno 'Settings' zavřeme, projekt 'JBricks' spustíme pomocí 'Run via OTA', nainstalujeme a spustíme podobně jak tomu bylo v případě aplikace 'CityGuide'. Při startu emulátoru by se nám již měl zobrazit 'Network Monitor' ve kterém můžeme pozorovat http komunikaci již při instalaci aplikace.
Když již máme hru spuštěnou, můžeme ji prozkoumat a zjistíme že máme k dispozici dva životy a jeden level. Pojďme si tedy zkusit dokoupit další život. Ještě než tak provedeme, zapneme další monitor provedených transakcí na straně klienta v menu emulátoru 'MIDlet->External Events', klikneme na záložku 'Payment Transactions' a nyní již můžeme nakupovat. V menu aplikace vybereme 'Buy Life->Buy Single Life' a dostáváme se na platební formulář jako na obrázku č.10. Ujistíme se že pro platbu využíváme kanál 'Premium Priced SMS - Sonera' a stiskneme 'Yes'. Měli bychom vidět oznámení že transakce proběhla úspěšně a transakci bychom měli být schopní zpozorovat i v 'Payment Service Provider Konzoli' (obr. 14), v 'Netwotk Monitoru' (obr. 13) na záložce 'SMS/CBS' i v 'External Event Generátoru' (obr. 12) po stisknutí tlačítka 'Refresh'. Přímo v aplikaci pak můžeme zpozorovat že již máme k dispozici tři životy.
Vyzkoušejme také platbu kreditní kartou. V tomto případě se pokusíme nakoupit levely, v menu aplikace vybereme 'Buy Level -> Buy 3 levels for reduced price' a dostáváme se opět k platebnímu formuláři (obr. 10) kde tentokrát v položce 'Pay by' vybereme 'Credit Card Adapter – Visa' a stiskneme 'Yes' čímž se dostaneme na další formulář kde vyplníme požadované informace jako např. na následujícím obrázku č. 11 a stiskneme 'Purchase'. Pozor na kontrolu některých polí, například číslo Visa karty musí být zadáno ve správném formátu (musí začínat číslicí 4, musí obsahovat 13 nebo 16 číslic a nesmí končit číslicí 0).

Obr. 10 – Platební formulář Obr. 11 – Informační formulář kreditní karty
Obr. 10 – Platební formulář
Obr. 11 – Formulář kreditní karty

 

Opět bychom měli obdržet potvrzení že transakce proběhla v pořádku a opět můžeme pozorovat změny na jednotlivých monitorech jako na následujících obrázcích.

Obr. 12 – Transakce monitorované na straně klienta
Obr. 12 – Transakce monitorované na straně klienta

 

Obr. 13 – Network Monitor
Obr. 13 – Network Monitor

 

Obr. 14 – Monitorovací konzole transakcí na straně serveru
Obr. 14 – Monitorovací konzole transakcí na straně serveru

 

Tímto bych představení Wireless Toolkitu uzavřel a těším se na připomínky, doporučení a náměty v diskuzi pod článkem a nebo v angličtině na adrese wtk-comments(zavináč)sun.com. Ještě bych doplnil že zde uvedené informace a ještě mhohem více lze nalézt v dokumentaci Wireless Toolkitu v adresáři 'doc'.

Reference:

Domovské stránky Wireless Toolkitu: http://java.sun.com/products/sjwtoolkit
Přehled všech možných Java specifikací: http://jcp.org
Informace o Java ME: http://java.sun.com/javame
Open Source Java ME projekty: http://www.mobileandembedded.org