Od chvíle, kdy světlo světa spatřil první telefon podporující Javu, máme za sebou skoro dva roky vývoje. Za tu dobu bylo uvedeno na trh několik desítek typů telefonů se zabudovanou Javou, operátoři u nás se předháněli, kdo první umožní stahovat javové aplikace, a vývojáři měli příležitost si možnosti „mikrojavy“ vyzkoušet a přitom zjistit veškeré její nedostatky. Podívejme se, zdali druhá verze specifikace konečně přináší to, po čem by srdce programátora mobilních aplikací mohlo zatoužit.

Novinky MIDP 2.0 letem světem

Nová specifikace obsahuje mnoho nových tříd, proto má i větší nároky na zařízení. Co se týče paměti, je to konkrétně o 128 kB více RAM a o 96 kB více pro běh JRE. O konfigurace, nad kterou bude MIDP 2.0 postaveno, specifikace nic nenařizuje, takže může být použito CLDC 1.0 i CLDC 1.1, ale předpokládá se spíše použití novější verze, jejíž hlavní předností jsou datové typy s plovoucí desetinnou čárkou.

Bezpečnost

V MIDP 1.0 byl pouze jeden bezpečnostní režim – midlet běžící v sandboxu, který skoro nic nemohl. Tento režim byl zachován i v MIDP 2.0 pro nedůvěryhodné sady midletů. To jsou sady, které nejsou podepsané a u kterých si musí implementace Javy před použitím síťového rozhraní vyžádat svolení od uživatele.

Druhou bezpečnostní variantou je sadu midletů podepsat s použitím X.509 certifikátu, čímž se přesune (pokud všechny kontroly při instalaci proběhnou správně) do kategorie důvěryhodných sad midletů. Důvěryhodné sady mohou mít povoleno používat citlivá rozhraní, což jsou všechny síťové protokoly a PushRegistry (viz níže).

IO

V balíku javax.microedition.io přibyla rozhraní pro práci s dalšími protokoly. Výčet všech protokolů obsahuje následující seznam:

  • http
  • https
  • datagram
  • datagram server
  • soket
  • server soket
  • ssl
  • comm

Z těchto protokolů jsou ovšem pro implementátory specifikace MIDP 2.0 závazné pouze http a https, takže se ještě neradujme předčasně.

Když už přibyl protokol https, je potřeba, aby autor aplikace mohl zjistit, zda je na serveru správný certifikát, proto přibyl balík javax.microedition.pki, který obsahuje rozhraní pro zjištění důležitých údajů o certifikátu, jako je vlastník, certifikační autorita, která jej vydala, a datum platnosti.

Další novinkou je třída PushRegistry, která umožňuje spuštění aplikace buď v konkrétní časový okamžik nebo jako reakci na speciální příchozí spojení ze sítě.

Uživatelské rozhraní

V balíku javax.microedition.lcdui nastalo více drobných změn ve třídách, které obsahovala už specifikace MIDP 1.0, a několik tříd přibylo. Za nejpodstatnější novinku považuji možnost vytvářet si vlastní formulářové položky jako potomky třídy CustomItem. Tyto položky jsou stejně nízkoúrovňové jako třída Canvas, mají přístup k událostem klávesnice či stylusu a mají zcela ve své moci i svůj vzhled.

Také by už nemělo být potřeba používat proprietární rozhraní jen proto, aby třída Canvas měla k dispozici celý displej a ne jen jeho část (jako je tomu u telefonů Nokia), a to díky metodě Canvas.setFullScreenMode(boolean mode).

Dále přibyla alespoň minimální možnost ovládat vibrování telefonu a vyvolat světelný efekt (může to být třeba blikání). Obé by mělo sloužit pouze k upoutání pozornosti uživatele.

Herní rozhraní

Na vývoji specifikace se podíleli snad všichni výrobci mobilních telefonů s podporou Javy. A protože alespoň na telefonech zatím hýbou světem hry, je součástí MIDP 2.0 balík určený speciálně na zjednodušení vývoje her. Když se podíváte do rozšiřujících tříd, které měly navíc k MIDP 1.0 firmy Siemens a Nokia, hned je vidět, odkud vítr vane.

Hlavní myšlenkou herního rozhraní, obsaženého v balíku javax.microedition.lcdui.game, je skládání grafiky aplikace z několika vrstev. Například u scény znázorňující potápěče pod vodou by jednu vrstvu tvořilo pozadí, druhou vrstvu ryba plující sem a tam a třetí vrstvu potápěč.

Na míru šitá k reprezentaci pozadí je třída TiledLayer. Vrstva je zde složena jako mozaika ze stejně velkých dlaždic, je i možnost mít animované dlaždice. Pro animované objekty se hodí třída Sprite. Tato třída obsahuje i sadu transformací, jako je otočení obrázku o násobky devadesáti stupňů nebo totéž s jeho zrcadlovým obrazem.

O správné skládání vrstev se stará správce vrstev (LayerManager), který podle pořadí vrstev, jejich viditelnosti a transparence spočítá správnou barvu pixelu. Při použití třídy GameCanvas místo třídy javax.microedition.lcdui.Canvas se automaticky kreslí do bafru, který se vykreslí na displej až po zavolání metody flushGraphics().

Zvuk

Uživatelé, obzvláště hráči her, si žádají zvuku. I když to někteří z nás považují za zbytečnost, je třeba se přizpůsobit. Ve verzi MIDP 2.0 se objevuje možnost ovládat zvuk standardním rozhraním, takže výrobci her jásejte, příště snad už žádné speciální třídy pro vytváření rámusu. (Stejně je na zvuku nejdůležitější, zda se dá vypnout.)

Podporovány by měly být formáty WAV, MIDI a jednoduché generování tónů se zadáním výšky tónu a délky trvání. Výrobci telefonů samozřejmě mohou implementovat i podporu dalších formátů. Balíky javax.microedition.media a javax.microedition.media.control, které mají práci se zvukem na starosti, jsou podmnožinou obsáhlejší specifikace Mobile Media API.

Persistentní data

Jedinou novinkou u uložených dat je možnost sdílení dat i s midlety z jiných sad, ovšem pouze za předpokladu, že to majitel dat povolí.

Co v MIDP 2.0 nenajdeme

Kromě všech novinek, které v MIDP 2.0 najdeme, jsou zde také některé vlastnosti, které by se celkem hodily, ale které tam nenajdeme. Mezi ně patří přístup k telefonnímu seznamu, posílaní SMS zpráv, zahájení telefonního hovoru nebo přístup k datům v telefonu jako k souborovému systému. Tyto funkce se dají najít pouze u telefonů některých výrobců v jejich vlastním rozhraní, které by časem mělo být nahrazeno rozhraním definovaným v rámci JSR (Java Specification Request – požadavek na specifikaci nějakého javového rozhraní)

Shrnutí

Rozhodně lze říci, že některé z nejpalčivějších nedostatků první verze profilu MIDP byly odstraněny. Programátor už většinou nebude nucen používat proprietární třídy, přidávané výrobci telefonů, bez kterých se bohužel dosud prakticky neobešel, což znehodnocovalo největší výhodu Javy – její přenositelnost. První vlaštovky s implementovaným profilem MIDP 2.0 jsou již na světě a brzy budou následovat další, takže nezbývá než doufat, že se na ně potenciální uživatelé vrhnou a vývojáři budou moci s klidným svědomím zapomenout na první krůčky Javy v jejím bezdrátovém životě.

Další zdroje

  • J2ME Wireless Toolkit 2.0 – prostředí od firmy Sun pro překlad a běh MIDP 2.0 aplikací. Lze integrovat do vývojových prostředí Sun ONE Studio, Borland JBuilder MobileSet, Metrowerks CodeWarrior Wireless Studio a Oracle9i JDeveloper.
  • Nokia Developer’s Suite for J2ME™, Version 2.0 – prostředí od firmy Nokia s podporou MIDP 2.0. Lze nainstalovat samostatně nebo jako zásuvný modul (Borland JBuilder 8, Borland JBuilder 9, Sun ONE Studio 4 Mobile Edition Update 1).

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět