iphone és Android két jó barát... Multiplatform alkalmazásfejlesztés a gyakorlatban Kis Gergely MattaKis Consulting 1
Tartalom Miért multiplatform fejlesztés? Multiplatform fejlesztési módszerek A közös nyelvek: Java és C/C++ Egy multiplatform termék tervezése Gyakorlati bemutató XMLVM: Java támogatás iphone-on MattaKis Porting Framework 2
Miért multiplatform fejlesztés? 3
Miért multiplatform fejlesztés? Több potenciális vásárló Ügyféligényeknek megfelelés Forrás: Canalys, Wikipedia 4
Multiplatform fejlesztési módszerek Különálló fejlesztések Az alkalmazást minden platformra külön fejlesztik Előnyök Adott platformra optimalizált felhasználói felület és kód Kooperáció csak a specifikációkban és a szerveroldali komponensekben lehetséges Hátrányok Kódduplikáció Lassabb, drágább fejlesztés 5
Multiplatform fejlesztési módszerek (2) Különálló fejlesztések Közös nyelven/platformon történő fejlesztés Előnyök A kód jelentős részét (90+%) csak egyszer kell kifejleszteni Hátrányok A felhasználói felület elüthet a natív alkalmazásoktól Kevésbé optimalizált kód Nem minden platformhoz található megfelelő közös nyelv 6
Multiplatform fejlesztési módszerek (3) Különálló fejlesztések Komponensek újrafelhasználása (pl. C/C++ könyvtárak) Előnyök Bonyolult kódrészek kifejlesztése spórolható meg A teljesítményigényes részekhez gyors implementáció használható Hátrányok A közös komponenseken kívüli kódrészeket minden platformra ki kell fejleszteni Nem minden platformon lehetséges a natív komponensek felhasználása 7
Közös nyelvek Java A legszélesebb körben elterjedt mobil programozási nyelv A smartphone-ok 80-90%-án elérhető Android, Symbian (J2ME), BlackBerry és most már iphone is Egyszerű, fejlesztőeszközökkel jól támogatott J2ME, BlackBerry régi, elavult API-k 8
Közös nyelvek (2) C / C++ Teljesítményigényes kódrészek írására alkalmas iphone, Android, Symbian, Windows Mobile stb. Kivétel: BlackBerry Mobilbiztos C++ Nincs RTTI Nincs kivételkezelés Standard könyvtárnak csak egyes részei használhatók 9
Közös nyelvek (3) Javascript Web technológiákra épülő alkalmazások fejlesztése iphone, Android, Palm WebOS WebKit böngészőmotor beágyazva Nagyon jó struktúrált dokumentumok megjelenítésére A Webes alkalmazások problémái (teljesítmény, többszálúság hiánya) hatványozottan jelentkeznek 10
Egy multiplatform termék megtervezése Célcsoport: Üzleti alkalmazások Gyakran igény, hogy minél több platformon elérhető legyen Ergonomikus, funkcionális felület az igény, nem Eye Candy Feladatok Megcélzott platformok kiválasztása Felhasználói élmény Multimédia Kommunikáció 11
Megcélzott platformok kiválasztása BlackBerry Az üzleti világban nagyon elterjedt Java (J2ME + kiterjesztések) iphone Gyorsan terjed üzleti felhasználásokra is Objective-C, Java, Mono (.NET) Android Egyre többen igénylik, de általában alacsonyabb prioritás Java és C/C++ 12
Felhasználói élmény 1. Egyedi, alkalmazásra jellemző felület minden platformon Előny Hátrány Csak egyszer kell kifejleszteni Az alkalmazást ismerőknek könnyű a platformok között váltani Nem natív alkalmazás iphone esetén gond lehet az App Store-ba kerüléssel Új felhasználóknak nehezebb lehet megszokni 13
Felhasználói élmény (2) 2. Platformnak megfelelő felhasználói felület nyújtása Előny: Hátrány Natív alkalmazás Új felhasználók könnyen megszokják Több fejlesztést igényel Más platformokról áttérőknek szokni kell a felületet 14
Multimédia BlackBerry J2ME JSR-135, felvételhez AMR codec DRM-hez BlackBerry kiterjesztések iphone Korlátozott Objective-C API C API közvetlenül az AudioQueue-khoz AMR felvételt nem támogat Nem szabványos kiterjesztések lehetősége (C/C++) Android Korlátozott MediaPlayer / Recorder API PCM adatokhoz közvetlen hozzáférés Nem szabványos kiterjesztések lehetősége (C/C++) 15
Kommunikáció BlackBerry iphone IP alapú: BES, BIS, Direkt TCP (WLAN, 3G) Bluetooth: JSR-82 IP alapú: WLAN, 3G, Bonjour Bluetooth: GameKit, csak iphoneos alapú eszközök között, Bonjour-ra épül Android IP alapú: WLAN, 3G Bluetooth: 1.6 óta az SDK-ban, előtte nem hivatalos kiterjesztések (pl. Bluecove) 16
Gyakorlati bemutató: PreziMote Távirányító prezentációkhoz Vakon is használható felület Eredeti változat: Bluetooth kommunikáció Android 1.5 támogatás iphone támogatás: Bluetooth nem használható Áttérés IP alapú kommunikációra 17
PreziMote iphone változat Az Android verzió kódja módosítás nélkül lefordítható iphone-ra Android képernyő iphone képernyők 18
Java támogatás iphone-on: XMLVM Java Objective-C keresztfordító Java Runtime Library implementáció Objective-Cben iphone API Java binding Android API implementáció az iphone API-ra építve Nyílt forráskódú: GPLv2 Kereskedelmi alkalmazásokhoz Linking Exception szerezhető be az XMLVM Core Teamtől. 19
XMLVM architektúra Alkalmazás forráskód Java API Java bytekód Android API forráskód iphone Java API stubs XMLVM fordító DEX bytekód XMLVM modell iphone alkalmazás Alkalmazás Objective-C Android API Objective-C Java API Objective-C iphone Java API Objective-C 20
XMLVM felhasználás A MattaKis Consulting sikeresen portolt egy BlackBerry - J2ME Android alkalmazást iphone-ra a segítségével Ehhez a következő fejlesztéseket végeztük: Threading + szinkronizáció Java IO, Java Net támogatás Iphone multimédia támogatás Collection Framework továbbfejlesztés Különböző egyéb Java API-k implementálása 21
XMLVM: Java API Objective-C-ben Objective-C kategóriák használata typedef NSString java_lang_string; @interface NSString (cat_java_lang_string) - (java_lang_string*) substring int_int: (int) start : (int) end;... @end 22
XMLVM korlátok Hiányos API implementáció Nincs garbage collector a generált kód reference counting sémát használ Egy átlag alkalmazás portolásakor a 70-80%-a használható fel újra Nincs debugger (GDB használható a generált kódon) 23
MattaKis Porting Framework Keretrendszer multiplatform mobil alkalmazások fejlesztéséhez Támogatott platformok: J2ME (Symbian S60) BlackBerry Android iphone 24
25 MattaKis Porting Framework (2) Model Support Workflow User Interface Generator Configuration iphone Platform Support iphone Generic UI J2ME Platform Support J2ME Generic UI Android Platform Support Android Generic UI BlackBerry Platform Support BlackBerry Generic UI BlackBerry Application UI iphone Application UI J2ME Application UI Android Application UI Application Model Application Workflow MattaKis Porting Framework Application
Összefoglalás Miért multiplatform fejlesztés? Multiplatform fejlesztési módszerek A közös nyelvek: Java és C/C++ Egy multiplatform termék tervezése Gyakorlati bemutató XMLVM: Java támogatás iphone-on MattaKis Porting Framework 26
Köszönöm a figyelmet! Kis Gergely (gergely.kis@mattakis.com) MattaKis Consulting (www.mattakis.com) 27