Programování Java aplikací pro mobilní telefony - hra Piškvorky
|
|
- Stanislav Tichý
- před 9 lety
- Počet zobrazení:
Transkript
1 České vysoké učení technické v Praze Fakulta elektrotechnická Bakalářská práce Programování Java aplikací pro mobilní telefony - hra Piškvorky Petr Dytrych Vedoucí práce: Doc. RNDr. Josef Kolář, CSc. Studijní program: Elektrotechnika a informatika strukturovaný bakalářský Obor: Informatika a výpočetní technika červen 2008
2 iv
3 Poděkování V první řadě bych velmi rád poděkoval Doc. Josefu Kolářovi z katedry počítačů při fakultě elektrotechnické na ČVUT a Ing. Dušanu Kožušníkovi z firmy COMPELSON Trade, s.r.o. za jejich cenné rady, náměty, a zejména čas, který si na mne a mé dotazy při tvorbě této práce udělali. Dále bych na tomto místě poděkoval své přítelkyni Petře Novotné za pečlivou korekturu, která významně přispěla ke zkvalitnění textu práce a svým rodičům za toleranci a podporu v průběhu vývoje bakalářské práce. v
4 vi
5 Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů. V Chomutově dne vii
6 viii
7 Abstrakt Práce si klade za cíl seznámit čtenáře s problematikou tvorby aplikací v programovacím jazyku Java pro mobilní telefony. Bude se zejména soustředit na zpracování odlišností mezi standardní a mobilní edicí Javy, vzájemnou kompatibilitu aplikací mezi různými typy telefonů a na možnosti bezdrátové komunikace zejména pak na propojení pomocí Bluetooth zařízení. Jako ukázková aplikace byla zpracována stolní hra Piškvorky využívající Bluetooth spojení pro online hru dvou hráčů proti sobě. Abstract The goal of this work is to inform reader about problems of application creation in programming language Java for mobile phones. It will be concentrated on differences between standard and mobile edition of Java, reciprocal compatibility of applications between various types of phones and at possibilities of wireless communication especially at connection via Bluetooth device. As an example application was created a desktop game TicTacToe (also known as Noughts & Crosses) using Bluetooth connection for on-line playing of two players against each other. ix
8 x
9 Obsah 1. Úvod Historie Javy Zrození J2ME Motivace pro vznik této práce Specifikace cílů Požadavky na implementaci Struktura bakalářské práce ve vztahu k vytyčeným požadavkům Představení platformy J2ME Základní přehled Virtuální stroje Kilobyte Virtual Machine Compact Virtual Machine Konfigurace Connected Limited Device Configuration Connected Device Configuration Profily Mobile Information Device Profile Zjištěné rozdíly v implementaci profilu MIDP Jiné profily konfigurací CLDC a CDC Volitelné balíčky Java API for Bluetooth Wireless Technology (JABWT) Další zajímavé volitelné balíčky pro J2ME Analýza a návrh implementace Specifikační termíny Funkční požadavky Návrh implementace Obecné komponenty Menu Navázání spojení Hra Volba vývojového prostředí Návrh diagramu tříd xi
10 5. Realizace Představení aplikace Popis tříd a nejdůležitějších metod BluetoothServer.java BluetoothClient.java (InquiryListener, ServiceListener) BluetoothConnection.java AcknowledgeTask.java LayerManaging.java SpriteAnimationTask.java GatoMidlet.java GatoMenuCanvas.java GatoGameCanvas.java Zajímavé poznatky Testování Funkční testování (Functional Testing) Testování použitelnosti (Usability Testing) Závěr Možná vylepšení Zhodnocení splnění cílů BP Osobní přínos A. Seznam použité literatury 43 B. Seznam obrázků 45 C. Seznam tabulek 47 D. Seznam zkratek 49 E. Uživatelská příručka 51 F. Obsah přiloženého CD 55 xii
11 xiii
12 xiv
13 1. Úvod 1.1. Historie Javy Na počátku devadesátých let společnost Sun Microsystems vytvořila nový programovací jazyk Oak, který byl určen pro výrobky spotřební elektroniky, jež hojně využívaly software. Na základě zkušeností s jazykem C++ byl Oak vyvinut tak, aby co nejvíce eliminoval chyby vytvářené samotnými programátory. Tohoto cíle dosahoval zachycením více chyb při kompilaci a odstraněním některých problematických rysů jazyka C ukazatelé, správa paměti řízená programátorem, apod. Obr. 1-1 Star7 Prvním prototypem využívajícím tento jazyk byl přenosný domácí ovladač Star7. Jednalo se o malé ruční zařízení s dotykovou obrazovkou a vestavěnou bezdrátovou sítí, díky níž mohlo být používáno jako dálkové ovládání pro televizi a video. Bohužel se neobjevila očekávaná poptávka po tomto druhu zařízení a ke spotřebitelům se na bázi Oak nedostalo ani jediné. Ve stejné době se však rozšířilo obecné povědomí o Internetu, což mělo za následek zvýšení poptávku po softwaru na prohlížení webové sítě. Společnost Sun na to reagovala přejmenováním jazyka Oak na Java 1 a jeho použitím pro vývoj přenositelného prohlížeče HotJava. V roce 1995 pak společnost Sun prodala licenci na Javu firmě Netscape, která ji začlenila do vlastního webového prohlížeče. Ten ve své době představoval nespornou jedničku na trhu a tak se svět seznámil s javovými aplety. Nezávislost na platformě vzbudila během několika let zájem komerčních koncových uživatelů, kteří si stále více uvědomovali potenciál Javy jako vývojové platformy pro samostatné aplikace. Ty mohly být psány pouze jednou a běžely jak na systémech s Windows, tak i na unixových systémech, čímž se snížily náklady na vývoj softwaru. Aby společnost Sun náležitě zareagovala na potřeby vývojářů produkujících aplikace pro koncové uživatele, kteří jsou zvyklí na bohatá uživatelská rozhraní, rozšířila rozsah javové platformy. Tato doplněná verze obsahuje sady knihoven pro mnohem propracovanější grafická rozhraní, než jaké měly knihovny používané k vývoji původních appletů. Než k tomu došlo, bylo nutné Javu rozčlenit do několika větví. Standardní funkcionalita, vyžadovaná jako minimální podpora pro běh libovolného prostředí Javy, je v balíku s názvem Java 2 Standard Edition (J2SE). Společnost Sun taktéž registrovala rostoucí zájem o použití Javy při vývoji na podnikové úrovni a v prostředí aplikačních serverů, a proto vznikla verze Java 2 Enterprise Edition (J2EE), která je dnes konkurencí k velmi známe technologii.net od společnosti Microsoft. 1 Při hledání patentů zatěžujících jméno Oak bylo zjištěno, že toto slovo obsahuje už jiný programovací jazyk. Vznikl tedy název Java, který byl údajně odvozen od slangového výrazu pro kávu (Peet's Java), kterou pili tvůrci jazyka v jedné z místních kaváren. 1
14 1. Úvod 1.2. Zrození J2ME Požadavky Javy na hostitelské prostředí se zvyšovaly s každou novou verzí (aktuálně verze 1.6). Ačkoli má tedy J2SE původ v softwaru pro výrobky spotřební elektroniky, vyžaduje nyní příliš mnoho paměti a výkonu procesoru, než aby vytvářela schůdné řešení pro tuto oblast. Ironií osudu je, že zatímco společnost Sun vyvíjela Javu pro Internet a komerční programování, rostla opět poptávka po Javě aplikovatelné na menší zařízení (dokonce i na čipové karty), což ji vracelo zpět ke kořenům. Společnost Sun odpověděla vývojem několika platforem Javy s podmnožinou funkcí, které byly vždy šity na míru určitého souvislého segmentu trhu. Všechny verze přistupovaly jiným způsobem k redukování systémových požadavků tak, aby se nevyčerpaly dostupné hardwarové prostředky. V jistém smyslu proto každá z nich reprezentovala účelové řešení daného problému. Proto Sun Microsystems v červnu roku 1999 představila edici Java 2 Micro Edition (J2ME), jejímž záměrem bylo v dohledné době nahradit dřívější produkty a unifikovat jednotlivá řešení. Na rozdíl od oblastí stolních počítačů a serverů, které využívají J2SE a J2EE, zahrnuje svět spotřební elektroniky daleko rozmanitější škálu zařízení se značně diferencovanými schopnostmi, takže pro ně není možné vytvořit jediný softwarový produkt. J2ME proto není jednou entitou, ale souborem specifikací, jež definují určitou část platformy a nějakou oblast spotřebních zařízení. Podmnožina úplného programovacího prostředí Javy pro určité zařízení se definuje jedním nebo více profily, které rozšiřují základní schopnosti konfigurací. Konfigurace a profily, které se hodí pro dané zařízení, závisejí na povaze hardwaru i na cílové oblasti trhu. Jejich rozdělení, základní vlastnosti a rysy budou popsány později. Servery Servery TV Set-Top box Mobilní telefony Smart karty Enterprise PC Desktopové PC High-End PDA Low-End PDA Volitelné Vestavěná zařízení balíčky Volitelné Java 2 Enterprise Edition balíčky Java 2 Standard Edition Volitelné balíčky Profily Konfigurace CDC Volitelné balíčky Profily Konfigurace CLDC Java Card JVM JVM CVM KVM Card VM Java 2 Micro Edition Obr. 1-2 Schéma rozdělení jednotlivých edic Javy 2
15 1. Úvod 1.3. Motivace pro vznik této práce Nedlouho po představení J2ME se nejčastěji skloňovanou oblastí staly aplikace vyvíjené v profilu MIDP (Mobile Information Device Profile), který rozšiřuje konfiguraci CLDC (Connected Limited Device Configuration). Tento profil byl navržen pro běh na mobilních zařízeních, jimiž jsou například obousměrné pagery a digitální asistenti PDA. V současnosti je ale nejvíce rozšířen na mobilních telefonech, což je hlavním důvodem zájmu jak mezi tvůrci softwaru, tak i u samotných uživatelů. Aplikace vytvořené tímto programovacím prostředím se nazývají MIDlety a díky dobře propracovanému a neustále doplňovanému API (Application Programming Interface) umožňují v podstatě neomezené rozšíření funkcí samotného telefonu. Nejsilnější doménou se pak stal vývoj her a to nejen ve verzi jednoho hráče proti umělé inteligenci, ale i na poli síťových her, kdy spolu soupeří dva uživatelé on-line přes v dnešní době už velmi rozšířené Bluetooth spojení. Hlavním motivem pro vznik této práce je seznámení se s možnostmi programování mobilních aplikací a vytvoření ukázkového MIDletu, kterým by byla síťová hra využívající právě zmíněné Bluetooth spojení. Obr. 1-3 Screenshot z ukázkové hry pro mobilní telefon 3
16 4 1. Úvod
17 2. Specifikace cílů 2.1. Požadavky na implementaci Jako optimální aplikace pro splnění těchto cílů byly vybrány celosvětově známé Piškvorky. V angličtině nese tato hra název TicTacToe, ale můžete se setkat i s pojmenováním Noughts & Crosses. Ani jeden z uvedených názvu není příliš tvárný, a tak byl projekt pro pracovní potřeby přejmenován na Gato. Stále se jedná o stejnou hru, pouze název byl vypůjčen ze španělštiny, kde v překladu označuje hru na kočku a myš. Nyní ale zpět k samotným požadavkům. Nejprve bude důležité seznámit se specifickými vlastnostmi mobilní Javy a odhadnout jaké vlastnosti může mít aplikace vyvíjená pro tento segment trhu. Speciálně pak bude kladen důraz na možnosti bezdrátové komunikace přes Bluetooth zařízení, které v dnešní době obsahuje většina nových mobilních telefonů. Také bude nutné zjistit rozdíly ve způsobu implementace profilu MIDP a určit vzájemnou kompatibilitu aplikací na různých typech konkrétních telefonů. Zkoumáním veřejně dostupných her i jiných užitečných programů byla vytvořena hrubá kostra požadavků, které by výsledná aplikace měla splňovat. Následuje jejich výčet s krátkým popisem dané problematiky: - Propracované grafické uživatelské rozhraní grafický vzhled je prvním aspektem, který ovlivní výsledný dojem celé aplikace na koncového uživatele. Mnohdy rozhoduje o úspěchu či neúspěchu celého projektu. - Odchycení běžných uživatelských událostí absolutní samozřejmostí jsou reakce na stisky kláves, běžné prostředky pro ovládání hry (menu, nastavení, help) a poskytnutí intuitivních informací o aktuálním stavu spuštěného programu. Třešničkou na dortu pak může být možnost ovládat aplikaci pomocí pera u přístrojů s dotykovou obrazovkou. - Odchycení neobvyklých uživatelských událostí jelikož se bude jednat o síťovou hru, je potřeba řešit možný výskyt následujících událostí: nahodilé či násilné zrušení navázaného bezdrátového spojení, pozastavení hry v době, kdy jeden z hráčů právě přijímá hovor, apod. - Vytvoření univerzálního programu pro všechny typy telefonů velmi netriviálním cílem pak bude snaha o vytvoření takové aplikace, která poběží beze změny na jakémkoliv typu telefonu podporující práci s Bluetooth. Současný trend při vývoji her a nejen jich je následující: vytvoří se téměř kompletní produkt, který se upravuje podle specifických vlastností jednotlivých telefonů velikosti displeje, způsobu ovládání, hardwarových prostředků, dostupné paměti, atd. - Použití angličtiny ačkoliv trh v oblasti mobilních her zaznamenává dramatický růst, je důležité, aby aplikace oslovila co nejvíce uživatelů, a proto jako hlavní jazyk byla zvolena angličtina. 5
18 2. Specifikace cílů Při hledání hotových implementací byly navíc rámcově specifikovány požadavky, bez nichž vytvořená hra nebude na cílovém hostitelském prostředí fungovat. Bližší popis těchto atributů bude následovat později, ale nyní je zde vyjmenujme pro úplnost: - Konfigurace CLDC ve verzi Profil MIDP ve verzi Java APIs for Bluetooth 1.0 Nebude-li uvedeno jinak, míníme při dalším použití těchto zkratek verzi, jež je uvedena v tomto výčtu Struktura bakalářské práce ve vztahu k vytyčeným požadavkům Úvodem je nutno uvést, že se od čtenáře očekává alespoň základní znalost J2SE a tudíž je obeznámen s takovými výrazy a zkratkami, jako jsou metody, třídy, balíčky, JVM, JSR, apod. Práce bude rozdělena do několika částí, které nás provedou jednotlivými kroky vývoje jednoduché aplikace. Nejprve představíme důležité vlastnosti J2ME z hlediska potřebných znalostí pro psaní programů na mobilní telefony. Podíváme se blíže na jednotlivé konfigurace a profily zahrnuté v této edici Javy. Speciálně rozebereme profil MIDP a uvedeme výčet zjištěných rozdílů v jeho implementaci mezi nejznámějšími výrobci telefonů Nokia, Sony-Ericsson, Siemens, Motorola. Do tohoto teoretického úvodu bude nutno přidat i základní přehled možností dalšího funkčního rozšíření programového vybavení pro konkrétní potřeby vývojářů, speciálně pak pro práci s Bluetooth zařízením. Později ve čtvrté kapitole představíme hrubou analýzu zadání a návrh způsobu implementace. Zvážíme, co konkrétně by výsledný produkt měl splňovat a jakým způsobem těchto cílů dosáhnout. Čtenář bude navíc krátce seznámen i se zvolenými nástroji, které byly při práci na programu použity. V pořadí pátá kapitola již přinese samotný popis vyvinuté hry a shrne hlavní problémy a události, které se během práce na programu vyskytly. Představeny budou jednotlivé třídy a jejich nejdůležitější metody, které budou mít velký význam pro chod samotného MIDletu. Následně bude aplikace testována, ale vzhledem k rozsahu hry se budeme z pohledů vývojářů soustředit pouze na obyčejné testování funkčnosti. U výsledného programu také provedeme test použitelnosti na vybraném vzorku uživatelů. Dále by v úvahu připadal jednotkový test a zajímavé by byly i výsledky získané zátěžovým testováním v porovnání s podobnými typy her. Tyto testy však do práce nebudou zahrnuty. V závěrečné kapitole shrneme možná vylepšení, na něž se během vývoje přišlo, ale jejichž implementace by byla nad rámec výše uvedených požadavků. Celkovým zhodnocením výsledků bude pak tato práce ukončena. 6
19 3. Představení platformy J2ME 3.1. Základní přehled Jak již bylo řečeno, vznikla potřeba sjednotit různé odnože Javy pro malá zařízení, která nezvládají systémové nároky standardní edice. Jedná se o přístroje s rozmanitými, ale zároveň i velmi omezenými vlastnostmi, a proto nebylo možné vytvořit jedinou specifikaci pokrývající celý segment trhu. Největším problémem pak byly například špatné zobrazovací schopnosti, komplikovaný způsob ovládání, malá operační paměť a nízký výpočetní výkon. Aby se těmto vlastnostem mohla J2ME přizpůsobit, bylo nutné omezit balíčky výchozí specifikace Javy jen na ty nejdůležitější. Navíc zde vznikla potřeba přidání takových balíčků, které by podporovaly práci se specifickými vlastnostmi těchto zařízení, a tak se mobilní Java rozčlenila na různé konfigurace a profily. Pro lepší přehled vztahů v tomto pracovním prostředí je přiložen obrázek 4. Volitelné balíčky Personal Profile Personal RMI Game MIDP PDAP Basic Profile Profile Profile Profily Mobile Information Device Profile Personal Digital Assistant Profile Foundation Profile Konfigurace CLDC Connected Limited Device Configuration CDC Connected Device Configuration Virtuální stroje KVM Kilobyte Virtual Machine CVM Compact Virtual Machine Obr. 3-1 Základní přehled architektury J2ME Centrum tvoří javový virtuální stroj, který pracuje na hostitelském operačním systému zařízení. Tvoří ho runtime, což je část realizující vazbu na hardware, a interpret, který vykonává bytový kód. Nad ním je postavena specifická konfigurace skládající se z programových knihoven, které zajišťují nejjednodušší operace, jež jsou na daném zařízení prováděny. Pomyslný vrchol konfigurace tvoří jeden či více profilů, které obsahují doplňkové knihovny pro práci s podobnými funkcemi příbuzných zařízení. Aby bylo možné přidávat podporu nových technologií, vznikají tzv. volitelné balíčky, které je dále rozšiřují. Ty jsou tvořeny aplikačním rozhraním, které může ovládat specifické funkce daného přístroje, jako například Bluetooth nebo zvukové a grafické rozhraní. 7
20 3. Představení platformy J2ME Ale pozor, sám výrobce při implementaci virtuálního stroje rozhodne, jaké volitelné balíčky budou podporovány a se kterými vlastnostmi telefonu budeme moci pracovat. Může se tedy stát, že ačkoliv hostitelská platforma disponuje Bluetooth zařízením, není práce s ním podporována z důvodu chybějící knihovny, která nebyla do zařízení implementována Virtuální stroje Jak bude později uvedeno, obě konfigurace na obrázku 4 mají své charakteristické rysy, díky kterým se odlišují od standardní edice. Kvůli těmto odlišnostem je u každé z nich zapotřebí jiná JVM než ta, na kterou jsme zvyklí u J2SE Kilobyte Virtual Machine Po hardwarové stránce definuje CLDC minimální výkonnostní požadavky tak, aby cílové zařízení umožňovalo implementaci VM s redukovanými funkcemi v rámci jeho omezených prostředků. Vlastnosti samotného virtuálního stroje jsou pak popsány částmi úplné JVM, které tato konfigurace podporovat nemusí a zároveň částmi, na něž se vztahují různá omezení. Společnost Sun poskytuje jako referenční implementaci k této konfiguraci stroj známý jako KVM (Kilobyte Virtual Machine), avšak výrobci zařízení nejsou nuceni k tomu, aby na něm své produkty zakládali. Mohou použít jakýkoliv jiný virtuální stroj, který splňuje požadované funkce dle CLDC. Takovým je například J9 vyvinutý společností IBM 2. Aby se maximalizoval počet hostitelských platforem, na které lze tuto konfiguraci implementovat, nejsou kromě požadavků na dostupnou pevnou paměť (ROM) kladeny téměř žádné nároky. Například vůbec není předpokládána přítomnost displeje, mechanizmu pro uživatelský vstup nebo paměti pro data samotné aplikace Compact Virtual Machine Už jen okrajově představíme i druhý virtuální stroj vyvinutý dle konfigurace CDC. Ten je velmi podobný tomu, který známe ze standardní edice Javy verze 1.3. Ve skutečnosti musí jakákoliv VM pro CDC podporovat veškeré funkce popsané ve druhém vydání specifikace JVM od společnosti Sun. Má však menší nároky na paměť a obsahuje správce paměti navrženého pro práci v prostředí s omezenou pamětí. Kromě údaje o požadované paměti mají ostatní požadavky na hardware uvedené v tabulce 1 pouze formu doporučení. Jejich splnění však není očekáváno. 2 Bude-li v další části této práce použita zkratka KVM, platí vše i pro kterýkoliv jiný virtuální stroj vyhovující specifikaci CLDC. 8
21 3. Představení platformy J2ME KVM CVM Aktuální verze konfigurace CLDC 1.1 CDC 1.1 Číslo požadavku v rámci JCP JSR 139 JSR 218 ROM Paměť pro VM a její knihovny 160 kb 2,5 MB RAM Paměť pro běh samotné VM 32 kb 2 MB Typ procesoru 16 bitový 32 bitový Rychlost procesoru 8-32 MHz > 32 MHz Způsob napájení Bateriový Síťový Konektivita Omezená, většinou HTTP Stálá, většinou TCP/IP Tab. 3-1 Vlastnosti virtuálních strojů v J2ME 3.3. Konfigurace Hlavním cílem konfigurací však není samotné vymezení hardwarových požadavků, ale definice obecného programového vybavení pro určité skupiny zařízení. Konfigurace taktéž nepopisuje způsob instalace aplikací, jejich životní cyklus, funkcionalitu uživatelského rozhraní, odchyt událostí ani způsob interakce uživatele s programem, respektive se zařízením samotným. Tyto oblasti bývají specifikovány v profilech, k nimž se dostaneme později. Jak už bylo řečeno, v J2ME rozlišujeme dvě konfigurace Connected Limited Device Configuration Ačkoliv CLDC ve verzi 1.1 povoluje mnohé, co jeho předchůdce zakazoval, jsou z důvodu snížení nároků na hardware a úspory paměťového prostoru uplatňována oproti verzi J2SE tato hlavní omezení: - Finalizace KVM neumožňuje provést úklidové práce s objekty (např. uzavření zdrojů) před vlastním zrušením objektu pomocí GC (Garbage Collector). - Neobsahuje většinu chyb a výjimek jelikož se od aplikací v Javě neočekává, že se zotaví z vyvolaných výjimek odvozených ze třídy java.lang.error, neobsahuje CLCD a tudíž i virtuální stroj většinu tříd, které chyby reprezentovaly. Nastane-li takto odstraněná výjimka, KVM se pokusí vyhledat a vyhodit takovou chybu, jež je nejbližší té, která nastala. Dále jsou pak odstraněny tyto funkce: - Skupiny vláken a démoni samotná vlákna poskytována jsou, ale nelze vytvořit skupiny vláken. Tento nedostatek lze odstranit vytvořením kolekce objektů vláken. Navíc není poskytováno ani démonové vlákno tj. takové, které automaticky skončí po doběhu všech nedémonových vláken ve VM. - Reflexe odstranění funkcí souvisejících s reflexí vede k úspoře paměti, protože se tak ruší povinnosti určovat, zda k nim samotný aplikační kód vlastní přístupová práva. - Uživatelem definované zavaděče tříd z důvodu bezpečnosti lze použít pouze originální bootstrap zavaděč, který nesmí být nahrazen, rekonfigurován nebo programově přetížen na úrovni metod. 9
22 3. Představení platformy J2ME Knihovny tříd Aby bylo možné provozovat tuto konfiguraci na maximálním množství zařízení, jsou do specifikace zahrnuty pouze následující balíčky javax.microedition.io, java.lang, java.util, java.io. První uvedený obsahuje rozhraní, které pracuje nezávisle na specifických rysech zařízení jako obecný připojovací systém a v J2SE se s ním nesetkáte. Ze zbylých, dobře známých balíčků, využívá CLCD pouze třicet devět tříd viz tabulka 2. Ostatní byly zejména kvůli omezení paměti a bezpečnosti odstraněny. Následující oddíl krátce popíše hlavní aspekty vyjmenovaných balíčků a případně uvede jejich změny oproti svému originálu ve standardní Javě. Třídy java.lang Boolean, Byte, Character, Class, Double, Float, Integer, Long, Math, Object, Runnable, Runtime, Short, String, StringBuffer, System, Thread, Throwable java.util Calendar, Date, Enumeration, Hashtable, Random, Stack, Timezone, Vector java.io ByteArrayInputStream, ByteArrayOutputStream, DataInput, DataOutput, DataInputSream, DataOutputStream, InputStream, OutputStream, InputStreamReader, OutputStreamWriter, PrintStream, Reader, Writer Tab. 3-2 Třídy zděděné konfigurací CLDC z J2SE javax.microedition.io tento balíček je natolik obecný, že nezavádí žádné nové třídy pro I/O a připojení k síti. Cílem je, aby ho profily na bázi CLDC využívaly jako společný mechanizmus pro přístup do sítě, nehledě na protokol, kterým se chceme připojit. Je-li spojení úspěšné, vrátí níže uvedená metoda objekt, který hostitelské prostředí zavede do jednoho z obecných rozhraní pro připojení. Zde jsou příklady obecného a konkrétního požadavku na spojení: - Connector.open("<protocol>:<address>;<parameters>"); - Connector.open(" - Connector.open("datagram:// :2800"); - Connector.open("comm:0;baudrate=9600"); java.lang obsahuje pouze necelou polovinu tříd ze svého protějšku v J2SE. Nejdůležitější výčet pozměněných vlastností tohoto balíčku je v podstatě shodný s body uvedenými na předchozí stránce. Avšak jedna zajímavost tu je. Numerické třídy jsou přímo odvozeny od třídy Object a nikoli od Number. Detailnější rozbor změn tohoto balíčku naleznete ve zdroji [4]. java.util z oblasti kolekcí obsahuje tento balíček pouze následující třídy Hashtable, Stack, Vector, Enumeration. Jedná se o podmnožinu tříd reprezentující kolekce dostupné v JDK ve verzi 1.1. Systém kolekcí známý z Javy 2 nebylo kvůli omezeným hardwarovým prostředkům možno implementovat. Součástí je také podmnožina funkcí z tříd Date, TimeZone a Calendar, které pracují s datem a časem. Pro zachování minimálních nároků na hostující platformu je však vyžadována podpora pouze jednoho časového pásma, kterým je standardně GMT (Greenwich Mean Time). Třída Date je pak obalem dlouhé hodnoty, která reprezentuje datum a čas jako odchylku od 00:00 dne 1. ledna 1970 GMT. java.io jediné vstupní a výstupní proudy, jež lze připojit na zdroj nebo cíl dat, jsou ByteArrayInputStream, ByteArrayOutputStream. Pokud tyto streamy obalíme pomocí DataInput- 10
23 3. Představení platformy J2ME Sream respektive DataOutputStream, mohou poskytovat způsob, jak přenášet a ukládat primitivní datové typy Javy. Přístup ke všem ostatním zdrojům dat je poskytován privátními implementacemi tříd InputStream a OutputStream. Virtuální stroje z důvodu absence souborového systému nezavádí třídu java.lang.properties, avšak každé zařízení zpřístupňuje metodou System.getPorperty(String key) tyto vlastnosti: Popis Standardní hodnota microedition.platform Název hostitelské platformy nebo zařízení null microedition.encoding Standardní kódování znaků "ISO " microedition.configuration Název a verze podporující konfigurace "CLDC-1.1" microedition.profiles Názvy podporovaných profilů null Tab. 3-3 Systémové vlastnosti Connected Device Configuration Jak už bylo řečeno v kapitole , je tato konfigurace postavena na J2SE ve verzi 1.3. Protože při vzniku CDC neexistovaly žádné staré kódy aplikací na této bázi, nemusel se brát ohled na požadavek zpětné slučitelnosti programů. Využila se tedy příležitost a odstranila se ta rozhraní Javy, jež byla zavržena (deprecated). Do CDC byly zahrnuty tyto balíčky: 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, java.microedition.io. Více informací o CDC naleznete na [5] Profily Není příliš pravděpodobné, že by vývojář aplikací psal software pracující jen s konfiguracemi CLDC a CDC, protože například neobsahují nic, co by umožňovalo interakci s uživatelem nebo práci se sítí a úložnými zařízeními. Záměrem bylo pouze poskytnutí základní vrstvy, na níž lze aplikovat řadu profilů poskytujících další programové prostředky. V dnešní době je nejznámějším zástupcem profil MIDP ve verzi 2.0 určený především pro svět mobilních telefonů Mobile Information Device Profile Na konci roku 2002 byla vydána nová specifikace profilu MIDP, jenž byl vyvinut v rámci procesu JCP (Java Comunity Proces) jako požadavek s označením JSR 118. Oproti první verzi došlo k rozšíření oblastí týkajících se bezpečnosti, uživatelských rozhraní a sítí. Přibyla také API určená pro tvůrce her a pro práci s multimédii. Nová verze obsahuje téměř dvakrát více tříd než její předchůdkyně, a tudíž zvýšila své nároky na paměť zařízení viz tabulka 4, kde jsou tučně zvýrazněny změny hardwarových požadavků oproti MIDP 1.0. Kromě novinek existují také vlastnosti, které zde bohužel 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. 11
24 3. Představení platformy J2ME Paměť Displej Vstupní zařízení Síť Zvuk Minimální požadavky 256 kb (původně 128) trvalé paměti pro MIDP implementaci 128 kb (původně 32) dočasné paměti pro běh aplikace 8 kb trvalé paměti pro data aplikací rozlišení alespoň 96x54 pixelů hloubka barev: 1 bit přibližně čtvercový poměr stran pixelů telefonní klávesy 0-9 nebo plná klávesnice nebo dotykový displej obousměrný (přerušovaný) síťový provoz, s omezenou šířkou pásma schopnost přehrávat tóny, ať už hardwarově či softwarově Tab. 3-4 Hardwarové požadavky profilu MIDP 2.0 Všímavý čtenář v tomto výčtu jistě zaznamenal vznik požadavků na displej a vstupní zařízení, které konfigurace nedefinovaly. Tato novinka zavedla možnost interakce s uživatelem, což se projevilo i v rozšířeném programovém vybavení. Knihovny tříd Specifikace MIDP 2.0 nevyžaduje žádnou konkrétní verzi CLDC, je ovšem předpokládáno, že většina zařízení bude obsahovat verzi 1.1. Proto například balíček java.lang neobsahuje třídy reprezentující proměnné double a float. Jejich podporu buď zajistí přímo konfigurace, která je na zařízení implementována, nebo je nebude možné využít. Většina balíčků však zůstala oproti svým předchůdcům nezměněna. Některé byly upraveny, jiné zcela nově přidány. Podívejme se tedy na nejdůležitější aspekty tohoto profilu oproti konfiguracím CLDC: java.lang na rozdíl od CLDC 1.1 neimplementuje třídy Double a Float java.util nově je tento balíček rozšířen o třídy Timer a TimerTask. Ty slouží jako nástroj pro spouštění cyklicky se opakujících událostí. Kód, který má být spuštěn při vypršení časovače, musí být implementován jako potomek TimerTasku a volán pomocí instance třídy Timer. To nám umožní běh jednoho či více úkolů ve vyhrazeném vláknu na pozadí aplikace. javax.microedition.io přibyla rozhraní pro práci s dalšími protokoly. Nyní jsou podporovány komunikace přes protokoly http, https, datagram, datagram server, soket, server soket, ssl, comm. Od zařízení samotného jsou však specifikací vyžadovány pouze http a https. Další novinkou je třída PushRegistry, která umožňuje spuštění aplikace buď v konkrétním časovém okamžiku, nebo jako reakci na speciální příchozí spojení ze sítě. javax.microedition.lcdui z důvodu zahrnutí displeje mezi hardwarové požadavky vznikl balíček pro uživatelské rozhraní, který byl následně ve verzi 2.0 rozšířen. Grafické objekty vytvořené tímto balíčkem dělíme na tzv. vysokoúrovňové a nízkoúrovňové. První uvedené poskytují dostatečný počet funkcí pro relativně nenáročnou tvorbu MIDletů, jež fungují v nezměněné podobě na mnoha zařízeních. Bohužel jsme omezeni použitím objektů od těchto tříd: Alert, ChoiseGroup, DataField, Form, Guage, Item, List, Spacer, TextBox, TextField a Ticker, a zároveň máme jen velmi malou kontrolu nad jejich vlastním vzhledem. Opakem jsou nízkoúrovňové komponenty, díky nimž máme zajištěn přístup k obrazovce na úrovni pixelů, což ale od programátora vyžaduje 12
25 3. Představení platformy J2ME mnohem větší úsilí při jejich tvorbě. Tyto komponenty se sestavují pomocí metod tříd Canvas a Graphics. Za nejpodstatnější novinku lze však považovat 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, ale přístup k událostem klávesnice mají zcela ve své moci stejně jako svůj vzhled. Nově také není potřeba využívat balíčky knihoven implementované přímo od výrobců jen proto, aby třída Canvas měla k dispozici celý displej a ne jen jeho část, tak jak tomu bylo například u telefonů Nokia. To je zajištěno díky metodě Canvas.setFullScreenMode(boolean mode). javax.microedition.lcdui.game hlavní myšlenkou tohoto nového balíčku určeného zejména pro vývoj her, je skládání grafiky aplikace z několika vrstev. Ta reprezentuje viditelný objekt, který je potomkem rozhraní Layer. Jeho konkrétní implementace má v profilu MIDP dvě podoby třída TiledLayer a třída Sprite. Například u scény znázorňující svět pod vodou by jednu vrstvu tvořilo pozadí, druhou ryba plující sem a tam a třetí například potápěč. Pro reprezentaci pozadí je vhodná třída TiledLayer, která ho poskládá jako mozaiku z dlaždic. Ty se vytvoří pomocí konstruktoru vrstvy, jenž je vyřeže z grafických souborů png nebo gif. Některé dlaždice mohou být i animované pomocí sekvence snímků, které se na dané pozici budou přehrávat. Aby plující ryba a potápěč nepůsobili ve svém pohybu staticky, použijeme pro jejich tvorbu třídu Sprite, která nám podobně jako u animovaných dlaždic umožňuje nastavit sekvenci obrázků, které budou v tomto případě využity pro imitaci jejich pohybu (např. pohyb ploutví). Tato třída navíc poskytuje několik podpůrných metod, jako jsou rotace, překlápění, a kontroly kolizí s jinými objekty typu Sprite, TiledLayer nebo i s obyčejnými obrázky, a proto je vhodná pro tvorbu takovýchto grafických elementů. Pro tyto novinky již není vhodné používat obyčejné plátno Canvas, ale nové herní GameCanvas. To obsahuje speciální bafr (off-screen buffer), v němž se grafika hry nejdříve vykreslí mimo obrazovku a teprve po zavolání metody flushgraphics() se jeho obsah naráz zobrazí na displeji. Zjednodušení práce se skupinami vrstev přináší třída LayerManager. Přidáním vrstvy do tohoto správce pomocí metod append(layer vrstva), insert(layer vsrtva, int index) nám umožní po zavolání paint(graphics g, int x, int y) vykreslit všechny vrstvy najednou. javax.microedition.media toto API je malou podmnožinou známého Mobile Media API, ale obsahuje funkce určené pouze pro audio. Po telefonech samotných je pak vyžadována podpora hudebních formátů WAV a MIDI, ale knihovna umí zpracovat i formáty AU a MP3. Základní třída Manager slouží pro vytváření jednotlivých přehrávačů a jednoduchou reprodukci tónů se zadanou výškou a délkou trvání pomocí metody playtone(int ton, int delka, int hlasitost). Rozhraní Player pak umožňuje přehrání audio souborů, k nimž se přistupuje pomocí Media Locatoru nebo vytvořením InputStreamu. 13
26 3. Představení platformy J2ME javax.microedition.media.control ovládá funkce pro práci médií poskytnutím rozhraní VolumeControl pro ovládání hlasitosti přehrávačů, a také rozhraním ToneControl, které umožňuje přehrávání sekvence monotónních tónů. javax.microedition.midlet abstraktní třída MIDlet z tohoto balíčku je rodičem pro všechny aplikace, které chtějí v profilu MIDP běžet. Taková aplikace pak musí obsahovat alespoň jednu třídu, jež je jejím potomkem, a implementuje abstraktní metody startapp(), pauseapp(), destroyapp(), které reprezentují aktuální stav spuštěné aplikace. Vztahy a přechody mezi těmito stavy reprezentuje obrázek 5. Obr. 3-2 Životní cyklus MIDletu javax.microedition.pki z důvodu přidání komunikačního protokolu https, je potřeba, aby uživatel aplikace mohl zjistit, zda je na serveru, se kterým komunikuje, platný certifikát. K tomu slouží 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. javax.microedition.rms jedinou novinkou u trvale uložených dat je možnost jejich sdílení i mezi MIDlety z jiných sad, ovšem pouze za předpokladu, že to majitel dat povolí. Bezpečnost V MIDP 1.0 byl pouze jeden bezpečnostní režim aplikace běžící v sandboxu, která sama od sebe nemohla přistupovat k síťovému rozhraní bez vyžádaného svolení od uživatele. Tento režim byl zachován i v MIDP 2.0 pro nedůvěryhodné sady MIDletů. Druhou bezpečnostní variantou je podepsání programu s použitím certifikátu X.509, čí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 pak mohou používat citlivá rozhraní přístrojů, kterými jsou všechny síťové protokoly a PushRegistry. Závěrem Již v průběhu roku 2006 měla být vydána nová specifikace MIDP 3.0, ale dosud není hotova. Měla by definovat a rozšiřovat následující oblasti, které byly zaneseny do žádosti JSR 271: - souběžný běh více aplikací na jedné VM - automatické spuštění aplikace po startu zařízení - běh aplikace na pozadí - zlepšit předefinovaná uživatelská rozhraní - zlepšit podporu velkých displejů - povolit používání druhých displejů - rozšířit podporovaná síťová rozhraní - definice dalších způsobů instalování aplikací (nyní specifikováno pouze OTA Over The Air) 14
27 3. Představení platformy J2ME Zjištěné rozdíly v implementaci profilu MIDP Jelikož oblast vstupních zařízení není, jak ukázala tabulka 4, konkrétně specifikována. Záleží na samotných výrobcích telefonů, jakým způsobem předávají programovému vybavení informace o stisku kláves do nízkoúrovňových komponent, které jsou při tvorbě aplikací obvykle použity. To samozřejmě vede ke vzniku různých odlišností při implementaci této problematiky, ačkoliv mnoho zařízení disponuje absolutně shodnou nebo velmi podobnou klávesnicí té, kterou vidíme na obrázku 6. Specifikací profilu MIDP jsou vyžadovány pouze klávesy 0 až 9, hvězdička a mřížka. Telefony pak zpravidla mají i levý a pravý softkey umístěný pod displejem, a směrové šipky s prostředním tlačítkem. Klávesy pro zahájení a ukončení hovoru nejsou pro profil MIDP poskytovány, jelikož MIDletům není umožněno vytvářet telefonická spojení. Přijetí informace o stisku klávesy a jejím vlastním kódu se liší zejména mezi výrobci, ale například u telefonů značky Motorola byl zaznamenán rozdíl i mezi jednotlivými typy. První způsob, jak k tomuto problému tvůrci přistupují, je dán specifikací MIDP 1.0. Předání informace o události se provádí automatickým vyvoláním metody void keypressed(int key) z třídy Canvas, kde parametr key udává číselný kód stisknuté klávesy. Tyto číselné konstanty se obvykle dále překládají metodou getgameaction(int key) do akcí reprezentovaných v tabulce 5. Číselný kód Akce Číselný kód Akce 1 UP 48 KEY_NUM0 2 LEFT 49 KEY_NUM1 5 RIGHT 50 KEY_NUM2 6 DOWN 51 KEY_NUM3 8 FIRE 52 KEY_NUM4 9 GAME_A 53 KEY_NUM5 10 GAME_B 54 KEY_NUM6 11 GAME_C 55 KEY_NUM7 12 GAME_D 56 KEY_NUM8 35 KEY_POUND (#) 57 KEY_NUM9 42 KEY_STAR (*) Tab. 3-5 Standardní kódy kláves a herních akcí dle třídy Canvas Samotná metoda by pak mohla vypadat takto: Obr. 3-3 Standardní rozložení kláves protected void keypressed(int key){ // správné použití if (getgameaction(key) == Canvas.FIRE){ } // funkční, ale nevhodné použití if (key == 50) { } // nefunkční použití if(key == Canvas.FIRE){ } } Druhý způsob, jakým zjistit, že byla nějaká klávesa stisknuta, představuje metoda getkeystates(), kterou získá třída rozšiřující dříve zmíněný GameCanvas z MIDP 2.0. Návratovou hodnotou je pak číselný kód naposledy použitého tlačítka od posledního volání této metody. Pokud žádné ta- 15
28 3. Představení platformy J2ME kové nebylo, je tato hodnota rovna 0, v jiném případě vrátí bez dalšího mapování hodnotu rovnou jedné z konstant v tabulce 6. Číselný kód Akce Číselný kód Akce 2 UP_PRESSED 512 GAME_A_PRESSED 4 LEFT_PRESSED 1024 GAME_B_PRESSED 32 RIGHT_PRESSED 2048 GAME_C_PRESSED 64 DOWN_PRESSED 2096 GAME_D_PRESSED 256 FIRE_PRESSED Tab Standardní kódy kláves a herních akcí dle třídy GameCanvas Programový kód by pak mohl vypadat takto: while(ture){ int action = getkeystates(); switch(action){ case FIRE_PRESSED: { } break; } } Následující tabulky, které reprezentují standardní klávesnici z obrázku 6, ukážou, jaké kódy kláves byly u telefonů jednotlivých výrobců během implementace hry Piškvorky odhaleny. Červeně jsou hodnoty vrácené metodou keypressed(int key), modře metodou getkeystates(). Záporné hodnoty si pak definoval každý výrobce sám a jsou taktéž získány metodou keypressed Tab. 3-7 Klávesy telefonů Nokia /512 35/ Tab. 3-9 Klávesy telefonů Siemens Tab. 3-8 Klávesy telefonů Sony-Ericsson /512 35/256 Tab Klávesy telefonů Motorola řad A1, A4, A6 Tab Klávesy telefonů Motorola řad A3, A5 Shrňme nejdůležitější poznatky získané z tohoto výčtu. Unifikovaný přístup ke všem běžně používaným klávesám má jako jediný výrobce telefonů Siemens. Ostatní značky kombinují obě výše uvedené metody. Navíc pro některá tlačítka vrací hodnotu do obou z nich. Jiní výrobci naopak u 16
29 3. Představení platformy J2ME svých telefonů neimplementují některé klávesy vůbec, ačkoliv by podle specifikace měli. Největší překvapení ovšem přináší tabulka 10, která skutečně neobsahuje chybu, jelikož Motorola u svých telefonů z řad A1, A4, A6 neposkytuje středové tlačítko joysticku, ačkoliv ho zařízení mají. To je pak v programu nahrazeno například klávesou 5. Závěrem uveďme, že rozhraní CommandListener z balíčku javax.microedition.lcdui, které slouží také pro odchyt uživatelských událostí, je určeno pouze pro vysokoúrovňově komponenty Jiné profily konfigurací CLDC a CDC PDAP (PDA Optional Packages) tento profil určený pro PDA byl dokončen v červnu Stejně jako MIDP funguje na zařízení s KVM a CLDC, ale klade vyšší nároky na displej a paměť, a nabízí nové balíčky pro uživatelské rozhraní a práci s daty. Následující profily, jejichž strukturu znázorňuje obrázek 4 na straně 6, jsou určeny pro konfiguraci CDC: Základový profil (Foundation Profile) přidává většinu základních tříd a balíčků, které CDC chybí oproti standardní edici, ale neobsahuje žádné uživatelské rozhraní, ani knihovny java.beans, java.rmi a java.sql. Je určen pro zařízení typu set-top box, kde dochází jen k velmi primitivnímu typu interakce s uživatelem a není tedy zapotřebí režie grafických rozhraní. Taktéž tvoří základ pro další rozšiřující profily. Osobní základový profil (Personal Basic Profile), Osobní profil (Personal Profile) cílem obou profilů je poskytovat náhradní uživatelské rozhraní na bázi Java 2 za platformu PersonalJava, která byla odvozena z JDK RMI profil (Remote Method Invocation) přidává k základnímu profilu vzdálené volání metod kompatibilních s rozhraním standardní edice (knihovna java.rmi). Herní profil (Game Profile) jak už název napovídá, měl by tento profil poskytovat podporu vývoje her pro CDC, ale v současné době je jeho vývoj pozastaven Volitelné balíčky Volitelné balíčky J2ME umožňují programovému jádru využívat ty specifické funkce hostitelského prostředí, které základní knihovny konfigurací a profilů standardně nepodporují. Tím razantně rozšiřují možnosti vyvíjených programů, ale zároveň snižují jejich přenositelnost. Například aplikace kompletně postavená na Mobile 3D Graphics API zaujme na první pohled každého vývojáře, ale po zjištění, že toto API není podporováno u většiny zařízení, je jeho použití zavrhnuto Java API for Bluetooth Wireless Technology (JABWT) Sama technologie Bluetooth je specifikována standardem IEEE Svou definicí je určena k bezdrátovému spojení na frekvenci 2,4 GHz mezi dvěma nebo více elektronickými zařízeními, a tudíž spadá do kategorie osobních počítačových sítí, tzv. PAN (Personal Area Network). Jednotlivá 17
30 3. Představení platformy J2ME zařízení jsou identifikována pomocí své adresy BT_ADDR (BlueTooth Device Address), podobně jako jsou MAC adresou určovány počítače v Ethernetu. Bluetooth se vyskytuje v několika vývojových verzích 1.0, 1.1, 1.2, 2.0, 2.1, z nichž v současnosti nejpoužívanější je třetí jmenovaná, která má přenosovou rychlost 721 kbit/s a maximální šířku pásma 2,1 Mbit/s. Centrem této technologie je tzv. Bluetooth Protocol Stack, jehož architekturu můžete vidět na obrázku 7. Obr. 3-4 Bluetooth Protocol Stack, převzato z [7] Tento zásobník protokolů je členěn na několik vrstev skládajících se z protokolů jádra, protokolů nahrazujících kabelové spojení, protokolů mobilní kontroly a adaptivních protokolů. Nám však stačí zaujmout obecnější pohled a rozdělit výše znázorněné schéma na dvě komponenty: - hostující prostředí (spodní vrstva) zajistí samotné navázaní spojení a přenos dat - hostující kontrolér (horní vrstva) spolupracuje přímo s programovým vybavením Obě komponenty pak odděluje HCI (Host Control Interface), které zajišťuje interakci mezi nimi. Ve skutečnosti se jedná o rozhraní separující hardwarovou a softwarovou část implementace, ale u velmi omezených zařízení, jakými jsou například headsety, může být veškerá funkcionalita obsažena jen na úrovni hardwaru a firmwaru, a tudíž HCI neobsahují. Aby mohlo zařízení podporovat Bluetooth technologii, musí hostující platforma navíc implementovat jeden nebo více profilů. Těch je v současné době 28 a každý z nich definuje návrhový vzor, jakým bude v dané oblasti použití navazována vzájemná komunikace, čímž odstraňují případnou nekompatibilitu výrobků různých značek určených pro stejné použití. Jelikož rozsah Bluetooth specifikace zahrnuje mnoho vrstev protokolů a profilů, rozhodla expertní skupina, která vytvářela JABWT v rámci JSR 82, o zahrnutí jen těch nejdůležitějších. Jako hlavní cíl si pak kladla budoucí rozšiřitelnost o nově vzniklé Bluetooth profily, které budou založeny na protokolech L2CAP a OBEX. Toto JSR proto popisuje využití pouze následujících částí Bluetooth specifikace ve verzi 1.1, nad kterou je postaven: - datový přenos (audio přenos není podporován) - protokoly L2CAP, RFCOMM, SDP, OBEX - profily GAP, SDAP, SPP, GOEP - schopnosti registrace služeb, vyhledávání zařízení a jejich služeb, navázaní spojení přes uvedené protokoly, řízení veškerých aktivit na bezpečné úrovni 18
31 3. Představení platformy J2ME Tabulky 12, 13 uvádějí základní popis jednotlivých protokolů, respektive profilů 3. Obrázek 8 pak znázorňuje vztahy mezi vyžadovanými profily. L2CAP RFCOMM SDP OBEX Popis protokolu Tvoří základ všech vyšších protokolů Fragmentuje a defragmentuje data na pakety a zpět Multiplexuje data pro lepší vytížení linky Emuluje RS-232 sériový port Umožňuje až šedesát současných připojení bluetooth přístrojů Vyhledává služby na vzdáleném zařízení Umožňuje obecnou výměnu objektů v binární podobě GAP SPP SDAP GOEP Tab Popis protokolů z Bluetooth specifikace Popis profilu Tvoří základ všech profilů a tím zaručuje všeobecnou kompatibilitu Definuje základní funkcionalitu nastavení L2CAP linek, vyhledávání vzdálených zařízení Zajišťuje správnou emulaci sériového portu na RFCOMM protokolu Popisuje, jak se mají vyhledávat služby na vzdáleném zařízení pomocí protokolu SDP Vytváří základ dalších profilů zabývajících se výměnou dat nad protokolem OBEX Tab Popis profilů z Bluetooth specifikace Generic Access Profile SDAP Serial port profile Dial-up Networking Fax Profile Headset Profile LAN Access Profile TSC-BIN based Profiles Cordless Phone Intercom Profile Generic Object Exchange Profile File Transfer Object Push Synchronization Obr. 3-5 Vztahy mezi Bluetooth profily Po samotném zařízení je pak vyžadována konfigurace CLDC nebo CDC, 512 kb dostupné paměti nad jejich hardwarové požadavky a samozřejmě podpora Bluetooth komunikačního hardwaru s potřebnými protokoly. Není tedy požadován kterýkoli konkrétní J2ME profil. Knihovny tříd Java aplikační rozhraní pro bezdrátovou Bluetooth technologii se skládá ze dvou knihoven javax.bluetooth, javax.obex. Jedna pracuje nad funkcemi protokolu L2CAP, druhá nad protokolem OBEX. Obě jsou definovány nezávisle na sobě, ale poskytují v podstatě totožné funkce, které můžeme klasifikovat do tří hlavních kategorií: správa, vyhledávání a komunikace. Funkce věnující se správě umožňují převzetí kontroly nad lokálním Bluetooth zařízením a specifikují úroveň viditelnosti telefonu pro své okolí. Taktéž se starají o registraci poskytovaných služeb, které bude jiný uživatel využívat. Druhá kategorie zahrnuje vyhledání vzdálených zařízení a 3 Úplný název jednotlivých zkratek naleznete v příloze D. 19
32 3. Představení platformy J2ME jimi nabízených služeb. Poslední se pak věnuje navázání spojení a jeho obsluze při samotné komunikaci. Čtenáře, kterého zajímá bližší popis tříd a jejich metod, odkazuji na zdroj [7] od strany 19 a zdroj [19]. Implementace Bluetooth Bohužel ne všechny telefony, které ve svém vybavení mají Bluetooth zařízení, ho poskytují i pro J2ME aplikace. Tak tomu je kupříkladu u telefonů Sony-Ericsson K700i. Rozsáhlý, avšak ne zcela kompletní seznam telefonů podporující JABWT dohledáte ve zdroji [15]. Jak bylo dříve uvedeno, jsou zmíněné knihovny separátní, takže výrobce telefonů může implementovat jak obě dvě, tak i libovolně jen jednu z nich. Například výrobce telefonů značky Nokia nepodporuje balíček javax.obex, čímž ho v podstatě staví mimo veškerý zájem tvůrců a pozornost je tak věnovaná pouze na javax.bluetooth Další zajímavé volitelné balíčky pro J2ME Chcete-li zjistit, zda Váš telefon podporuje některý z následujících balíčků, podívejte se na [15]. Název Stručný popis JSR 75 PDA Optional Packages Umožňuje vývojářům kompletní přístup k file systému a k organizéru telefonu. JSR 120, JSR 205 Wireless Messaging API 1.0 a 2.0 Definují rozhraní pro příjem a posílaní MMS zpráv, které mohou obsahovat text, zvuk a obrázky. JSR 135 Java Mobile Media API Významně rozšiřuje schopnosti původního balíčku, který je obsažen v MIDP 2.0. JS4 184 Mobile 3D Graphics API Obsahuje 30 tříd určených pro vývoj her a aplikací v 3D prostředí. JSR 226, JSR 287 Scalable 2D Vector Graphics 1.0 a 2.0 Zajišťují podporu dvou-dimenzionální statické i animované vektorové grafiky. JSR 239 Java Bindings for OpenGL ES Podpora OpenGL technologie pro 2D a 3D grafiku. Tab Další volitelné balíčky J2ME Ani jedna z verzí specifikace profilu MIDP neobsahuje API pro odesílání SMS zpráv. Pokud takovou službu přeci jen chcete využít, máte dvě možnosti. Buď knihovny dodané přímo výrobcem, pokud SMSky podporují, anebo Wireless Messaging API, které umožňuje odeslat textovou nebo binární zprávu. Samotný systém odesílání pomocí tohoto balíčku je jednoduchý: import javax.wireless.messaging.messageconnection; import javax.wireless.messaging.textmessage; import javax.microedition.io.connector; sendmessage(string text, String number){ String addr = "sms://"+number; try{ MessageConnection conn = (MessageConnection) Connector.open(addr) TextMessage message = (TextMessage) conn.newmessage(messageconnection.text_message); message.setaddress(addr); message.setpayloadtext(text); smsconn.send(message); smsconn.close(); }catch (Exception e){ System.out.println("SMS se nepodarilo odeslat"); } } 20
33 4. Analýza a návrh implementace Vývoj softwaru v oblasti her je tak rozvinutý, že již nelze přijít s čímkoliv novým, a proto se při vývoji aplikace budeme držet osvědčených a standardních postupů. Uživatel tak nebude překvapen například neobvyklým rozdělením položek menu nebo způsobem ovládání samotné hry. Dle zadání této práce má být pro demonstraci zvládnuté problematiky vytvořena samostatná anebo síťová hra. První oblast by přinesla zajímavé zkušenosti s vytvářením a implementací inteligentního algoritmu hrajícího proti uživateli. Ten by ale raději, podle zjištěných ohlasů, uvítal hru proti živé osobě. A proto, jak už z předešlých kapitol vyplývá, se budeme soustředit na vývoj síťové hry, jež by takovou možnost nabízela. Částečně předpřipravíme podmínky pro možné budoucí rozšíření hry o verzi jednoho hráče proti počítači Specifikační termíny Pro sjednocení terminologie specifikující funkční požadavky nadefinujeme pevné výrazy, které přesně určí, co podporováno bude, co by mohlo být a co nikoli. Definice MUSÍ Tvoří absolutní požadavek. NESMÍ Tvoří absolutní zákaz. MĚLA BY Udává nepovinný požadavek, který implementace podporovat nemusí (ačkoliv jeho pozdější využití by mohlo být vyžadováno). NEMUSÍ Udává požadavek, se kterým implementace nemusí počítat. Tab. 4-1 Specifikační termíny 4.2. Funkční požadavky Výsledným produktem bude stolní hra Piškvorky splňující běžná pravidla, která jsou specifikována například ve zdroji [20]. Aplikace je určená pro běh na mobilních telefonech, jež musí podporovat následující technologie: konfigurace CLDC 1.1, profil MIDP 2.0, volitelný balíček javax.bluetooth a z důvodů dále uvedených grafických požadavků musí splňovat alespoň tyto hardwarové vlastnosti: velikost displeje 128x128, počet barev 256, telefonní nebo plná klávesnice. Finální aplikace by měla podporovat používání dotykového pera, respektive dotykového displeje. Programový kód musí být univerzální a bez jakýchkoliv změn přenositelný na jiný typ telefonu podporující Bluetooth, a proto nesmí využívat jakékoliv nestandardní knihovny tříd implementované nad rámec uvedené konfigurace a profilu. Kód musí respektovat rozdílné velikosti displejů a odlišné kódy kláves u jednotlivých výrobců. Veškeré texty zobrazované uživateli musí být v anglickém jazyce. Aplikace nemusí podporovat jiné jazyky. 21
34 4. Analýza a návrh implementace Hra musí být rozdělena na menu a hru samotnou. Menu musí obsahovat tyto položky: New Local Game, New Bluetooth Game, Help, Settings, Author s Info, Exit. Hra by měla zobrazovat tyto informace: hráč, který je aktuálně na tahu a čas uplynuvší od začátku hry. Musí umožnit bezpečné odpojení z právě probíhající hry. Program musí být po grafické stránce jednotný. Samotná hra musí být postavena na nízkoúrovňových komponentách, a proto i menu by mělo být nízkoúrovňové. Aplikace nesmí používat SVG (Scalable Vector Graphics) grafiku, protože by tím využívala nestandardní volitelný balíček. Výsledná hra by měla v adekvátních případech (výhra/prohra, umístění symbolu, posun políčka) přehrávat zvuky a případně vibrovat. Navázání komunikace by mělo proběhnout tak, že jeden z účastníků vytvoří server, který bude čekat na připojení klienta. Aplikace nesmí povolit vstup třetí osoby do hry. Pokud jeden z hráčů násilně ukončí běh MIDletu (většinou podržením červeného tlačítka), oponent by o tom měl být informován. Pokud jeden z hráčů přijme během hry hovor, oponent o tom musí být informován a musí mu být umožněno se z takto přerušené hry bezpečně odpojit, bude-li o to mít zájem. Po skončení hovoru musí být umožněno pokračování hry. Při výhře/prohře musí být uživatelům umožněno pokračovat novou hrou bez potřeby nového startu serveru a připojení klienta Návrh implementace Obecné komponenty Nejdříve je nutné zamyslet se nad vznikem obecně využitelných komponent, které budou sloužit jako šablony u konkrétních problematik. Takovou šablonou pak může být často využívaná funkce, která by svou implementací do více tříd zbytečně prodloužila a znepřehlednila programový kód. V našem případě se jedná o tvorbu často se opakujících grafických elementů, které jsou reprezentovány pomocí vrstev (třída TiledLayer) nebo animovaných symbolů (třída Sprite). Pro využití těchto technologií hovoří zejména podpůrné metody, které nám umožňují absolutní kontrolu nad rozložením a chováním jednotlivých prvků těchto objektů. Například menu, které by své položky znázorňovalo pomocí grafických ikon, může být rozčleněno tak, že každá jeho úroveň by byla tvořena právě jednou vrstvou. Viditelná by pak byla pouze aktivní úroveň. Jiný přístup, využívající shodnou programovou konstrukci, se uplatňuje i u samotné hrací plochy skládající se z dlaždic, respektive herních políček, uspořádaných v jedné vrstvě. Po umístění herního symbolu dojde k náhradě jedné dlaždice za jinou, čímž se změní obsah vybraného políčka na křížek nebo kolečko. Jako zástupce druhého typu opakujících se elementů můžeme uvést tzv. animované selektory, které by mohly sloužit pro výběr položek v menu nebo pro pohyb v samotném herním poli. Dosáhneme tak jisté úrovně animace a program nebude působit staticky. 22
35 4. Analýza a návrh implementace Třída implementující odchyt kláves by taktéž mohla tvořit zvláštní komponentu, avšak její funkce by se lišila podle aktuálního stavu aplikace menu, navazování komunikace, hra. Nedosáhlo by se očekávaného zkrácení programového kódu, a navíc tím vzniká potřeba zvláštní signalizace, která specifikuje právě spuštěnou část hry Menu Menu hry by mělo uživatele oslovit a působit na něj nestatickým dojmem. Pro implementaci jsou zvažovány dvě možné úpravy. První možnost by obsahovala grafickou ikonu pro každou položku v menu a pro správné pochopení jejího významu by vypisovala i krátký textový popis v záhlaví nebo zápatí displeje. Druhá možnost by byla postavena na opačném principu. Obsahovala by graficky upravený font, kterým se vypíšou položky menu na displej, a ty by doplnila jedna významová ikona zobrazená v rohu displeje měnící se podle aktuálního výběru. Z hlediska požadované univerzality bude zvolena první možnost, jelikož je vhodnější pro lepší rozmístění položek na displeji tak, aby bylo dosaženo nezávislosti na jeho velikosti. Pro položky Help a Author s Info, které budou uživateli sdělovat informace v textové podobě, je nutné vytvořit metody zajišťující univerzální zalamování slov pro jakoukoliv šířku displeje Navázání spojení Jelikož knihovna javax.obex není podporována na telefonech Nokia, bude pro vzájemnou komunikaci mezi telefony využito protokolu L2CAP a nad ním postaveného API. V každém telefonu bude možno vytvořit jak server, tak klienta. Uživatel pak v menu pod položkou New Bluetooth Game zvolí, v jakém módu se má aplikace spustit. Dle obecně známého modelu je pro úspěšné navázání komunikace mezi síťovými prvky nutné nejdříve kompletně nastartovat server. Tato činnost u mobilního telefonu zahrnuje převzetí kontroly nad Bluetooth zařízením, nastavení viditelnosti pro okolí, zaregistrování poskytované služby (hry Piškvorky) a otevření příchozího portu, na který se později klient bude připojovat. O aktuálním stavu inicializace zařízení má být uživatel informován. Též má mít možnost tuto činnost ukončit a vrátit se do hlavního menu. Na straně klienta, který se následně připojí, bude navázání komunikace zahrnovat tyto úkony: převzetí kontroly nad Bluetooth zařízením telefonu, vyhledávání dosažitelných zařízení a jimi poskytovaných služeb. Pokud bude nalezen server připravený na spuštění hry, proběhne synchronizace a samotný start. O aktuálním stavu inicializace zařízení má být uživatel informován a má mít možnost tuto činnost ukončit a vrátit se do hlavního menu. Nedojde-li k navázání spojení, měl by uživatel nalézt potřebné informace řešící tento problém v menu v sekci Help. Mezi časté chyby, které vyvolají chybu programu, lze zařadit zákaz viditelnosti telefonu pro okolní zařízení. 23
36 4. Analýza a návrh implementace Hra Jelikož je herní plocha vykreslována na obou telefonech zvlášť, mohou uživatelé používat stejné symboly nezávisle na sobě. Pro jedno střetnutí je zvoleno pole o velikosti 20x20 políček a startovní pozice bude index 10-10, který se vycentruje na střed displeje podle jeho rozlišení. Čtyři sta políček umožní i velmi rozsáhlou hru, ale je zjevné, že takové množství dlaždic se na jeden displej nevměstná, a proto bude herní plátno posunovatelné. Informaci o aktuálním stavu hry bude poskytovat textový popisek v záhlaví displeje. Kdo je právě na tahu, bude specifikováno pomocí hlášky You anebo Opponent. Bude zde také uveden čas, který uplynul od začátku hry. Ten se nesmí inkrementovat po dobu, kdy je hra přerušena, tzn. při příchozím hovoru na straně jednoho z hráčů. Pro lepší přehlednost při výhře/prohře by měla být výherní kombinace pěti symbolů v řadě nějakým způsobem zvýrazněna. Vhodných možností je mnoho. Jako optimální se jeví způsob, kdy daných pět symbolů bude problikávat a telefon se rozvibruje Volba vývojového prostředí Pro vývoj aplikací v programovacím jazyku Java jsou v dnešní době nejčastěji používána vývojová prostředí NetBeans a Eclipse. U obou je nespornou výhodou fakt, že jsou distribuovány jako opensource a jsou volně ke stažení na webových stránkách výrobců. My se však soustředíme pouze na platformu J2ME a pro tu byla nalezena lepší podpora u prvně zmiňovaného IDE (Integrated Development Environment). Po naistalování kompletní verze NetBeans již tento produkt obsahuje Mobility Pack sloužící pro vývoj aplikací, které poběží na mobilních telefonech a PDA. Je vhodný pro psaní, testování i debagování aplikací určených pro mikro edici Javy. Zároveň integruje podporu profilu MIDP 2.0 a konfiguraci CLDC 1.1 a CDC, což mu umožní našeptávat a vhodně doplňovat programový kód pro urychlení vývoje. Jednoduchá je také implementace tzv. emulátorů, které simulují běh mobilního telefonu přímo v počítači a usnadňují tak potřebné testování. Ty bývají ke stažení na vývojářských stránkách jednotlivých výrobců telefonů, viz [12]. Umožňují rychlé funkční testování napsaného kódu, avšak nemohou kompletně nahradit fyzický přístroj, a proto je nutné v závěru projektu testovat běh aplikace přímo na telefonech samotných. Zejména jedná-li se o síťovou aplikaci, která musí komunikovat nezávisle na typu a značce telefonu. Další praktické komponenty prostředí NetBeans, které pro náš vývoj ale použity nebudou, jsou Visual Mobile Designer a Mobile Game Builder. První umožňuje grafický vývoj aplikací v okénkovém designéru pomocí předpřipravených komponent, které NetBeans nabízí. Druhý slouží pro tvorbu rozsáhlých herních scén a animovaných ikon. Jejich bližší popis naleznete ve zdroji [13]. 24
37 4. Analýza a návrh implementace 4.5. Návrh diagramu tříd Obr. 4-1 Návrh diagramu tříd 25
38 26 4. Analýza a návrh implementace
39 5. Realizace Výsledná podoba aplikace, která Vám bude nyní představena, by měla splňovat veškeré požadavky uvedené v předchozí části. Již nyní vzniklo několik nápadů co zlepšit či přidat, ale to už ponecháme na případné další rozšíření aplikace. Tyto podněty ke zlepšení uvedeme pro inspiraci v závěrečné kapitole této práce. Nyní si pojďme ukázat aktuální podobu hry Představení aplikace První, s čím přijde uživatel do styku, je menu aplikace. Obsahuje šest ikon reprezentujících základní položky dle funkčních požadavků. Pro pohyb mezi nimi je použit animovaný selektor, který dvakrát za sekundu mění svůj stav z tenkého na silný. Při přesunu do další úrovně menu odjíždí aktuální vrstva vpravo mimo displej, zatímco nová vrstva se vysouvá zleva směrem na střed. Kromě položky New Local Game, která je pouze předpřipravená pro možné rozšíření hry, jsou ostatní ikony aktivní. Zde je popis jejich funkčnosti: Obr. 5-1 Menu hry - New Bluetooth Game slouží pro zahájení síťové hry. Uživatel nejdříve specifikuje, zda bude vystupovat jako server nebo klient, a poté si zvolí herní symbol, který bude používat. Ve hře je první na tahu vždy server. - Help popíše, jakým způsobem aplikaci ovládat a jak postupovat v případě, že se nedaří navázat spojení mezi dvěma telefony. Vykreslovaný text se zalamuje v závislosti na šířce displeje. - Info uvede základní informace o autorovi a programu samotném. - Settings umožní zapnout nebo vypnout vibrace a melodii. Vibrace telefonu jsou standardně zapnuty a využívá se jich při výhře, respektive prohře jako doplňku pro zvýraznění nastalé situace. Naopak melodie je při startu aplikace vypnuta, jelikož se očekává, že protihráči budou v jedné místnosti a spuštěním programu by se telefony navzájem přehlušovaly. Případná změna obou nastavení zůstává platná pouze po dobu jednoho běhu programu a při příštím startu se opět vrátí do původních hodnot. - Exit umožní bezpečné opuštění aplikace stejně jako soft key umístěný vpravo pod displejem. Plocha herního pole je 20x20 políček, přičemž každé z nich má hrany dlouhé 16 pixelů. Aktuálně vykreslená je pouze ta část herního plátna, která se vejde na displej. Hráči vlastnící telefon s větším displejem tak mají oproti jiným nepatrnou výhodu. Posun obrazovky nastane, pokud by se animovaný selektor při dalším pohybu stranou vysunul mimo okraj obrazovky. Popis aktuálního stavu hry, tak jak 27
40 5. Realizace to vyžadují funkční požadavky, reflektuje záhlaví hrací plochy. Chce-li uživatel opustit rozehranou hru, stiskne kterýkoliv ze soft keyů a potvrdí zobrazenou upozorňovací zprávu dané akce Give up game?. To na straně oponenta vyvolá výherní stav vynucený odpojením soupeře a zobrazí text Opponent gave up. You WIN!. Pokud se jeden z hráčů tímto způsobem vzdá, je předpokládáno, že již dále nechce pokračovat ve hře a oběma telefonům je nabídnut přechod zpět do menu nebo ukončení celé aplikace. Jiným přístupem, který nebyl realizován, je stav, kdy by chtěl hráč touto metodou vzdát viditelně prohranou hru a začít znovu. Obr. 5-2 Herní pole Při obvyklém způsobu výhry je kombinace pěti výherních symbolů zvýrazněna trojitým probliknutím a uvedeným rozvibrováním telefonu. Oběma hráčům je pak nabídnuta možnost zahájení nové hry. Odmítne-li jeden z nich, druhý je o tom informován. Příchozí telefonní hovor vyvolá u protihráče hlášku Opponent has a call. Wait or give up game. a způsobí pozastavení času měřeného od začátku hry. Pokud oponent vyčká, je po skončení hovoru automaticky obnoven běh hry na místě, kde předtím skončil. V případě, že se odpojí, je příjemce hovoru po jeho ukončení o této skutečnosti informován. Oproti funkčním požadavkům je umožněno nastartovat klienta dříve než server. Klient cyklicky prohledává své okolí a nalezne-li nějaké Bluetooth zařízení, zjistí, zda poskytuje jako registrovanou službu hru Piškvorky. Pokud tomu tak není, je celý proces spuštěn znovu. Po úspěšném navázání komunikace se na obou telefonech ve zvláštním vlákně spustí úloha, která každé tři sekundy zašle zprávu typu ack. Za situace, kdy více jak tři tyto zprávy nejsou doručeny, respektive nedorazí na protihráčův telefon, který je očekává, bere se navázané spojení za ztracené. Uživatel je o tom informován hláškou Connection lost. What to do? a je mu nabídnut návrat zpět do menu nebo ukončení hry. Veškeré grafické ikony, které byly v aplikaci použity, jsou bezplatně získány ze zdroje [17] Popis tříd a nejdůležitějších metod Oproti diagramu z obrázku 9 došlo k rozšíření aplikace o třídu BluetoothConnection, které je předáno samotné řízení komunikace od tříd BluetoothServer a BluetoothClient po úspěšném navázání spojení. Její hlavní funkcí je vyhodnocení příchozí zprávy a následné vyvolání odpovídající reakce na lokálním zařízení. Nově též vznikla třída AcknowledgeTask, která zajišťuje odeslání a příjem výše zmíněných zpráv typu ack. Jako optimální způsob pro pochopení funkčnosti jednotlivých metod programu je doporučeno nahlédnout do vytvořené dokumentace javadoc, kterou naleznete na přiloženém CD. Standardně zformátovaný kód aplikace má přibližně dva a půl tisíce řádků, a proto zde popíšeme pouze základní stavební kameny jednotlivých tříd. Funkce parametrů nebudou vysvětlovány v případě, kdy se jedná o metody knihovních tříd, jejichž popis naleznete ve standardní dokumentaci API na adrese [18] nebo [19]. 28
41 5. Realizace BluetoothServer.java Vytvoření serveru není z hlediska programového kódu náročné. Aplikace převezme kontrolu nad Bluetooth přístrojem telefonu, nastaví jeho viditelnost pro okolí a otevře příchozí port na specifikovaném URL. LocalDevice local_device = LocalDevice.getLocalDevice(); local_device.setdiscoverable(discoveryagent.liac); String url = "btl2cap://localhost: a06"; L2CAPConnectionNotifier notify = (L2CAPConnectionNotifier) Connector.open(url); L2CAPConnection con = notify.acceptandopen(); Informace o stavu navazování komunikace jsou předávány do třídy GatoGameCavnas, která je vypisuje na displej BluetoothClient.java (InquiryListener, ServiceListener) Tento soubor ve svém těle zahrnuje další dvě třídy, které uživatel využívá při navazování komunikace, a proto zde budou popsány společně. Třída BluetoothClient nejdříve inicializuje samotné Bluetooth zařízení tím, že nad ním opět převezme kontrolu a následně si vytvoří agenta pro prohledávání okolního prostředí. LocalDevice local_device = LocalDevice.getLocalDevice(); DiscoveryAgent disc_agent = local_device.getdiscoveryagent(); Poté je pokračováno s vyhledávacím procesem, který se skládá ze dvou částí. První je zajištěna vnořenou třídou InquiryListener a slouží pro vyhledání vzdálených přístrojů, jež jsou v dosahu. Druhá část na takto nalezených zařízeních zkoumá pomocí třídy ServiceListener přítomnost herního serveru hry Piškvorky. Pokud není server nalezen, probíhá celý proces od začátku. Je-li hledání úspěšné, vyzvedne si klient URL adresu prvního telefonu, který ve svém okolí naleznul a připojí se na něj. String url = serv_listener.service.getconnectionurl(0, false); L2CAPConnection con = (L2CAPConnection) Connector.open(url); To znamená, že uživateli není nabízena možnost výběru v případě, kdy je v jeho okolí více funkčních serverů. Informace o stavu navazování komunikace jsou předávány do třídy GatoGame- Cavnas, která je vypisuje na displej BluetoothConnection.java Po navázání komunikace je spuštěno separované vlákno třídy BluetoothConnection, které začne pomocí metody receive(byte [] inbuf) přijímat pakety dat. Tato metoda je takzvaně blokující, což znamená, že vyčkává na příchozí zprávu a nezatěžuje tak svou činností hlavní vlákno programu, které vykresluje hrací plochu a vyhodnocuje stisky kláves. Samotná data jsou přijata v podobě bajtů, které jsou dále překládány na běžný textový řetězec následujícím příkazem: String msg = new String(inBuf, 0, inbuf.length).trim(); 29
42 5. Realizace Vyhodnocením tohoto řetězce pomocí metody equals("nejaky_text") a klauzulí if-else je rozhodnuto o vyvolání příslušného stavu ve třídě GatoGameCanvas. Po ukončení hry zajistí metoda close()uzavření komunikačního kanálu AcknowledgeTask.java Jelikož je potomkem třídy TimerTask, umožňuje automatické spouštění její metody run() po uplynutí doby dané třetím parametrem v příkazu scheduleatfixedrate(acknowledgetask, 0, 3000). Tato hodnota obsahující časový údaj v milisekundách zde zastupuje časový spínač, který provedení úlohy zajistí. Nejdříve se odešle zpráva ack a následně se testuje, zda byla během posledních tří sekund přijata stejná signalizace z protihráčova telefonu. Pokud přijata není a stane se tak třikrát po sobě, je ve třídě GatoGameCanvas vyvolán stav reprezentující ztrátu spojení a hra je ukončena LayerManaging.java Jak již sám název napovídá, jedná se o komponentu sloužící jako manažer pro tvorbu grafických elementů, které do aplikace vkládáme odděleně. Ty tvoří vrstvy složené z ikon, se kterými se setkáváme zejména v menu, a animovaných selektorů, jež nám umožňují pohyb mezi políčky herního plátna a mezi položkami menu. Chce-li nějaká třída požádat o vytvoření prvně zmiňovaného prvku, vytvoří si proměnnou typu TiledLayer, kterou zinicializuje voláním metody gettiledlayer(int layer, TiledLayer tl, int WI, int HE, int tile, char filesign, int posx, int posy, boolean visible), kde hodnoty parametrů mají tento význam: - layer identifikační číslo vrstvy, které je využito pro specifikování způsobu, jakým budou jednotlivé dlaždice naplněny - tl odkaz na instanci objektu TiledLayer, který chceme vytvořit - WI počet dlaždic vrstvy v X-ové ose - HE počet dlaždic vrstvy v Y-nové ose - tile šířka a výška jedné dlaždice (komponenta tudíž podporuje pouze čtvercové dlaždice) - filesign specifikuje zdrojový soubor, ze kterého budou dlaždice vyřezávány - posx počáteční umístění vrstvy v X-ové ose po její inicializaci - posy počáteční umístění vrstvy v Y-nové ose po její inicializaci - visible specifikuje, zda bude daná vrstva viditelná Pro tvorbu selektorů použijeme metodu getsprite(int layer, Sprite sp, int[] spseq, int posx, int posy, boolean visible), která je v některých bodech podobná předcházející: - layer tento parametr přímo determinuje, jaký typ selektoru se má vytvořit, respektive ze kterého zdrojového souboru se budou obrázky načítat a jaká bude jejich velikost - spseq definuje posloupnost obrázků, tvořící animaci selektoru 30
43 5. Realizace - posx počáteční umístění vrstvy v X-ové ose po její inicializaci - posy počáteční umístění vrstvy v Y-nové ose po její inicializaci - visible specifikuje, zda bude daná vrstva viditelná SpriteAnimationTask.java Tato úloha poskytuje jednoduchou podpůrnou činnost pro animaci selektorů. Je potomkem třídy TimerTask a tudíž je umožněno její automatické vyvolání po vypršení časovače, stejně jako tomu bylo u AcknowledgeTask.java v kapitole Jakmile tato událost nastane, je zajištěn přechod na další snímek v sekvenci, která byla specifikována při jejich tvorbě. Jsme-li v sekvenci u konce, pokračuje se přirozeně od začátku GatoMidlet.java Spouštěcí třída aplikace, která rozšiřuje abstraktní třídu MIDlet a implementuje její metody volané při změně stavu programu startapp(), pauseapp() a destroyapp(). Ačkoliv má veřejný konstruktor, v programu existuje pouze jedna její instance, což umožňuje vytvořit statický odkaz na její obsah, který lze získat pomocí vytvořené metody getinstance(). Tuto třídu lze v našem případě považovat za jakousi nadtřídu všech ostatních, protože pomocí ní přecházíme mezi jednotlivými stavy programu menu, samotná hra. Dále zajišťuje základní nastavení programu, respektive definuje, zda bude hra ozvučena a zda bude při výhře/prohře vibrovat. Tyto vlastnosti se při každém startu aplikace resetují na původní hodnoty, protože není využíváno RMS (Record Management System) záznamů, které slouží pro dlouhodobé uložení statických informací Java aplikací na mobilních telefonech GatoMenuCanvas.java Tato třída reprezentuje veškeré programové prostředky pro práci s menu. Slouží jak pro vykreslení a správu grafiky, tak i pro obsluhu jednotlivých kláves. Její běh, který soustředíme do jednoho vlákna, je odstartován po inicializaci potřebných datových struktur, mezi něž se řadí zejména zmiňované vrstvy. Menu hry jich obsahuje celkem sedm a slouží jako: - Pozadí - Úvodní menu - Výběr síťového módu hry - Výběr herního symbolu - Nastavení aplikace - Neviditelná vrstva použitá při vykreslování textu sekce Help a Author s Info - Animovaný selektor pro výběr položek Další významnou větví je obsluha stisku kláves. Ta je zde zajištěna dvojím způsobem tak, jak to bylo popsáno v kapitole Obě metody vyhodnocují, jaká klávesa nebo směr joysticku byl pou- 31
44 5. Realizace žit a podle toho volají metody uppressed(), downpressed(), leftpressed(), rightpressed, firepressed(), softleftpressed() a (). První čtyři zajišťují pohyb selektoru ve směrech, které lze zajisté intuitivně odvodit. Další v pořadí pak podle aktuálního stavu menu může odstartovat samotnou hru nebo ukončit celou aplikaci, ale především slouží pro vyvolání animace přechodu do další úrovně menu pomocí metody animatemenuin(tiledlayer tlin, TiledLayer tlout). Předposlední metoda je využita, pokud se chce uživatel vrátit zpět o úroveň výš. Pro tento účel je zde inverzní funkce animatemenu- Back(TiledLayer tlout, TiledLayer tlin). Uvedené parametry tlout a tlin přirozeně reprezentují vrstvy menu, které z displeje odjíždí a přijíždí. A konečně softrightpressed() zajišťuje ukončení aplikace. To však pouze v případě, že se právě nacházíme v úvodním menu. Mezi zajímavé komponenty této třídy lze zařadit i metody drawmessage(string message) a drawword(string message, int begin, int end), které ve vzájemné kooperaci vykreslují a zalamují text předaný parametrem message univerzálně podle šířky displeje. Indexy begin a end pak určují pozici začátku a konce aktuálního slova v textu. Zbylé třídní metody pak zpravidla sdružují často se opakující funkce použité při tvorbě grafických elementů, což zkracuje a zpřehledňuje programový kód GatoGameCanvas.java Jedná se zřejmě o nejdůležitější část celého programu, která zajišťuje běh hry. Opět je zde po nastavení potřebných proměnných v konstruktoru třídy spuštěno separované vlákno aplikace. To ve svém počátku nastartuje, dle předchozího výběru uživatele, inicializaci požadovaného módu Bluetooth připojení. Samotná hra je pak zahájena až po navázání úspěšného spojení dvou telefonů, přičemž je spolu s tímto okamžikem spuštěno i odesílání zpráv typu ack, které byly popsány v kapitole Během cyklického běhu vlákna je stejně jako v předchozím případě testován stisk kláves. Též dochází k vykreslování grafiky do off-screen bufferu, který je v závěru každého cyklu vypláchnut na displej pomocí metody flushgraphics(). Jakmile je hráčem umístěn herní symbol do hrací plochy, spustí se v metodě control(int sh) test, který vrací hodnotu true, pokud je daná pozice součástí výherní kombinace. Ta může nastat ve čtyřech směrech znázorněných na obrázku 12, kde červeně zbarvené pole představuje právě umístěný křížek nebo kolečko. Je-li nepřerušená řada pěti symbolů detekována, odešle se protihráči speciální typ zprávy, která jako obvykle obsahuje souřadnice umístěného symbolu, a navíc vyvolá animaci výherní posloupnosti. Obr. 5-3 Výherní směry 32
45 5. Realizace 5.3. Zajímavé poznatky Během vývoje došlo ke zjištění, že telefony nemusí být před spuštěním hry takzvaně spárované. Tato činnost se sama provede při prvním kontaktu během navazování herní komunikace. Uživatelé jsou pouze vyzváni k zadání číselných klíčů, podle kterých se navzájem identifikují. S tím souvisí problém, který nastal během instalace Piškvorek na telefony značky Nokia. Mnoho jejích typů nepodporuje přímou instalaci programů zkopírováním zkompilovaných Java souborů s příponou jar prostřednictvím Bluetooth spojení z počítače. Pro tuto činnost se musí použít speciální, volně šiřitelný software Nokia PC Suite, který lze stáhnout ze stránek výrobce. Před instalací se provede spárování počítače a telefonu, což způsobí, že chce-li uživatel okamžitě vyzkoušet nově nainstalovanou hru, nedojde k navázání spojení s protihráčem, ačkoliv se koncová zařízení navzájem vidí. Důvodem je stále probíhající komunikace s počítačem. Ve většině případů řeší tuto situaci vypnutí a zapnutí Bluetooth zařízení na straně uživatele hry nebo spárování telefonů před prvním spuštěním aplikace. Na tomto místě ještě dodejme, že bezproblémové navázání komunikace trvá průměrně patnáct až dvacet sekund. 33
46 34 5. Realizace
47 6. Testování Testování jako takové není jednorázovou akcí, ale probíhá v rámci celého procesu vývoje. Cílem je chyby v softwaru objevit, nikoli poukázat na to, že v něm nejsou. Jestliže nalezneme jen velmi málo chyb, neznamená to, že je software dokonalý, ale pravděpodobně je prováděno špatné testování. V jistých případech je optimální nechat tuto činnost na nezúčastněné třetí straně. Typů testů je samozřejmě velké množství, ale pro tak malý projekt, jakým je hra Piškvorky, postačí, pokud se jakožto vývojáři budeme soustředit na obyčejné funkční testování. To budeme provádět manuálním procházením možných stavů hry, nejlépe dle předem připravených a promyšlených scénářů. Obvykle je dobré pokusit se také o vyvolání nestandardních situací chováním, které běžný uživatel neprovádí. V našem případě by se mohlo jednat o rychlé po sobě jdoucí pseudonáhodné stisky kláves zejména v okamžicích, kdy je předpokládáno, že uživatel pouze pasivně přijímá informace z displeje. Pochopitelně již během vývoje došlo k odstranění mnoha chyb, jež byly nalezeny při prezentování průběžných verzí aplikace. Mezi nejvýraznější pak lze zařadit tyto: - V programovém kódu byla nevhodně použita metoda ready(), která testovala, zda jsou na otevřeném Bluetooth spojení nějaká data k přijetí. Ta zajistila, že metoda recieve(byte [] in- Buf) neblokovala běh vlákna, ve kterém byla zavolána. Jelikož tato činnost probíhala v odděleném vlákně, docházelo k neustálému testování příchozího spojení a zbytečně se tak vyčerpávaly výpočetní prostředky. V extrémních případech nastala situace, kdy bylo omezeno samotné vykreslování grafiky aplikace. - Dále docházelo k nekorektnímu uzavření komunikačního kanálu po ukončení rozehrané hry a odchodu zpět do menu. To mělo za následek znemožnění startu nového serveru a klienta hry bez restartování celého programu. - Chybová situace také nastala v momentě, kdy klientská strana spustila vyhledávání herního serveru hry Piškvorky a v jejím okolí se nacházelo jiné aktivní Bluetooth zařízení. Program po jeho detekování automaticky předpokládal, že našel očekávaný objekt svého zájmu a informoval uživatele o nalezení protihráčova telefonu. Po nezdaru při hledání samotné hry byl chybně ukončen celý proces prohledávání okolí. - Během příchozího hovoru zvolil oponent možnost odpojení ze hry a následně se rozhodoval, zda chce celý program ukončit nebo se vrátit do menu. Pokud byl v tuto chvíli hovor ukončen, došlo na straně oponenta k nevyžádanému znovuspuštění hry, ačkoliv příjemce hovoru byl informován o tom, že se protihráč odpojil. - Nedostatečně řešená situace nastala též v případě, kdy se hrající telefony vzdálily natolik, že došlo ke ztrátě spojení. Vznikla proto dříve uvedená úloha detekující existenci aktivního spojení. 35
48 6. Testování 6.1. Funkční testování (Functional Testing) Ve výčtu výše uvedených odstraněných chyb, výjimek a různých hraničních případů by bylo možno dlouze pokračovat. Raději se však soustřeďme na testování finální verze programu. To nejdříve probíhalo na emulátorech několika typů všech obecně známých výrobců Nokia, Sony-Ericsson, Motorola, Siemens. Rozhodně není nutné, abychom zde předváděli schopnost aplikace navázat spojení, hrát hru a následně ji prohlásili za bezchybnou. Raději se pokusíme v reálném nasazení navodit situace, které nejsou vhodně programově ošetřeny. Při testování byly použity tyto typy telefonů: Nokia 6230, Nokia 6230i, Nokia 6300, Nokia N90, Siemens SK65, Sony-Ericsson K750, Sony-Ericsson K530i. Během testování lokálního běhu programu byly odhaleny tyto chyby: - Několikrát nedošlo k zobrazení textového obsahu položek Help a Author s Info po dokončení animace z hlavního menu. Tato chyba se vyskytovala v náhodném sledu a nepodařilo se odhalit podnět, který ji vyvolává. Přechod do těchto sekcí menu je tedy nevhodně ošetřen nebo nedostatečně kontrolován. - Pokud uživatel stiskem potvrzovacího tlačítka vybere kteroukoli nabídku v hlavním menu aplikace a v krátkém okamžiku poté taktéž stiskne pravý soft key, který slouží k opuštění programu, je původní volba přebita novou a hra se ukončí. Pravý soft key je tedy příliš pozdě vyřazen z činnosti. - Opakem je situace, kdy necháme animaci do nové úrovně menu provést. V okamžiku, kdy je tento přechod dokončen, stiskneme krátce levý soft key, který slouží pro návrat do nadřazeného menu. Tato činnost nemá za následek vyvolání zpětné animace, ale způsobí vykreslení špatného nadpisu aktuální vrstvy menu. Tento nadpis je převzat z nadřazené úrovně, do které by nás stisk klávesy měl vrátit. Levý soft key je tedy příliš brzy uveden v činnost. Při testování síťové činnosti byly zjištěny tyto nedostatky: - Vytvoří-li jeden z hráčů herní server a během čekání na klienta přijme hovor, je stále umožněno navázání spojení (pokud byly dříve telefony spárovány). Chybou v tomto případě je, že klient není po připojení do hry o situaci na druhé straně informován tak, jak k tomu běžně dochází kdykoliv během hry. Zajisté by se našlo mnoho dalších chyb v závislosti na tom, kolik času se do této činnosti vloží. Čím větší a nákladnější projekt je, tím vyšší nároky by na jeho funkční testování měly být kladeny. Z našeho pohledu bude ale zajímavější výsledek testování, které bude prováděno přímo běžnými zákazníky Testování použitelnosti (Usability Testing) Ze strany vývojáře, který tvoří aplikaci od jejích počátků, se veškeré rozmístění prvků zdá intuitivní. Realita je ovšem jiná, a proto ke zjištění, zda je uživatelské rozhraní lehce ovladatelné a dobře pochopitelné, využíváme testování použitelnosti, které je prováděno typickým koncovým uživatelem. Tomu 36
49 6. Testování zadáme sadu úkolů a sledujeme, jak si při jejich řešení poradí. Základní oblasti, jež následně vyhodnocujeme, jsou: - čas, který vyřešení úloh vyžadovalo - počet chyb, kterých se při jejich řešení uživatel dopustil - subjektivní pocit uživatele po dokončení testu V našem případě bude tento typ testování probíhat současně u dvou osob, které mají běžné zkušenosti s elektronickými přístroji. Budou mít za úkol nalézt předem nainstalovanou hru Piškvorky ve svém mobilním telefonu, seznámit se s grafickým rozhraním a následně spustit a sehrát hru. Nastane-li krizová situace, při které si nebudou vědět rady, pokusí se ji vyřešit samy. Později mohou požádat o radu přítomného moderátora znajícího kompletní rozhraní hry. Během testu bylo získáno mnoho podnětů, na jejichž základě vzniklo několik nápadů pro různá vylepšení, ale ty už ponecháme na případném budoucím rozšíření aplikace. Jediné, co se dodatečně změnilo, byla sekce Help. Ta je nyní lépe strukturovaná a obsahuje více informací. Ačkoliv byly při řešení prvního úkolu očekávány problémy, prokázaly oba subjekty dobrou znalost svých přístrojů a vyřešily tento úkol uspokojivě rychle. Následně jim byl ponechán čas pro seznámení s aplikací. Prohlédly si jednotlivé položky menu, zkoušely měnit nastavení hry a zběžně pročetly sekci Help a Author s Info. Závěr Jediná připomínka, která byla v této fázi prezentována, se týkala nastavení. Separované ikony pro odlišení funkcí zapnutí a vypnutí jednotlivých položek by se daly sloučit do jedné pozice a měnily by se podle jejich aktuálního stavu. Problémy nastaly až při startu samotné hry. Přestože oba uživatelé při své práci běžně používají počítač, hierarchická struktura server-klient pro navázání spojení jim není vlastní. Z pozdějších reakcí vyplynulo, že ke zhoršení situace také přispěly nevhodné grafické ikony, kdy server je reprezentován zámkem a klient klíčem, který se do zámku zasune. Závěr Alternativní model pro reprezentaci jednotlivých módů hry byl zvažován, ale konkrétní řešení ve spojení s uživateli nebylo nalezeno. Po osvětlení významu dané síťové struktury se přešlo k prvnímu pokusu o navázání spojení. Ten byl z důvodů uvedených v kapitole 5.3 bohužel neúspěšný. Jelikož uživatelé při prvním běhu programu netušili, kolik času je potřeba pro navázání spojení, bezvýsledně vyčkávali po dlouhou dobu, zda hra začne. Pokud by v této situaci opětovně nezasáhnul moderátor, nastal by konec testu, protože řešení daného problému nebylo v sekci Help dostatečně vysvětleno. Při druhém pokusu již celý proces připojování proběhnul v pořádku a hra byla spuštěna. 37
50 6. Testování Závěr Východisko z celé situace může přinést časový limit, během kterého musí dojít k navázání komunikace, jinak bude uživatel vrácen zpět do menu. Optimální hodnotou by mohlo být šedesát sekund a aktuální stav odpočítávání času by se zobrazoval klientovi na displeji. První kontakt s herním prostředím byl relativně pozitivní, ale během několika minut se objevily návrhy, jak ho zpříjemnit. V globále se jednalo o náměty, které se dotýkaly momentu, kdy je protihráčův symbol umístěn na náš displej nebo v horším případě, kdy je položen mimo výřez aktuálně zobrazené plochy. Jestliže v tuto chvíli hráč promýšlí svůj další tah a je plně soustředěn na rozložení křížků a koleček na hrací ploše, pravděpodobně si nevšimne informace v pravém horním rohu, která ho upozorňuje, že je na tahu. Tak se tomu stalo i u testovaných subjektů. Závěr Vzniklo několik podnětů, jak tento problém řešit. Prvně uvedeným bylo krátkodobé zobrazení hlášky YOU na středu hrací plochy při změně stavu hry. To by se dalo rozšířit o vibraci a eventuální zablikání umístěného symbolu. V případě, kdy je tento symbol navíc položen mimo displej, může nastat posun hrací plochy tak, aby byl protihráčův tah viditelný. Poslední otázkou zůstává, zda by si oba uživatelé poradili s instalací hry do mobilního telefonu například podle návodu, který je uveden v příloze E Uživatelské příručka. Na stupnici od jedné do pěti, kde jednička je nejlepší a pětka nejhorší, dostala aplikace známku za dva. Celkový dojem byl velmi dobrý, ale podle uvedených připomínek je zjevné, že se ještě nemůže jednat o kompletní komerční produkt. V úplném závěru byla uživatelům položena otázka, zda by si testovaný produkt koupili a případně za jakou cenu. Oba se shodli, že ano a nabízené částky byly 30 a 50 Kč, které zhruba odpovídají obvyklým cenám aplikací v tomto segmentu trhu. Atraktivní pro ně byla zejména možnost sehrát partii kdykoliv a kdekoliv by chtěli. Člověk tak nemusí přemýšlet, zda si kupříkladu k věcem na pláž má přibalit čtverečkovaný papír pro případ, že by si chtěl Piškvorky zahrát. Velké plus, které by samozřejmě navýšilo nabízenou částku, je v potenciálu rozšíření aplikace na sadu her. 38
51 7. Závěr 7.1. Možná vylepšení Případný další vývoj můžeme z obecného hlediska rozdělit do dvou základních větví. Jednou by bylo rozšíření samotné hry o další novinky a druhou úprava programového kódu, který se zejména díky nevhodným programovým konstrukcím stal těžkopádným a zbytečně nabobtnalým. Do první kategorie můžeme zařadit tyto ideje: - Pro úplnost programu je třeba rozšířit aplikaci o možnost hry jednoho hráče proti uměle vytvořenému algoritmu Single player mód. - Problémem, který není nijak ošetřen a nastane zejména u malých displejů, je stav, kdy protihráč umístí svůj symbol mimo výřez naší aktuálně zobrazené plochy. Uživatel díky informaci v záhlaví zjistí, že je na tahu, ale bohužel už se nedozví, kde je protihráčům symbol umístěn a musí ho sám hledat. Řešení by mohl tvořit automatický přesun selektoru na pozici, kde hrál soupeř, což by současně vyvolalo adekvátní posun hrací plochy. - Určitá skupina uživatelů by také ocenila možnost ovládání aplikace pomocí dotykového pera. - U mobilních aplikací je standardem uvítací obrazovka (splashscreen), kterou zde zatím nenaleznete. Měla by obsahovat základní informace o produktu a autorovi. Z pohledu uživatele se jedná o komponentu, která ho spíše zdržuje, než zajímá, a proto zatím nebyla implementována. - Hodnoty v nastavení aplikace by měly zůstat pevně dané i po znovuspuštění aplikace. - Pro porovnání schopností hráčů by mohla být zavedena dlouhodobá statistika výher a proher. - Uživateli by měl být nabídnut seznam dostupných herních serverů v jeho okolí, respektive nemělo by docházet k připojování na první úspěšně nalezené zařízení. - Větší zájem uživatelů by přineslo rozšíření aplikace na sadu her, které lze hrát přes Bluetooth mezi dvěma hráči šachy, dáma, lodě, renju, apod. V oblasti programového kódu by se další vývoj měl soustředit na tyto oblasti: - Primárně musí být odstraněny chyby uvedené v kapitole Přepracovat kostru programu do přechodového automatu namísto neustálého vyhodnocování proměnných typu boolean. - Provést centralizaci textu a číselných konstant do zvláštní třídy. - Využít vláknově bezpečné vykreslování grafického rozhraní pomocí metody callserially(runnable runnable). - Pomocí systémové vlastnosti microedition.platform detekovat typ hostitelského prostředí (Nokia, Sony-Erocsson, atd.), na kterém aplikace běží a od toho odvodit způsob ovládání. - Pro dlouhodobé uložení potřebných informací vytvořit třídu pracující s RMS záznamy. 39
52 7. Závěr 7.2. Zhodnocení splnění cílů BP Pro demonstraci zvládnuté problematiky měla být implementována ukázková aplikace Piškvorky v alespoň jedné z těchto dvou variant: - v offline verzi pro jednoho hráče s vestavěnou herní logikou protihráče - v online verzi pro dva hráče s podporou serveru Vývoj, který se soustředil na druhou variantu, byl tak zjednodušen o implementaci umělého algoritmu, ale musel se potýkat s problémy, které mohou nastat při síťové komunikaci. Tím spíše, že do běhu programu současně zasahují dva uživatelé, což přináší mnohem více hraničních situací. Složitost jejich odstranění navíc rostla i s nezanedbatelným zpožděním, které při přenosu dat skrz Bluetooth vzniká. Hlavním cílem pak byla snaha o vytvoření univerzálního programu, který poběží na všech typech telefonů nezávisle na velikosti displeje nebo odlišných číselných kódech kláves při použití nízkoúrovňových komponent. To se podařilo, ale výsledný kód aplikace je tak zatížen o nepotřebné informace, které vždy využije jen ten či onen typ telefonu. Dále musela být zvolena kompromisní velikost grafických elementů, aby i uživatelé s malými displeji mohli bez problémů ovládat menu a hrát hru. To způsobilo, že někde vypadají tyto prvky příliš malé a jinde naopak příliš velké. Z výše uvedených závěrů vyplývá, že při komerční tvorbě mobilních aplikací není vhodné psát pouze jeden programový kód s jedním typem rozlišení grafických elementů. Pro tvorbu takovýchto aplikací je dobré vytvořit základní kostru programu, nad kterou dojde k rozšíření o konkrétní specifika jednotlivých typů telefonů. Uživateli je následně nabídnuta verze určená přesně pro jeho přístroj Osobní přínos Výslednou kvalitu programu také ovlivnila nevhodná a nedostatečně provedená analýza před zahájením samotného vývoje programu. Tato zkušenost, která je u podobných studentských prací běžná, bude pro mne zajisté dobrým přínosem do budoucna. Další zkušeností, kterou jsem si během vývoje osvojil, je práce s texty psanými v angličtině. Bohužel ne vše, co člověk při seznamování s novou technologií potřebuje prostudovat, nalezne v českém jazyce. Zvláště jedná-li se o tak specifickou oblast, jakou jsou mobilní aplikace. Z pohledu vývojáře pak byl největším přínosem test prováděný koncovými uživateli. Programátor si až v této chvíli uvědomí, co je a co není v celkové struktuře programu důležité. Také jsem rád, že jsem si vyzkoušel tvorbu programových konstrukcí, které pracují s Bluetooth připojením. Tento typ bezdrátové komunikace nabývá v dnešní době na významu a předpokládám, že jsem se s ním nesetkal naposledy. Dle ohlasu okolí na mou aplikaci jsem došel k subjektivnímu názoru, že za současné situace ani v blízké budoucnosti nebude programování v J2ME pro mobilní telefony příliš komerčně perspektivní. Schopnější uživatel si na Internetu vyhledá velké množství volně dostupných her včetně těch síťových, a nemá důvod, aby za ně platil. Navíc pro nemálo lidí je hraní her na telefonech velkou neznámou, 40
53 7. Závěr natož aby si k této činnosti na svém přístroji zapínali Bluetooth. Přínos této práce pro mne spočívá zejména v přístupu k novým technologiím, které neovládám. Má-li člověk chuť a zájem (v dnešní době také i čas), veškeré potřebné informace nalezne. Dále záleží už pouze na něm, jak velkým odborníkem pro danou oblast se stane. Stále totiž platí rčení, které zejména v oblasti softwarových informačních technologií nabývá zajímavého rozměru: Kolik jazyků znáš, tolikrát jsi člověkem. 41
54 42 7. Závěr
55 A. Seznam použité literatury [1] Topley, K.: J2ME v kostce pohotová referenční příručka. Grada Publishing, a.s., Praha, [2] Qusay, H. M.: Naučte se Java 2 Micro Edition. Grada Publishing, a.s., Praha, [3] Herout, P.: Učebnice jazyka Java. Kopp, České Budějovice, [4] Specifikace konfigurací CLDC 1.0 a [5] Specifikace konfigurace CDC 1.0 a [6] Specifikace profilů MIDP 1.0 a [7] Specifikace Java API for Bluetooth [8] Specifikace Bluetooth technologie [9] Seriály o programování aplikací pro J2ME [10] Série článků o J2ME a Bluetooth na anglické a české Wikipedii [11] Developerské stránky profilu MIDP od společnosti SUN [12] Developerské stránky výrobců mobilních telefonů
56 A. Seznam použité literatury [13] Developerské stránky k NetBeans Mobility Pack [14] Představení funkcí poskytovaných vývojovým prostředím NetBeans pro tvorbu v J2ME [15] Databáze mobilních zařízení [16] Přehled novinek v MIDP [17] Archiv volně šiřitelných ikon [18] Dokumentace aplikačního rozhraní profilu MIDP [19] Dokumentace aplikačního rozhraní JSR82 (Bluetooth API a OBEX API) [20] Pravidla hry Piškvorky Všechny webové zdroje byly k funkční. 44
57 B. Seznam obrázků Obr. 1-1 Star Obr. 1-2 Schéma rozdělení jednotlivých edic Javy... 2 Obr. 1-3 Screenshot z ukázkové hry pro mobilní telefon... 3 Obr. 3-1 Základní přehled architektury J2ME... 7 Obr. 3-2 Životní cyklus MIDletu Obr. 3-3 Standardní rozložení kláves Obr. 3-4 Bluetooth Protocol Stack, převzato z [7] Obr. 3-5 Vztahy mezi Bluetooth profily, převzato z [7] Obr. 4-1 Návrh diagramu tříd Obr. 5-1 Menu hry Obr. 5-2 Herní pole Obr. 5-3 Výherní směry Obr. E-1 Nastavení přístupových práv rozhraní Bluetooth na počítači Obr. E-2 Průvodce pro přenos souborů pomocí rozhraní Bluetooth Obr. E-3 Zadaní číselného kódu Obr. E-4 Založení hry
58 46 B. Seznam obrázků
59 C. Seznam tabulek Tab. 3-1 Vlastnosti virtuálních strojů v J2ME... 9 Tab. 3-2 Třídy zděděné konfigurací CLDC z J2SE Tab. 3-3 Systémové vlastnosti Tab. 3-4 Hardwarové požadavky profilu MIDP Tab. 3-5 Standardní kódy kláves a herních akcí dle třídy Canvas Tab Standardní kódy kláves a herních akcí dle třídy GameCanvas Tab. 3-7 Klávesy telefonů Nokia Tab. 3-8 Klávesy telefonů Sony-Ericsson Tab. 3-9 Klávesy telefonů Siemens Tab Klávesy telefonů Motorola řad A1, A4, A Tab Klávesy telefonů Motorola řad A3, A Tab Popis protokolů z Bluetooth specifikace Tab Popis profilů z Bluetooth specifikace Tab Další volitelné balíčky J2ME Tab. 4-1 Specifikační termíny Tab. E-1 Přehled všech předdefinovaných atributů souboru manifest.mf a deskriptoru aplikace.. 51 Tab. E-2 MIME typ souboru jad a jar
60 48 C. Seznam tabulek
61 D. Seznam zkratek API Application Programming Interface, programové rozhraní aplikace CDC Connected Device Configuration, konfigurace v prostředí J2ME CLDC Connected Limited Device Configuration, konfigurace v prostředí J2ME CVM Compact Virtual Machine, virtuální javový stroj pro konfiguraci CDC GAP Generic Access Profile, základní profil pro všechny profily definované ve specifikaci Bluetooth GC Garbage collection, část programovacího jazyka, která vyhledává nepoužívané části paměti pro jejich další využití GIF Graphics Interchange Format, grafický formát určený pro rastrovou grafiku GMT Greenwich Mean Time, čas platný v pásmu nultého poledníku HCI Host Controller Interface, zajišťuje komunikaci mezi hardwarem a softwarem Bluetooth přístroje IDE Integrated development environment, vývojové prostředí usnadňující tvorbu programů JCP Java Comunnity Process, proces používaný k vývoji nových součástí platformy Java JDK Java Development Kit, soubor základních nástrojů pro vývoj aplikací na platformě Java JSR Java Specification Request, dokument specifikující využití nové technologie přidané do Javy JVM Java Virtual Machine, virtuální javový stroj pro standardní edici Javy J2EE Java 2 Enterprise Edition, edice programovacího jazyku Java J2ME Java 2 Micro Edition, edice programovacího jazyku Java J2SE Java 2 Standard Edition, edice programovacího jazyku Java KVM Kilobyte Virtual Machine, virtuální javový stroj pro konfiguraci CLDC L2CAP Logical Link Control and Adaptation Protocol, Bluetooth protokol pro správu přenosů dat MAC Media Access Control, jedinečný identifikátor síťového zařízení MIDlet, aplikace podle standardu MIDP MIDP Mobile Information Device Profile, profil rozšiřující konfiguraci CLDC MIME Multipurpose Internet Mail Extensions, standard umožňující zasílání dat různých formátů OBEX OBject EXhange, Bluetooth protokol pro výměnu objektů v binární podobě OTA Over The Air, definuje oficiální způsob, jak instaloval MIDlety na telefony PAN Personal Area Network, síť dosahem několika metrů PNG Portable Network Graphics, grafický formát určený pro bezeztrátovou kompresi rastrové grafiky RFCOMM Radio Frequency Communication, Bluetooth protokol emulující sériový port RS-232 RMS Record Management System, systém pro přístup k dlouhodobě uloženým záznamům SDAP Service Discovery Application Profile, Bluetooth profil specifikující, jak vyhledat registrované služby na vzdálených zařízeních 49
62 D. Seznam zkratek SDP Service Discovery Application Profile, Bluetooth protokol pro vyhledání vzdálených zařízení SPP Serial Port Profile, Bluetooth profil specifikující použití protokolu RFCOMM GOEP Generic OBject EXchange Profile, základní datový Bleutooth profil 50
63 E. Uživatelská příručka Následující text byl z části převzat ze zdroje (funkční k ). Zabalení aplikace - teorie Aplikace se skládá ze dvou základních souborů, které mají strukturu danou specifikací MIDP. Jsou to deskriptor aplikace a JAR soubor. Této dvojici souborů se říká sada MIDletů (midlet suite). V JAR souboru je zabalen jeden či více MIDletů. Tento soubor obsahuje: - Manifest soubor - Java třídy pro MIDlety - Ostatní zdroje jako například obrázky Manifest soubor se v JAR souboru nachází v adresáři META-INF a jmenuje se manifest.mf. Má, stejně jako deskriptor aplikace, formát jméno_atributu: hodnota atributu a musí obsahovat všechny povinné atributy, kterými jsou MIDlet-Name, MIDlet-Version, MIDlet-Vendor, MIDlet-<n> pro každý MIDlet, MicroEdition-Profile, MicroEdition-Configuration. Pokud některý z nich nebude zahrnut, mohou telefony tuto sadu MIDletů odmítnou. Přehled všech předdefinovaných atributů sady MIDletů s ukazuje následující tabulka: Popis atributu MIDlet-Name Název sady MIDletů, kterým se identifikuje uživateli. MIDlet-Version Specifikuje verzi sady MIDletů používanou při aktualizaci aplikace. MIDlet-Vendor Poskytovatel sady MIDletů MIDlet-Icon Jméno png souboru uvnitř JAR souboru, který je použit jako ikona aplikace. MIDlet-Description Popis sady MIDletů. MIDlet-Info-URL URL, kde je možné najít další informace o této sadě MIDletů. MIDlet-<n> Jméno, ikona a název hlavní třídy n-tého MIDletu. Odděleno čárkami MIDlet-Jar-URL URL, odkud je možné stáhnout jar soubor této sady MIDletů. MIDlet-Jar-Size Velikost JAR souboru. MIDlet-Data-Size Minimální velikost paměti, kterou tato sada MIDletů potřebuje pro uložení trvalých dat. MicroEdition-Profile Požadovaný J2ME profil, např. MIDP-1.0 MicroEdition-Configuration Požadovaná J2ME konfigurace, např. CLDC-1.0 Tab. E-1 Přehled všech předdefinovaných atributů souboru manifest.mf a deskriptoru aplikace Deskriptor aplikace je textový soubor, který má stejný formát jako manifest soubor. Jmenuje se jmeno_sady_midletu.jad. Při instalaci sady MIDletů se nejprve do telefonu přenese deskriptor aplikace a JAR soubor se nahrává podle atributů v něm obsažených. Následující atributy jsou povinné MIDlet- Name, MIDlet-Version, MIDlet-Vendor, MIDlet-Jar-URL, MIDlet-Jar-Size. Kromě povinných atributů může deskriptor obsahovat další libovolné atributy, které nezačínají řetězcem MIDlet. K těmto atributům má programátor přístup metodou getappproperty(string key) z 51
64 E. Uživatelská příručka třídy MIDlet. Pozor na to, že telefony značky Siemens umějí načíst atribut maximálně 255 znaků dlouhý. Také není dobrým nápadem vkládat do manifestu české znaky. Zabalení aplikace - praxe V praxi za Vás zabalení zdrojových souborů provádí vývojové prostředí. To umožňuje vytvoření více projektových konfigurací, které specifikují, jaké informace mají být přibaleny do deskriptoru a manifestu v závislosti na tom, pro který typ telefonu je aktuálně aplikace kompilována. Instalace Existuje několik způsobů, jak nahrát aplikaci do telefonu, z nichž každý telefon podporuje odlišnou podmnožinu. Možnosti jsou následující: - Datový kabel - Infračervený port - Bluetooth - OTA (Over The Air neboli vzduchem) - wap Dle specifikace profilu MIDP je OTA jediným oficiálním způsobem jak aplikaci do telefonu nahrát. Abyste ji mohli z Internetu stáhnout, potřebujete soubory jar a jad umístit na http server. Na něm pak musí být správně nastavený MIME typ, aby je software v telefonu dokázal rozpoznat viz tabulka 17. Teď už jen stačí zkopírovat deskriptor a JAR na Váš server a zadat do telefonu adresu deskriptoru. MIME typ.jad text/vnd.sun.j2me.app-descriptor.jar application/java-archive Tab. E-2 MIME typ souboru jad a jar Nejpříjemnějším způsobem jak aplikaci nainstalovat, je ovšem pomocí Bluetooth spojení z počítače za předpokladu, že Vám telefon to umožní. Postup je následující: 1. Aktivovat Bluetooth zařízení na počítači i telefonu. 2. U obou zařízení povolit viditelnost pro okolí. Mobilní telefon nabízí tuto možnost většinou ve stejném menu, kde se Bluetooth zapíná. U počítače s operačním systémem Windows XP přejdeme do Ovládacích panelů, kde vybereme položku Zařízení Bluetooth. V záložce Možnosti nastavíme stejné hodnoty jako na obrázku Následně pravým tlačítkem klikneme na soubor s příponou jar, zvolíme položku Odeslat a v rozbaleném kontextovém menu vybereme Zařízení Bluetooth. Pokud vše proběhlo v pořádku, objeví se nám průvodce pro přenos souborů pomocí rozhraní Bluetooth viz obrázek Poté stiskneme tlačítko Procházet, které spustí vyhledávání aktivních Bluetooth zařízení v okolí počítače. Nově otevřeno okno Vybrat Bluetooth zařízení by nám mělo nabídnout mobilní zařízení, na které chceme aplikaci nahrát. Klikněte na něj a výběr potvrďte tlačítkem OK. 5. Nyní je doporučeno zadat číselný kód použitý pro identifikaci účastníků komunikace. V našem případě jsme použili standardní sekvenci 1234 tak, jak to vidíte na obrázku
65 Obr. E-1 Nastavení přístupových práv rozhraní Bluetooth na počítači Obr. E-2 Průvodce pro přenos souborů pomocí rozhraní Bluetooth Obr. E-3 Zadaní číselného kódu 53
JAVA. Java Micro Edition
JAVA Java Micro Edition Přehled předchůdci Personal Java (1997) Embeded Java (1998) definice JME přes JCP JCP Java Community Process JME není jeden balík SW sada technologií a specifikací definuje konfigurace
(JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš
Java Micro Edition (JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš O čem se dnes budeme bavit O platformě JME Základní rozdělení JME CLDC MIDP MIDlet(y) a MIDLet suite Ukázky 2 programů IMP CDC
JAVA. Java Micro Edition
JAVA Java Micro Edition Přehled předchůdci Personal Java (1997) Embedded Java (1998) definice JME přes JCP JCP Java Community Process JME není jeden balík SW sada technologií a specifikací definuje konfigurace
Semestra lnı pra ce z prˇedmeˇtu : Mobilnı komunikace Popis profilu Bluetooth zar ˇı zenı Autor Libor Uhlı rˇ
Semestrální práce z předmětu : Mobilní komunikace Popis profilů Bluetooth zařízení Autor Libor Uhlíř OBSAH 1 Profily 3 1.1 GAP - Generic Access Profile.................... 3 1.2 SDAP - Service Discovery
Úvod Arachne je projekt, který si bere za cíl poskýtovat informace prostřednictvým mobilních telefonů studentům týkající se jejich studia na Západočeské Univerzitě v Plzni. Má snahu takto částečně paralelizovat
VirtualBox desktopová virtualizace. Zdeněk Merta
VirtualBox desktopová virtualizace Zdeněk Merta 15.3.2009 VirtualBox dektopová virtualizace Stránka 2 ze 14 VirtualBox Multiplatformní virtualizační nástroj. Částečně založen na virtualizačním nástroji
SCADA systémy na platformě mobilních zařízení
SCADA systémy na platformě mobilních zařízení Ondřej Krejcar, Stanislav Slíva Katedra měřicí a řídicí techniky, FEI, VŠB Technická univerzita Ostrava 17. listopadu 15, 708 33, Ostrava-Poruba Ondrej.Krejcar@vsb.cz,
9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,
9. Sítě MS Windows MS Windows existoval ve 2 vývojových větvích 9x a NT, tyto později byly sloučeny. V současnosti existují aktuální verze Windows XP a Windows 2003 Server. (Očekává se vydání Windows Vista)
Technologie Java. Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/
Technologie Java Jaroslav Žáček jaroslav.zacek@osu.cz http://www1.osu.cz/~zacek/ Trocha historie Java vznikla v roce 1995 jak minimalistický programovací jazyk (211 tříd). Syntaxe vycházela z C/C++. V
ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE
2011 Technická univerzita v Liberci Ing. Přemysl Svoboda ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE V Liberci dne 16. 12. 2011 Obsah Obsah... 1 Úvod... 2 Funkce zařízení... 3 Režim sběru dat s jejich
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULTIMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího
Hra lodě v mobilním prostředí
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů Bakalářská práce Hra lodě v mobilním prostředí Zdeněk Klíma Vedoucí práce: Ing. Ondřej Poláček Studijní program: Softwarové
Windows a real-time. Windows Embedded
Windows a real-time Windows Embedded Windows pro Embedded zařízení Současnost (2008): Windows Embedded WINDOWS EMBEDDED Windows Embedded CE Windows XP Embedded Windows Embedded for Point of Service Minulé
ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEIV - 2.3.1.1 Windows server 2003 (seznámení s nasazením a použitím)
Object 12 3 Projekt: ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Téma: MEIV - 2.3.1.1 Windows server 2003 (seznámení s nasazením a použitím) Obor: Mechanik Elektronik Ročník: 4. Zpracoval(a): Bc. Martin Fojtík Střední
1. Dědičnost a polymorfismus
1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář
Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
Profilová část maturitní zkoušky 2013/2014
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA
Motorola Phone Tools. Začínáme
Motorola Phone Tools Začínáme Obsah Minimální požadavky... 2 Před instalací aplikace Motorola Phone Tools... 3 Instalace aplikace Motorola Phone Tools... 4 Instalace a konfigurace mobilního zařízení...
Xtreamer Wonder. Uživatelská příručka CZ
Xtreamer Wonder Uživatelská příručka CZ Děkujeme Vám za zakoupení Xtreamer Wonder Xtreamer Wonder je zcela nový media hub na bázi Android 4.4 KitKat s čtyřjádrovým ARM Cortex A9 procesorem a grafikou Mali
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13
Obsah Předmluva 11 O této knize 13 Konvence........................................................13 Inovace prostřednictvím otevřenosti 15 Ekosystém Symbianu.............................................16
Vytváření a použití knihoven tříd
Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce
Vývoj OS Windows Mobile. Ing. Jiří Šilhán
Vývoj OS Windows Mobile Ing. Jiří Šilhán Počátky vývoje Windows Mobile (též označovaný jako Windows CE) začíná roku 1992. Hlavním cílem bylo vyvinout mobilní zařízení s operačním systémem Windows. Myšlenkou
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
B Series Waterproof Model. IP Kamera. Uživatelský manuál
B Series Waterproof Model IP Kamera Uživatelský manuál Obsah 1 ÚVODEM... 3 2 VZHLED A ROZHRANÍ... 3 3 PŘIPOJENÍ KE KAMEŘE Z VAŠÍ LAN SÍTĚ... 4 4 PŘIPOJENÍ KAMERY PŘES WAN ROZHRANÍ... 8 5 DALŠÍ NASTAVENÍ...
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových
Pokročilé architektury počítačů
Pokročilé architektury počítačů Tutoriál 2 Virtualizace a její dopady Martin Milata Obsah Virtualizace Jak virtualizace funguje Typy HW podpora virtualizace Dopady virtualizace Jak virtualizace funguje?
Software programové vybavení. 1. část
Software programové vybavení 1. část Software Vše co není HW je SW = pojem se někdy vztahuje jak na programy, tak na data Oživuje hardware (zdaleka ne jen počítače) Je-li přítomen procesor, musí být i
monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura
IBM PC 5150 MS DOS 1981 (7 verzí) DR DOS, APPLE DOS, PC DOS 1. 3. Windows grafická nástavba na DOS Windows 95 1. operační systém jako takový, Windows XP 2001, podporovány do 2014, x86 a Windows 2000 Professional
Konektory a Kabely. Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení
Karel Johanovský Michal Bílek SPŠ-JIA Konektory a Kabely Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení 1 Zařízení integrovaná do MB Základní deska se
Mini adaptér USB2.0 -> Bluetooth 2.0, class II (10m) Katalogové číslo: 15.92.7520
Mini adaptér USB2.0 -> Bluetooth 2.0, class II (10m) Katalogové číslo: 15.92.7520 Úvod Model Mini adaptér USB2.0 -> Bluetooth 2.0, class II (10m) je adaptér Bluetooth Class 2 s dosahem do vzdálenosti 10m.
Profilová část maturitní zkoušky 2017/2018
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA
TC-502L. Tenký klient
TC-502L Tenký klient Popis přístroje Tenký klient s kompletní podporou pro připojení do systémů Windows 7, Vista, Windows 2008, Windows 2003, Windows XP Pro, Linux servery. Disponuje 1x rozhraním LAN 10/100,
Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost
Registrační číslo projektu: CZ.1.07/1.5.00/34.0553 Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost Projekt je realizován v rámci Operačního programu Vzdělávání pro konkurence
EXTRAKT z mezinárodní normy
EXTRAKT z mezinárodní normy Extrakt nenahrazuje samotnou technickou normu, je pouze informativním materiálem o normě ICS: 03.220.01; 35.240.60 Komunikační infrastruktura pro pozemní mobilní zařízení (CALM)
TC-502L TC-60xL. Tenký klient
TC-502L TC-60xL Tenký klient Popis přístroje Tenký klient TC-502L s kompletní podporou pro připojení do systémů Windows 7, Vista, Windows 2008, Windows 2003, Windows XP Pro, Linux servery. TC-604 navíc
MOBILNÍHO TELEFONU S BLUETOOTH
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INTELIGENTNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS OVLÁDÁNÍ DESKTOPOVÉ
Obsah. Zpracoval:
Zpracoval: houzvjir@fel.cvut.cz 03. Modelem řízený vývoj. Doménový (business), konceptuální (analytický) a logický (návrhový) model. Vize projektu. (A7B36SIN) Obsah Modelem řízený vývoj... 2 Cíl MDD, proč
Aplikace pro mobilní zařízení Semestrálná práce z Y36MM1
České vysoké učení technické v Praze Fakulta elektrotechnická Softwarové technologie a management Aplikace pro mobilní zařízení Akademický rok 2008/2009, LS Jiří Chadima chadij1@fel.cvut.cz Jiří Mašek
Nastavení telefonu Nokia N9
Nastavení telefonu Nokia N9 Telefon Nokia N9, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již přednastaveny. Některé položky v
Vzdálený přístup k počítačům
Vzdálený přístup k počítačům jedna z nejstarších služeb vzdálený přístup k sálovým počítačům nejprve vzdálené terminály později terminálová emulace jako jedna ze služeb počítačové sítě současnost využíváno
TÉMATICKÝ OKRUH Softwarové inženýrství
TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta
TCP-Wedge ZDARMA. Přidává podporu TCP/IP: Sběr dat z adres portu IP na libovolné síti TCP/IP - ethernet / internet.
Katalogový list www.abetec.cz Software WinWedge Professional pro sběr dat 15-1003E Obj. číslo: 106001285 Výrobce: Mark-10 Corporation Anotace Přenáší data do libovolného programu Windows. Poskytuje plný
Programovací software ConfigTool. Základní obsluha a postup připojení k zařízení přes USB a GPRS. Verze 2.00
Programovací software ConfigTool Základní obsluha a postup připojení k zařízení přes USB a GPRS Verze 2.00 Vážený zákazníku. Tento stručný uživatelský manuál Vás přehlednou a jednoduchou formou seznámí
Software pro vzdálenou laboratoř
Software pro vzdálenou laboratoř Autor: Vladimír Hamada, Petr Sadovský Typ: Software Rok: 2012 Samostatnou část vzdálených laboratoří tvoří programové vybavené, které je oživuje HW část vzdáleného experimentu
Představíme základy bezdrátových sítí. Popíšeme jednotlivé typy sítí a zabezpečení.
10. Bezdrátové sítě Studijní cíl Představíme základy bezdrátových sítí. Popíšeme jednotlivé typy sítí a zabezpečení. Doba nutná k nastudování 1,5 hodiny Bezdrátové komunikační technologie Uvedená kapitola
CAL (CAN Application Layer) a CANopen
CAL (CAN Application Layer) a CANopen J. Novák České vysoké učení technické v Praze Fakulta elektrotechnická Katedra měření Průmyslový distribuovaný systém na bázi sběrnice CAN Pressure sensor Stepper
Nastavení telefonu Windows Phone 8S by HTC
Nastavení telefonu Windows Phone 8S by HTC Telefon Windows Phone 8S by HTC, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již přednastaveny.
Nastavení telefonu Sony Ericsson XPERIA X8
Nastavení telefonu Sony Ericsson XPERIA X8 Telefon Sony Ericsson XPERIA X8, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již přednastaveny.
Controlweb. Úvod. Specifikace systému
Controlweb Úvod ControlWeb je aplikace pro řízení a indikaci v průmyslu v reálném čase. Mezi jeho základní funkce patří ovládání různých veličin spojitých, binárních nebo textových a zobrazování stavu
Nastavení telefonu Nokia 206
Nastavení telefonu Nokia 206 Telefon Nokia 206, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již přednastaveny. Pokud je potřeba
Základní informace a postup instalace systému ISAO
Základní informace a postup instalace systému ISAO Informační systém Auditního orgánu, verze 1.18.00 vypracovala společnost ASD Software, s.r.o. dokument ze dne 16. 5. 2016, verze 1.00 Základní informace
Uživatelská příručka CZ
Minix NEO U9-H Uživatelská příručka CZ Děkujeme Vám za zakoupení Minix NEO U9-H Minix NEO U9-H je výkonné multimediální centrum na bázi Android 6.0 Marshmallow s osmijádrovým procesorem a grafikou Mali
Real Time programování v LabView. Ing. Martin Bušek, Ph.D.
Real Time programování v LabView Ing. Martin Bušek, Ph.D. Úvod - související komponenty LabVIEW development Konkrétní RT hardware - cíl Použití LabVIEW RT module - Pharlap ETS, RTX, VxWorks Možnost užití
Uživatelská příručka Set-top Boxu
ITonis IPTV and VoD Platform Uživatelská příručka Set-top Boxu 10. října 2007 i Obsah 1 Motorola Set-top Box VIP1500/VIP1700 1 1.1 Vybalení Set-top Boxu... 1 1.2 Zapojení Set-top Boxu...
Matematika v programovacích
Matematika v programovacích jazycích Pavla Kabelíková am.vsb.cz/kabelikova pavla.kabelikova@vsb.cz Úvodní diskuze Otázky: Jaké programovací jazyky znáte? S jakými programovacími jazyky jste již pracovali?
Programátorská příručka
KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro
Z čeho se sběrnice skládá?
Sběrnice Co je to sběrnice? Definovat sběrnici je jednoduché i složité zároveň. Jedná se o předávací místo mezi (typicky) více součástkami počítače. Sběrnicí však může být i předávací místo jen mezi dvěma
Dílčí projekt: Systém projektování textilních struktur 1.etapa: tvorba systému projektování vlákno - příze - tkanina
Program LibTex Uživatelská příručka 1 Obsah Program Textilní Design... 1 Uživatelská příručka... 1 1 Obsah... 2 2 Rejstřík obrázků... 2 3 Technické požadavky... 3 3.1 Hardware... 3 3.1.1 Procesor... 3
Nastavení telefonu Nokia Lumia 925
Nastavení telefonu Nokia Lumia 925 Telefon Nokia Lumia 925, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již přednastaveny. Některé
Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek
Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek = Velmi malé jádro = implementuje jen vybrané základní mechanismy: = virtuální paměť; = plánování vláken; = obsluha výjimek; = zasílání
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
Uživatelský manuál A4000BDL
Uživatelský manuál Aplikace : Jednoduchý program umožňující přenos souboru s pochůzkou k měření z programu DDS 2000 do přístroje řady Adash 4100/4200 Jednoduchý program umožňující přenos naměřených dat
VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ
VYUŽITÍ KNIHOVNY SWING PROGRAMOVACÍHO JAZYKU JAVA PŘI TVORBĚ UŽIVATELSKÉHO ROZHRANÍ SYSTÉMU "HOST PC - TARGET PC" PRO ŘÍZENÍ POLOVODIČOVÝCH MĚNIČŮ Stanislav Flígl Katedra elektrických pohonů a trakce (K13114),
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Karel Bittner bittner@humusoft.com. HUMUSOFT s.r.o. HUMUSOFT s.r.o.
Karel Bittner bittner@humusoft.com COMSOL Multiphysics Co je COMSOL Multiphysics? - sw určený k simulaci fyzikálních modelů, na něž působí jeden nebo několik fyzikálních vlivů - sw úlohy řeší metodou konečných
BIOS. Autor: Bc. Miroslav Světlík
BIOS Autor: Bc. Miroslav Světlík Škola: Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, příspěvková organizace Kód: VY_32_INOVACE_ICT_837 1. 11. 2012 1 1. BIOS
František Hudek. červen ročník
VY_32_INOVACE_FH17_WIN Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek červen 2013
STRUČNÁ PŘÍRUČKA. Instalace ovladačů Nokia Connectivity Cable Drivers
STRUČNÁ PŘÍRUČKA Instalace ovladačů Nokia Connectivity Cable Drivers Obsah 1. Úvod...1 2. Nutné podmínky...1 3. Instalace Ovladačů Nokia Connectivity Cable Drivers...2 3.1 Před začátkem instalace...2 3.2
Základní informace. Operační systém (OS)
Základní informace Operační systém (OS) OS je základní program, který oživuje technické díly počítače (hardware) a poskytuje prostředí pro práci všech ostatních programů. Operační systém musí být naistalován
Ope p r e a r čn č í s ys y té t m é y y Windo d w o s Stručný přehled
Windows 2008 R2 - úvod Jan Žák Operační systémy Windows Stručný přehled Klientské OS Windows 95, 98, ME Windows NT Windows 2000 Windows XP Windows Vista Windows 7 Windows CE, Windows Mobile Windows Phone
Konfigurace pracovní stanice pro ISOP-Centrum verze 1.21.32
Informační systém ISOP 7-13 Vypracováno pro CzechInvest Konfigurace pracovní stanice pro ISOP-Centrum verze 1.21.32 vypracovala společnost ASD Software, s.r.o. Dokument ze dne 20.2.2015, verze 1.00 Konfigurace
Co je Symantec pcanywhere 12.0? Hlavní výhody Snadné a bezpečné vzdálené připojení Hodnota Důvěra
Symantec pcanywhere 12.0 Špičkové řešení vzdáleného ovládání pro odbornou pomoc a řešení problémů Co je Symantec pcanywhere 12.0? Symantec pcanywhere, přední světové řešení vzdáleného ovládání*, pomáhá
Minimální požadavky na systém... 21 Linux a Windows na jednom disku... 22 Zrušení instalace Mandriva Linuxu... 23
Obsah Úvodem 9 Typografické konvence.............................. 10 Změny oproti předchozí verzi Mandriva Linuxu.................. 11 Informace o aktualizaci z verze 2006....................... 17 Poděkování....................................
Kapitola 1: Úvod. 1.1 Obsah balení. 1.2 Požadavky na systém. Česky
Kapitola 1: Úvod 1.1 Obsah balení Po obdržení televizního adaptéru TVGo A03 zkontrolujte, zda balení USB TV Super Mini obsahuje následující položky. Adaptér TVGo A03 Disk CD s ovladači Dálkový ovladač
Počítačové sítě. Lekce 4: Síťová architektura TCP/IP
Počítačové sítě Lekce 4: Síťová architektura TCP/IP Co je TCP/IP? V úzkém slova smyslu je to sada protokolů používaných v počítačích sítích s počítači na bázi Unixu: TCP = Transmission Control Protocol
Kapitola 1 Představení SIP telefonu
SIP telefon Kapitola 1 Představení SIP telefonu SIP telefon je plně funkční IP telefon vhodný pro využívání v domácnostech. Podporuje SIP protokol dle RFC3261. Obsahuje dva síťové porty 10/100BaseT, pomocí
10 Balíčky, grafické znázornění tříd, základy zapozdření
10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému
Uživatelský modul. DF1 Ethernet
Uživatelský modul DF1 Ethernet APLIKAC NÍ PR ÍRUC KA POUŽITÉ SYMBOLY Použité symboly Nebezpečí Důležité upozornění, jež může mít vliv na bezpečí osoby či funkčnost přístroje. Pozor Upozornění na možné
A4300BDL. Ref: JC
# Uživatelský manuál A4300BDL Aplikace :! Jednoduchý program umožňující přenos souboru s pochůzkou k měření z programu DDS 2000 do přístroje řady Adash 4300! Jednoduchý program umožňující přenos naměřených
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.
2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena. GEOVAP, spol. s r. o. Čechovo nábřeží 1790 530 03 Pardubice Česká republika +420 466 024 618 http://www.geovap.cz V dokumentu použité názvy programových
úvod Historie operačních systémů
Historie operačních systémů úvod Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav
STRUČNÁ PŘÍRUČKA. Instalace ovladačů Nokia Connectivity Cable Drivers
STRUČNÁ PŘÍRUČKA Instalace ovladačů Nokia Connectivity Cable Drivers Obsah 1. Úvod...1 2. Nutné podmínky...1 3. Instalace Ovladačů Nokia Connectivity Cable Drivers...2 3.1 Před začátkem instalace...2 3.2
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
Používání přehrávače ipod
Používání přehrávače ipod Používání přehrávače ipod Po připojení ipodu můžete přehrávat hudební nebo video soubory. Tento přijímač umožňuje provádět různé operace, jako např. výběr souboru ze seznamu nebo
Komu je tato kniha určena? Jak je kniha uspořádána? Konvence použité v té to knize. Část i základy Microsoft Windows XP Professional
Obsah Poděkování Úvod Komu je tato kniha určena? Jak je kniha uspořádána? Konvence použité v té to knize podpora xix xxi xxi xxii xxiii xxiv Část i základy Microsoft Windows XP Professional KAPITOLA 1
Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače
Název školy: Základní škola a Mateřská škola Žalany Číslo projektu: CZ. 1.07/1.4.00/21.3210 Téma sady: Informatika pro sedmý až osmý ročník Název DUM: VY_32_INOVACE_2B_9_Software_-_základní_programové_vybavení_počítače
11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
(Enterprise) JavaBeans. Lekce 7
(Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí
Rikomagic MK902 II. Uživatelská příručka CZ
Rikomagic MK902 II Uživatelská příručka CZ Děkujeme Vám za zakoupení Rikomagic MK902 II MK902 II je revoluční TV Box na bázi Android 4.4 KitKat s čtyřjádrovým procesorem RK3288 a grafikou Mali T764. S
Nastavení telefonu Sony Ericsson Xperia Arc S
Nastavení telefonu Sony Ericsson Xperia Arc S Telefon Sony Ericsson Xperia Arc S, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již
Externí zařízení. Uživatelská příručka
Externí zařízení Uživatelská příručka Copyright 2007 Hewlett-Packard Development Company, L.P. Windows je v USA registrovaná ochranná známka společnosti Microsoft Corporation. Informace obsažené v tomto
Stručný obsah. Úvod 15. KAPITOLA 1 První kroky v systému Windows 8 19. KAPITOLA 2 Hlavní panel a jeho možnosti 41. KAPITOLA 3 Soubory a složky 51
Stručný obsah Úvod 15 KAPITOLA 1 První kroky v systému Windows 8 19 KAPITOLA 2 Hlavní panel a jeho možnosti 41 KAPITOLA 3 Soubory a složky 51 KAPITOLA 4 Práce se schránkou 85 KAPITOLA 5 Osobní přizpůsobení
Výčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
Nastavení telefonu Nokia Asha 311
Nastavení telefonu Nokia Asha 311 Telefon Nokia Asha 311, zakoupený v prodejní síti společnosti T-Mobile Czech Republic a.s., má potřebné parametry pro použití T-Mobile služeb již přednastaveny. Pokud