Mobil Rendszerek Programozása Bevezetés, platformok Léczfalvy Ádám leczfalvy.adam@nik.bmf.hu
Tartalom Mobil készülékek és tulajdonságaik A mobil eszközök programozása, kihívások, nehézségek Mobilprogramozási platformok Java Micro Edition .NET Compact Framework Python Symbian OS iPhone OS
Mobil készülékek és tulajdonságaik Mit nevezünk mobil készüléknek? Olyan készülék, amely: Akkumulátorról üzemel Támogat valamilyen vezeték nélküli technológiát Rendelkezik valamilyen felhasználói felülettel (pl. gombok, érintőképernyő) Korlátozott képességű hardverrel rendelkezik
Mobil készülékek és tulajdonságaik Kis méret Kis tömeg Gyenge processzor Kis méretű memória Kis méretű képernyő Korlátozott adatbeviteli lehetőségek Erősen korlátozott energiafogyasztás
Mobil készülékek és tulajdonságaik Notebook Tablet PC Kisméretű ipari PC Hordozható célra készült alaplapok, CPU-k (pl. Intel Atom)
Mobil készülékek és tulajdonságaik Mobiltelefon Alapvető funkciók, amelyek egyre bővülnek SmartPhone Széleskörű üzleti funkciók Számos kommunikációs protokoll támogatottsága
Mobil készülékek és tulajdonságaik PDA, Pocket PC Szervezői funkciók támogatása Érintőképernyő Bizonyos változatok telefonálást is lehetővé tesznek Egyéb intelligens hordozható eszközök PNA GPS vevőkészülék
Mobil programozás A korlátozott képességekkel rendelkező mobil eszközökre történő alkalmazás fejlesztés Területei: Mobil tartalomszolgáltatás (WAP) Egy hagyományos informatikai rendszer és egy mobil eszköz összekapcsolása A mobil eszközön futó alkalmazásfejlesztése
Mobil programozás Eleinte csak operációs rendszer, nem volt lehetőség más szoftver telepítésére Csak a profi szakemberek tudtak mobil- alkalmazást készíteni A PDA-k voltak az első, külső fél által programozható mobil eszközök A gyártók reagáltak a igényekre és később mobiltelefonokra is lehetővé tették a fejlesztést Ma már alig van olyan készülék, amelyhez ne létezne fejlesztői eszköz
Mobil programozás kihívásai Különböző technológiájú eszközök Hordozható számítógép, PDA, mobiltelefon Egyes eszközök ugyanazt a technológiát másképp támogatják (pl. böngészés) Sokféle kommunikációs csatorna, különböző sávszélességgel Bluetooth, Infra, WLAN, SMS, TCP/IP Felhasználás területe Kereskedelem, szállítás, támogatás, marketing Felhasználás helye Munkahely, vevő telephelye, repülőtér, repülő, utazás közben, otthon
Mobil programozás nehézségei Gyakran más szemléletmódot követel, mint a PC-n történő alkalmazás fejlesztés A különböző platformok sajátosságai miatt egyedi fejlesztési technikák szükségesek Sajátos hardver és szoftver architektúra, amelyet ismerni kell hatékony alkalmazások készítéséhez A eszközök hardver korlátai
Mobil programozás nehézségei Az eszközök korlátai miatt nehezebb jó alkalmazást készíteni Felhasználóbarát, áttekinthető, „dizájnos” GUI tervezése a korlátozott méretű kijelzőre Erőforrás korlátok Processzor Memória Tároló kapacitás A felhasználói input biztosítása különféle eszközök esetén
Mobilszoftver platformok A különféle platformok eltérő eszköztámogatottsággal bírnak Népszerűség, elterjedtség Az alkalmazott platform tartalmazza a futtatáshoz és a fejlesztéshez szükséges eszközöket Bizonyos platformokon könnyebb fejleszteni, ám korlátozottabb az elérhető funkciók köre, másokon nehezebb a fejlesztés, de sokkal több funkció érhető el
Mobilszoftver platformok A mobil eszköz operációs rendszere alá Palm OS Symbian OS Windows XP Embedded/Windows CE (Windows Mobile) Linux OS Binary Runtime Environment for Wireless (BREW) A mobil eszközön található futtató keretrendszer alá J2ME .NET Compact Framework Python
Mobilszoftver platformok Alapvető koncepciók: Programozási nyelv Gyakran korlátozzák a nyelv szabványos eszközkészletét Kódkönyvtárak (osztálykönyvtárak) Az alapfunkciókat bővítő eljárások (osztályok) Fejlesztői eszközök Fordítóprogram Szimulátor Egyéb eszközök
Mobilszoftver platformok Platformok összehasonlítási szempontjai: Programozási nyelv Elérhető funkciók Az adott eszközre vonatkozóan annak minden funkcióját el tudjuk-e érni? A fejlesztés gyorsasága Mennyire könnyű elsajátítani az adott platformra vonatkozó ismereteket? Gyorsan lehet programozni az adott platformon? Támogatott eszközök száma A piacon kapható eszközök közül mennyi támogatja?
Java Micro Edition
A Java technológia C++ leváltására szolgáló nyelv Objektum orientált Többszálúság Garbage Colletion Hálózati kommunikáció támogatása Platform függetlenség Byte-code (köztes kód) Futtatás a Java Virtual Machine segítségével Interpreter üzemmód
Különféle Java változatok A platformfüggetlenség csak részben igaz Eltérő piaci igények vannak J2EE: szerveroldali, illetve web- fejlesztésre szánt változat J2SE: asztali PC-kre szánt verzió J2ME: mobil eszközökre szánt verzió, a J2SE részhalmaza, a korlátokhoz alkalmazkodik Java Card: SmartCard-okhoz készült változat
J2ME A legelterjedtebb mobilszoftver-platform A ma kapható készülékek szinte kivétel nélkül támogatják Java nyelv A speciális hardvert és funkciókat nem használó alkalmazások könnyen elkészíthetők A speciális funkciók (pl. Bluetooth) csomagok segítségével érhetők el (az eszköznek a csomagot támogatnia kell!) Csak szekvenciális fájlelérés
J2ME Ingyenes Nyílt forráskódú Virtuális gép és csomagok Fejlesztőkörnyezetek: NetBeans IDE JBuilder Eclipse A fejlesztési ismereteket viszonylag könnyen el lehet sajátítani Átlagos fejlesztési gyorsaság
J2ME Különböző képességű eszközök memória, feldolgozási idő, hardver, megjelenítés szempontjából Konfigurációkat definiáltak, amely meghatározza a legalapvetőbb közös tulajdonságokat További csoportosítást tettek lehetővé a profilok alkalmazásával Opcionális csomagok a speciális funkciókhoz
.NET Compact Framework
.NET Compact Framework Több programozási nyelv támogatása C#, Visual Basic IL (Intermediate Language) nyelvre forduló programok A Runtime(virtuális gép) az IL kódot futtatja JIT technológia A teljes .NET keretrendszer részhalmaza Mobil eszközökhöz készült osztálykönyvtár bővítmények
.NET Compact Framework Az eredeti .NET Framework fontosabb osztályai és azok metódusai elérhetők Pl. System.Windows.Forms Mobiltelefonokon csak Windows Mobile-ra érhető el PDA-k között egyeduralkodó A fejlesztési ismereteket viszonylag könnyen el lehet sajátítani Átlagos fejlesztési gyorsaság
Python
Python Magas szintű, általános célú programozási nyelv Szkript-nyelv Objektum orientált és procedurális programozás támogatása Platform független Gazdag standard osztálykönyvtár Kommunikációs protokollok Reguláris kifejezések Adatbázis kapcsolat Stb.
Python C vagy C++ -ban írt modulokkal való bővíthetőség Bizonyos változatok natív kódot is képesek generálni Kliensszoftverek, prototípusok készítésére kiváló, mert a nyelv nagyon egyszerű A fejlesztési ismereteket könnyen és gyorsan el lehet sajátítani Gyors fejlesztést tesz lehetővé
Python A legtöbb készülék alapesetben nem tartalmazza a futtatókörnyezetet, ezért telepítés szükséges! Ez nem várható el minden felhasználótól, ezért az elterjedést gátolhatja
Symbian OS
Symbian OS Elsősorban okostelefonok épülnek rá, de egyre inkább jellemző az olcsóbb szegmensekre is C++-ban írták a kerneltől a magas szintű szolgáltatásokig Objektum orientált szemlélet Az OS írásakor a C++ még gyerekcipőben járt, a kiforrottság hiánya miatt egyedi technikákat alkalmaztak a készítők Ezekhez a technikákhoz alkalmazkodni kell, ezért nehezebbé teszi a programozást!
Symbian OS Mivel az OS C++ -ban készült ezért natív alkalmazásokat is csak ebben lehet készíteni Az alkalmazott C++ nyelv a sajátosságok miatt sok helyen eltér a szabványos C++ - tól Alacsony szintű rétegekhez való hozzáférés az OS-en belül, az elérhető funkciók száma igen nagy Open C csomag a szabványos C nyelven írt programok portolásához
Symbian OS A Symbian OS csak az alapját képezi a készülék operációs rendszerének Erre mindig ráépül egy UI réteg és számos alap alkalmazás, amelyek így önálló szoftverplatformokat alkotnak: S60: A Nokia definiálta gombbal vezérelt, kis képernyős mobiltelefonokhoz. Tetszőleges méretű képernyő támogatás UIQ: Érintőképernyős PDA-khoz, de már van érintőképernyő nélküli változat is
Symbian OS A két rendszer nem kompatibilis egymással Külön osztálykönyvtárak és SDK Az operációs rendszer alapfunkcióit azonban ugyanúgy kell programozni, ezért készíthető közös kódbázis az alapfunkciókhoz A felhasználói felület tekintetében egyedi programozás szükséges
Symbian OS Sok tapasztalat szükséges egyszerűbb programok készítéséhez is Az szabványos C++ -tól való eltérések és sajátosságok miatt hosszabb tanulási idő és sok gyakorlás szükséges A bonyolultabb programozás a fejlesztés sebességét lassíthatja
iPhone OS
iPhone OS Apple készülékekre fejlesztették: Unix alapokra épül iPodTouch Unix alapokra épül Nem kompatibilisa Mac OS X-el 2008-ban megjelent az iPhone SDK, így megnyíltak a lehetőségek a platformra történő fejelsztéshez
iPhone OS Obejctive-C nyelv Az elérhető funkciók száma gazdag, a multi-touch felhasználói felület és a gyorsulásmérő szenzorok is programozható Sok tanulást igényel A bonyolultabb programozás a fejlesztés sebességét lassíthatja Az emulátor csak Mac OS X alatt használható
iPhone OS Az elkészített alkalmazások csak az AppStore-on keresztül terjeszthetők A fejlesztők szabják meg az alkalmazás árát, amelyből 30% az Apple-höz kerül Szigorú és körülményes módszer, de: Garantálja a minőséget Biztonságos szoftverek
Fejlesztés gyorsasága Támogatott eszközök száma Összefoglalás Platform Programozási nyelv Elérhető funkciók Fejlesztés gyorsasága Támogatott eszközök száma Java ME Java Átlagos Nagyon sok .NET CF C#, Visual Basic .NET Több mint átlagos Python Gyors Sok Symbian OS C++ Lassú iPhone OS Objective-C Kevés