Výsledky výzkumu a další informace nejen
z oblasti přístupových telekomunikačních sítí.
Access server ISSN 1214-9675
Server vznikl za podpory Grantové agentury ČR.
15. ročník
Dnešní datum: 19. 09. 2017  Hlavní stránka | Seznam rubrik | Ke stažení | Odkazy  

Doporučujeme
Knihu o FTTx

Matlab server - on-line výpočty a simulace

E-learning - on-line kurzy

Trainingpoint - školení z oblasti TELCO a ICT

Kontakt
KTT FEL ČVUT
Napište nám

Redakční rada - pokyny pro autory a recenzenty

Copyright

Mobilní sítě

* Specifika vývoje aplikací pro mobilní terminály v jazyce Java

Vydáno dne 02. 05. 2006 (5829 přečtení)

Vývoj aplikací pro mobilní telefony byl velice náročný až do roku 2000, kdy společnost Sun Microsystems přišla s dlouho očekávanou verzí jazyka Java pro mobilní terminály.


Development of Java application for mobile phones
Abstract
Development of application for mobile phones was very demanding till the year 2000, when Sun Microsystems company has released long expected version of Java language for mobile terminal.


Vývoj aplikací pro mobilní telefony byl do nedávné doby velice náročný. Jediný možný způsob spočíval v úpravě firmware přístroje. Tato praxe byla ovšem velice složitá a pro malé organizace či dokonce jednotlivce téměř nemyslitelná, neboť podpora výrobce těchto přístrojů je buď velice nákladná, nebo neexistuje. Navíc v případě „neautorizovaných“ úprav autor v drtivé většině případů porušuje zákon. Tato praxe doznala změn v roce 2000, kdy společnost Sun Microsystems přišla s dlouho očekávanou novinkou – verzí jazyka Java pro mobilní terminály, Java ME™.

Základní informace o jazyku Java

Jazyk Java se skládá ze tří komponent:

  • Programovací jazyk Java a jeho syntaxe,
  • Java Virtual Machine,
  • aplikační programovací rozhraní Javy – API.

Všechny programy napsané v jazyce Java se nejdříve "zkompilují" na bitové instrukce, strojový kód. Tento kód lze spustit na zařízení Java Virtual Machine (JVM). Protože instrukce standardních procesorů nejsou kompatibilní s instrukcemi JVM, je nutno na každé zařízení nainstalovat interpreter, který tyto instrukce přeloží do strojového kódu konkrétního procesoru. To se děje automaticky ve chvíli, kdy je program Javy spuštěn.

Tedy po napsání programu program.java je kód Javy zkompilován do strojového kódu JVM. Vzniká soubor program.class. Toto je třeba udělat pouze jedenkrát. Při spouštění programu se strojový kód JVM v souboru program.class převede do strojového kódu konkrétního procesoru. Toto probíhá při každém spuštění. Program zkompilovaný na jednom zařízení lze bez problémů spustit na jakémkoliv jiném, na kterém běží stejná JVM. Díky tomu vyniká Java tak snadnou přenositelností mezi různými platformami, neboť stačí vytvořit JVM, aplikace se prakticky nemění.

Java API je soubor komponent, sdružených do knihoven, které jsou standardní ve všech implementacích Javy.

Java ME™

Jazyk Java™ byl původně navržen pro použití na malých zařízeních, ve spotřební elektronice, jako jsou televizory, videa, audio soupravy apod. Ale během svého vývoje více a více směřoval k užití na desktopových systémech. Aplikace obvykle potřebují ke svému běhu velké množství knihoven. Jejich počet se stále rozšiřuje a dále se přizpůsobují potřebám serverových aplikací. Tento vývoj je zajisté dobrý, ale Java™ tímto přestala být vhodnou pro použití v „malých“ zařízeních s omezenými zdroji. Proto byl v roce 1998 ve firmě Sun Microsystems zahájen vývoj nové verze, určené pro „velice malá“ zařízení se silně omezenými zdroji. Tyto přístroje mají často jen několik desítek až stovek kB paměti. Vznikla specifikace jazyka označovaného jako Java ME™ (Java Mobile Edition, dříve taky označována Java2ME™). Ten je kombinací technologií a specifikací takových, aby je bylo možno zkombinovat pro vytvoření systému, který přesně odpovídá cílené platformě. Jak už napovídá samotný název, jedná se o systém zaměřený hlavně na mobilní zařízení, která se, jak již bylo řečeno, svým výkonem ani dalším hardwarovým vybavením nemůže rovnat klasickým stolním počítačům.

Java_01

Obr. 1 Schéma komponent jazyka Java ME

Konfigurace CDC, CLDC

Konfigurace definuje JVM a soubor základních knihoven a aplikačního rozhraní pro zařízení s obdobnými hardwarovými dispozicemi. Těmi může být třeba velikost operační paměti, programové paměti, rozlišení displeje atd. V současné době existují dva profily, CDC (Connected Device Configuration) a CLDC (Connected Limited Device Configuration). První z nich, CDC, je zaměřena na relativně výkonná zařízení se 32-bitovými procesory s pamětí RAM i ROM o velikosti v řádu megabajtů. CLDC, jak už napovídá název, je zaměřena na zařízení, která jsou z hlediska systémových prostředků ještě více omezená. Minimální požadavky na hardware jsou dány jen velikostí paměti, která je k dispozici pro JVM a knihovny CLDC, a to na 128kB ROM a 32kB RAM.

Profily, MIDP

Profily doplňují konfiguraci specifikací dalších knihoven a přidávají další API (Aplikační Programovací Rozhraní), která přesněji specifikují uživatelské rozhraní, ukládání uživatelských dat, přístup ke specifickým zdrojům zařízení a podobně. Nejběžnějším příkladem je profil MIDP (Mobile Information Device profile), který je určen pro mobilní telefony a další velice podobná zařízení.

V současné profily době existují verze MIDP 1.0 a MIDP 2.0. Verze 1.0 je implementována ve většině starších mobilních zařízení, zatímco verze 2.0 se začala ve větší míře objevovat relativně nedávno, cca před dvěma lety. Oproti své starší verzi umožňuje MIDP 2.0 větší velikosti pamětí, podporuje mnohem lepší práci s grafickým rozhraním a s vysokoúrovňovým API. Má ale také mnohem více metod pro podporu low level API, což je implementováno hlavně kvůli hernímu průmyslu, který se prochází velkým boomem i v mobilních aplikacích. To je dále podpořeno možností přehrávání wav souborů s modulací PCM a rozšířenou prací s multimédii vůbec.

Za povšimnutí stojí fakt, že vývoje profilu verze 1.0 se zúčastnilo z celkem 22 telekomunikačních společností, u verze 2.0 již těchto subjektů bylo 49, včetně Evropských operátorů jako jsou Orange a Vodafone.

Základní požadavky na hardware a jeho vlastnosti

V posledních třiceti letech se výkon mikroprocesorů zdvojnásobí každý jeden až dva roky. Díky tomu je možno vytvářet stále náročnější a složitější aplikace. Pokud na nějaký úkol hardware zatím nestačí, stačí jednoduše vyčkat několik let a je zaručeno, že potřebný výkon bude časem k dispozici. Bohužel, co platí ve světě stolních počítačů, to již není zcela pravdou v odvětví mobilních zařízení. Přestože i zde stoupá výkon procesorů, velké množství těchto zařízení je stále silně limitováno dostupnou pamětí i výpočetním výkonem. Není příliš pravděpodobné, že bychom se v příštích letech dočkali, u běžných přístrojů, v tomto směru nějakých výrazných změn, a to z následujících důvodů:

  • Napájení z baterie – Většina cílových zařízení je napájena z baterií. Zde se nějakých převratných změn dočkáme jen stěží, tento segment prochází jen pomalým vývojem. Větší množství operační paměti i výkonnější procesory vyžadují velké množství energie. U mobilních telefonů existuje snaha prodloužit či alespoň nezkracovat možnou pohotovostní dobu. Je tedy nepravděpodobné, že by došlo k nějakému prudkému nárůstu výkonu.

  • Velkosériová výroba – Výroba ve obrovských sériích sice snižuje výrobní náklady, ale také prodejní cena je díky velké konkurenci silně tlačena dolů. To nutí výrobce k dosažení co nejnižších nákladů a i k minimálním úsporám na jednom vyrobeném kusu, neboť i ty se v konečném součtu mohou velice významně projevit. Proto nelze předpokládat, že by výrobci zaváděli na trh podstatně výkonnější modely, pokud nebudou zákazníci ochotni za ně dostatečně zaplatit. Většinu zákazníků však výkonnost mobilních zařízení nezajímá, plně jim postačí, pokud bez problémů zvládají funkci, pro kterou byly vytvořeny.

  • Specializace zařízení – Tato zařízení jsou obvykle, oproti desktopovým systémům, velice specializovaná. Mobilní telefony slouží převážně k hlasové komunikaci a posílání zpráv, pagery jen k posílání zpráv, digitální fotoaparáty a kamery k zachycování obrazu, atd. Tato zařízení tedy již ze své samé podstaty potřebují k činnosti podstatně menší množství paměti i výkonu. Je velice nepravděpodobné, že by výrobci zlepšovali tyto parametry více, než je třeba k jejich bezchybné funkci a dostatečně komfortnímu ovládání.

U osobního počítače je možno velice jednoduše zajistit minimální výkon potřebný k práci programu. Pokud hardwarové požadavky nejsou nijak zvlášť velké, s určitou pravděpodobností jim bude téměř každý, dnes běžně používaný počítač, vyhovovat. Takovéto generalizace však nemůžeme dosáhnout u mobilních zařízení. Každé je vytvořeno pro specifickou úlohu a je zákazníky poměřováno hlavně podle toho, jak právě ji dokáže zvládnout. Proto existují zásadní rozdíly, které musíme brát v potaz:

  • Malá velikost obrazovky. Většina těchto zařízení má miniaturní obrazovky. Některé dokonce nemají žádné. V tomto směru pravděpodobně nedojde v budoucnu k zásadním změnám, neboť dosažení co nejmenších rozměrů je u velkého počtu těchto zařízení klíčové.

  • Ovládání. U desktopových systémů je ovládání do značné míry standardizované: Klávesnice, myš, případně joystick nebo zařízení jim podobné. Touch screen, tablety a jiné druhy vstupních zařízení jsou velice ojedinělé. Naopak téměř každé mobilní zařízení je ovládáno jiným způsobem. Ať už jde o klávesnici mobilního telefonu, kde se předpokládá ovládání jedním palcem, miniklávesnice které se také pro svou malou velikost neovládají všemi prsty, i zařízení zcela bez klávesnice, u kterých se používá touch screenů, které mohou simulovat miniaturní klávesnici nebo například rozlišovat psané písmo.

  • Omezená přenosová kapacita sítě a její spolehlivost. U stolních počítačů je často k dispozici rychlé a spolehlivé síťové připojení, kdežto u mobilních zařízení je toto spojení často velice pomalé a hlavně nespolehlivé.

Z těchto základních vlastností vycházely i hardwarové požadavky zařízení CLDC: Java Virtual Machine, knihovny konfigurace a knihovny profilu musí mít velikost od 160 do 512 kB. Přesněji:

  • Zařízení musí mít k dispozici minimálně 128 kB stálé paměti (EPROM, lépe flash, EEPROM, atd.) pro Java Virtual Machine a knihovny CLDC.

  • Musí být k dispozici alespoň 32 kB nestálé paměti pro chod Java Virtual Machine a běh programů.

Jak je vidět, designér zařízení má docela "volnou ruku". Poměr mezi velikostí stálé a nestálé paměti není fixní, záleží na účelu konkrétního zařízení. Je zřejmé, že pokud bude Java použita jen pro spouštění systémových aplikací, paměť ROM může být poměrně velká, zatímco RAM pravděpodobně nebude.

Profil MIDP 1.0 definuje oproti CLDC další minimální požadavky (v závorce jsou uvedeny požadavky profilu MIDP verze 2.0):

  na paměť:
  - dalších 128 kB (256 kB) stálé paměti pro komponenty MIDP (knihovny atd.),
- 8 kB stálé paměti pro uchování dat aplikací,
- 32 kB (128 kB) nestálé paměti pro chod Java Virtual Machine a běh programů.

na displej:
  - rozlišení 96x54 bodů,
- barevná hloubka 1bit,
- poměr šířky a výšky pixelu cca 1:1.
na vstupní zařízení - alespoň jedno z následujících:
  - klávesnice ovládaná jednou rukou,
- klávesnice ovládaná oběma rukama,
- touch screen.
na síťové připojení:
  - obousměrné, bezdrátové, pokud možno stále k dispozici,
- předpokládá se nízká přenosová rychlost.

MIDlety, distribuce aplikací

Aplikacím, běžícím pod MIDP se říká MIDlety. Jedná se o podobný princip, na kterém pracují Javovské applety nebo servlety. MIDlet tvoří jedna nebo více tříd Javy, které jsou komprimovány do souboru s příponou JAR. Ještě před tím je ale třídu nutno preverifikovat, tedy ověřit, zda kód nebude pro zařízení nebezpečný. Nebezpečím se rozumí přetečení nebo podtečení zásobníku, volání neexistující instrukce, apod. Taková verifikace probíhá v Javě standardně při každém spuštění programu, avšak mobilní platforma nemá pro tento proces dostatek paměti. Při využití preverifikace se nároky značně sníží a celý proces může uspokojivě proběhnout i na zařízení s omezenými zdroji.

Jelikož mobilní telefony jsou velice různorodá zařízení, existuje mnoho způsobů distribuce aplikací. MIDlet může být do mobilního terminálu nahrán přes datový kabel, IrDa, Bluetooth, a podobně, dle přání výrobce zařízení. Na tyto způsoby se nevztahuje žádný konkrétní předpis. Přesně definováno je pouze stahování programů přes Internet. Již při návrhu standardu byl brán zřetel na fakt, že mobilní připojení může být pomalé a nákladné, často i nespolehlivé. Proto je zaveden takzvaný popisovač aplikace (v originále Application Descriptor), který musí povinně obsahovat klíčové informace o programu a může obsahovat i některé upřesňující informace. Z povinných je nejdůležitější adresa, na které se aplikace nachází, a profil pro který je určena. Velmi potřebným, avšak volitelným parametrem, je údaj o její velikosti. Pokud je obsažen, zařízení se nejprve pokusí ověřit, zda má dost systémových prostředků a obsahuje podporu profilu, pro který je program vytvořen, a až po této kontrole jej stáhne. Tímto způsobem distribuce je možno eliminovat zbytečné náklady. Přesnou definici všech povinných i volitelných parametrů je možno nalézt v příslušné specifikaci [4], [5].

Vývoj aplikací

Samotný vývoj aplikací probíhá téměř shodně jako u platformy Java SE (Standard Edition). Samozřejmě že je nutno počítat s jistými odlišnostmi, například MIDlet nesmí obsahovat metodu public static void main(){}, která se v Jave SE používá jako hlavní třída aplikace. Další odlišností, je nemožnost pracovat s čísly s plovoucí řádovou čárkou, což může být pro vývojáře značně omezující. Tato možnost nebyla zapracována záměrně, neboť drtivá většina mobilních zařízení neobsahuje matematický koprocesor. Ve výsledku tedy nelze používat proměnné typu float nebo double.

Programátor také musí počítat s naprosto odlišným vývojem GUI, grafického uživatelského rozhraní. Je samozřejmé, že vývojové prostředí určené pro mobilní terminály s rozdílně velkými displeji a jejich barevnou hloubkou nemůže podporovat tak pokročilé GUI jako standardní verze. U Javy ME lze postupovat následujícím způsobem: Buď použít relativně propracované vysokoúrovňové (high-level) API, které sice dává vývojáři jen malou možnost ovlivnění výsledného vzhledu a rozvržení ovládacích prvků, ale na druhou stranu umožňuje skvělou přenositelnost mezi různými zařízeními.

Java_02
 
Java_03

Obr. 2, 3 Výsledky dosažené použitím vysokoúrovňového API.

Obrázek č. 2 je získán ze simulátoru implementovaném ve vývojovém prostředí Java Wireless Toolkit, zatímco č. 3 je získán ze skutečného mobilního telefonu Siemens M55. Velmi názorně zde lze vidět, že výsledné zobrazení vysokoúrovňového API je vždy přizpůsobeno možnostem zařízení.

Druhou možností je použití nízkoúrovňového (low-level) API, kde jsou možnosti programátora daleko větší, ale v podstatě je nutné vytvářet speciální verze aplikace pro téměř každý typ zařízení. Také je nutno počítat s omezeným počtem knihoven, které sice svými názvy, vlastnostmi i funkcemi v podstatě kopírují Javu SE, avšak velká část jich logicky chybí a ty existující jsou „ořezány“ o méně důležité metody. Pro programátora samozřejmě není problém většinu chybějících metod dotvořit, ovšem za cenu zvýšené časové náročnosti vývoje software.

Samozřejmě velmi důležitá je síťová komunikace. I mobilní Java tedy obsahuje relativně silnou podporu těchto technologií. Samozřejmě nelze očekávat stejné možnosti jako u „velké“ Javy. Programátor může využít jak spojení datagramového, UDP, tak i spolehlivého, TCP. Velmi zajímavou vlastností je implementace HTTP protokolu. Ten byl přidán hlavně kvůli požadavku nezávislosti na TCP/IP protokolu, který nemusí některé způsoby komunikace nativně podporovat.

U mobilní Javy je velkou otázkou možnost šifrování přenášených dat. Základní API tuto možnost, pro její velkou náročnost na systémové prostředky, nepodporuje. Lze však využít volně dostupné knihovny vytvořené třetími subjekty. Faktem je, že případný únik informací by zřejmě neproběhl na straně mobilního terminálu, neboť v této oblasti nejhojněji využívané technologie (GPRS, EDGE) jsou již samy o sobě výborně zabezpečené.

Závěr

I přes velmi omezené zdroje cílových zařízení a relativně malé možnosti základních knihoven, je Java ME velice perspektivní a v posledních pár letech i silně využívanou platformou. Do dnešní doby zažívá největší boom převážně vývoj herních aplikací, avšak ani „klasické“ programy nezůstávají zcela pozadu. Nejčastěji využívanými jsou emailoví klienti, internetové prohlížeče, různé instant messengery jako ICQ a podobně. Vyvstává otázka, zda Java ME setrvá v popředí zájmu i nadále, protože v současné době jsou již velmi dostupné i telefony, případně PDA s GSM modulem nebo komunikátory, obsahující operační systém, ať už Windows Mobile nebo Symbian. Logicky se tedy naskýtá možnost, zda by pro uživatele, ale i pro vývojáře nebylo výhodnější toho využít a upřednostňovat software psaný přímo pro daný operační systém. Takto vyvíjené aplikace mohou využívat souborový systém přístroje (tuto možnost Java ME obsahuje také, ale je dostupná pouze přes knihovny specifické pro každého výrobce nebo dokonce typ přístroje), mohou efektivněji využívat procesor, přímo pracovat s hardwarem přístroje. Dle mého názoru ale přesto není Java tímto trendem příliš ohrožena, neboť přeci jen je pro většinu výrobců software větším benefitem snadná přenositelnost software (a tím i větší okruh potenciálních zákazníků) a jeho snadnější vývoj. Určitý odklon zřejmě půjde vysledovat u herních aplikací, která mají největší hardwarové požadavky. Změnu je zřejmě možno očekávat také u některých programů typu klient-server. Pokud to bude možné, budou zřejmě přecházet k webovému rozhraní z důvodu ještě větší univerzálnosti takového řešení. Je téměř jisté, že Java ME ještě po nějakou dobu téměř nenajde své využití v multimédiích, neboť podpora této oblasti je z její strany dosti slabá.

Před časem jsem registroval velmi nízkou spolehlivost internetového připojení. Hlavně v síti T-Mobile bylo pro její velké vytížení téměř nemožné po většinu času spojení vůbec navázat. Český Mobil, dnes již Vodafone, měl zase problémy s jeho udržením. V posledních cca dvou letech však prošla tato oblast telekomunikací značným vývojem, a proto se odvážím říci, že datové spojení, ať už mluvíme o GPRS, EDGE, CDMA, případně nastupujícím UMTS, je na takové úrovni, že zajistí dostatečnou spolehlivost i kapacitu pro téměř jakoukoliv aplikaci vyvíjenou v Javě ME. Proto se domnívám, že tato platforma je velmi perspektivní a i do budoucna je s ní nutno počítat jako s jedním z nejdůležitějších prostředí pro vývoj a práci aplikací využívajících mobilní terminály, obzvláště mobilní telefony jako takové.

Poděkování

Příspěvek vznikl za podpory projektu GAČR 102/06/1569.

Literatura

[1] http://java.sun.com/docs/books/tutorial/: Java Tutorial.
[2] http://java.sun.com/docs/index.html: Java 2 Standard Edition Documentation.
[3] http://java.sun.com/javame/reference/docs/index.html: Java Mobile Edition Documentation.
[4] http://jcp.org/aboutJava/communityprocess/final/jsr037/index.html: JSR-000037 Mobile Information Device Profile.
[5] http://jcp.org/aboutJava/communityprocess/final/jsr118/index.html: JSR-000118 Mobile Information Device Profile 2.0.
[6] http://www.wikipedia.org/: Wikipedia.
[7] Mahmoud, Qusay, H.: Naučte se Java2 Micro Edition, Grada Publishing a.s., 2002. ISBN 80-247-0444-7
[8] Riggs, Roger. Taivalsaari, Antero. VandenBrink, Mark.: Programming Wireless Devices with the Java™ 2 Platform, Micro Edition, Addison – Wesley, 2001. ISBN 0-201-74627-1



Autor:        P. Kovář
Pracoviště: Vysoké učení technické v Brně

Informační e-mail Vytisknout článek
Projekty a aktuality
01.03.2012: PROJEKT
Výzkum a vývoj nového komunikačního systému s vícekanálovým přístupem a mezivrstvovou spoluprací pro průmyslové aplikace TA02011015

01.01.2012: PROJEKT
Vývoj adaptabilních datových a procesních systémů pro vysokorychlostní, bezpečnou a spolehlivou komunikaci v extrémních podmínkách VG20122014095

09.10.2010: PROJEKT
Výzkum a vývoj datového modulu 10 Gbit/s pro optické a mikrovlnné bezdrátové spoje, FR-TI2/621

09.01.2010: PROJEKT
Sítě s femtobuňkami rozšířené o řízení interference a koordinaci informací pro bezproblémovou konektivitu, FP7-ICT-2009-4 248891

09.11.2008: PROJEKT
Ochrana člověka a techniky před vysokofrekvenčním zářením, FI-IM5/202

20.06.2008: Schválení
Radou pro výzkum a vývoj jako recenzovaný časopis

01.04.2007: PROJEKT
Pokročilá optimalizace návrhu komunikačních systémů pomocí neuronových sítí, GA102/07/1503

01.07.2006: Doplnění sekce pro registrované

12.04.2005: Zavedeno recenzování článků

30.03.2005: Výzkumný záměr
Výzkum perspektivních informačních a komunikačních technologií MSM6840770014

29.11.2004: Přiděleno ISSN

04.11.2004: Spuštění nové podoby Access serveru

18.10.2004: PROJEKT
Optimalizace přenosu dat rychlostí 10 Gbit/s, GA102/04/0773

04.09.2004: PROJEKT
Specifikace kvalitativních kritérií a optimalizace prostředků pro vysokorychlostní přístupové sítě, NPV 1ET300750402

04.06.2004: PROJEKT
Omezující faktory při širokopásmovém přenosu signálu po metalických párech a vzájemná koexistence s dalšími systémy, GA102/03/0434

Web site powered by phpRS PHP Scripting Language MySQL Apache Web Server

NAVRCHOLU.cz

Tento web site byl vytvořen prostřednictvím phpRS - redakčního systému napsaného v PHP jazyce.
Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
nebo registrovanými ochrannými známkami příslušných vlastníků.