iPhone és Android két jó barát...
Multiplatform alkalmazásfejlesztés a gyakorlatban Kis Gergely 1 MattaKis Consulting
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 –
●
Előnyök –
●
Közös nyelven/platformon történő fejlesztés 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 ● ●
–
Csak egyszer kell kifejleszteni Az alkalmazást ismerőknek könnyű a platformok között váltani
Hátrány ● ●
●
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: ●
„Natív” alkalmazás
●
Új felhasználók könnyen megszokják
Hátrány ● ●
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 –
IP alapú: BES, BIS, Direkt TCP (WLAN, 3G)
–
Bluetooth: JSR-82
iPhone –
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
Java bytekód
Alkalmazás forráskód
Java API
Android API forráskód
iPhone Java API stubs
DEX bytekód XMLVM fordító 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 7080%-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
MattaKis Porting Framework (2) Application Model
Application Workflow
Model Support
Workflow
Configuration
User Interface Generator
MattaKis Porting Framework
Application
Android Application UI J2ME Application UI
iPhone Platform Support
J2ME Platform Support
Android Platform Support
BlackBerry Platform Support
BlackBerry Application UI
iPhone Generic UI
J2ME Generic UI
Android Generic UI
BlackBerry Generic UI
iPhone Application UI 25
Ö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 (
[email protected])
●
MattaKis Consulting (www.mattakis.com)
27