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