Ugrás a főmenüre.
Minden más 2008.12.09. Appel

Inside the iPhone

Most, hogy már az iPhone fejlesztését is tanulgatom elég sok információm gyűlt össze a "belsejéről". Összegyűjtöttem a szélesebb kört is érdeklő, azaz nem fejlesztőknek, inkább csak gépnyomóknak szóló darabokat egy csokorba. Úgy gondolom, hogy ezeknek a birtokában jobb rálátást fogsz kapni az iPhone piaci elhelyezkedéséről és másképpen fogod összehasonlítani mondjuk egy Nokia készülékkel. Vigyázat, hosszú írás, én szóltam.
Inside the iPhone

Alapszabályként úgy érdemes tekinteni az iPhone-ra, hogy ez egy kis laptop érintőképernyővel. Sokkal inkább számítógép, mintsem mobiltelefon, annyira, hogy a mobiltelefon részek (= baseband, kezeli a SIM kártyát, satöbbi) teljesen külön vannak benne.

Ugyanaz az OSX operációs rendszer fut rajta, mint a "rendes" Mac-eken, de ez leginkább csak a feltört telefonokon kezelhető. Nagyon sok szoftver lefordítható rá, pl. Apache vagy Lighttpd webszerver. A feltört telefonokra az OpenSSH feltelepítése után be lehet jelentkezni és ott ugyanaz a Bash parancssor fogad, mint a legtöbb Unix/Linux operációs rendszeren. Itt lehet a legjobban látni, hogy jé, tényleg.

Persze sok képesség egyáltalán nem vagy másképpen érhető el, mert ez mégsem egy asztali gép. Ezek egy része műszaki sajátosság miatt van (pl. az eltérő és igen egyedi felhasználói felület eltérő módszereket kíván), más része pedig az Apple üzleti döntése miatt (pl. nem érhetők el a tárolt MP3-ak, a Bluetooth vagy az USB-s szinkronizáció).

Hardver

ARM architektúra lakik bent (ez egy mobil eszközökben igen széles körben használt dolog, sok okostelefon erre épül), ARM11-es processzort használ. Az ARM11 maximális sebessége 620 Mhz, de az iPhone-okban csak 412 Mhz-en ketyeg.

Feltételezem, hogy erre a hőelvezetés és a kedvezőbb akku élettartam miatt volt szükség. Érdekes kivétel a második generációs iPod Touch, abban már 532 Mhz-re engedték a procit.

Van benne még 128 MB RAM és 8, 16 vagy 32 GB Flash HDD. A HDD sebessége: olvasás 11 MB/s, írás 3 MB/s. Egy sima 5400-es laptop vinyó a huszas tartományban mozog, így ez az érték igen-igen lassú. A RAM sebessége: 120 MB/s.

A legnagyobb megszorítás a memória és lemezkezelés

Az Apple nagyon tart a Flash lemezek limitált élettartamától (egy cella kb. 500 000 írást/törlést bír jelenleg, utána meghal), ezért a fejlesztői doksiban többször felhívja a figyelmet, hogy csak akkor írjunk a lemezre, ha nagyon muszáj és lehetőleg egy menetben.

Valószínűleg emiatt nincs benne virtuális memória, nincs memória swap! (Háttérinfó).

Van kb. 30-50 MB szabad memória a programok részére és kész, de egy fejlesztő sem bízhat abban, hogy ennyi valóban rendelkezésre is áll. Kevés hely esetén minden alkalmazás üzenetet kap, amit érdemes lekezelni. Ha elfogy a RAM, akkor kilövi a programunkat, tehát erre fokozottan kell figyelni.

Nincs benne garbage collection sem, azaz a fejlesztő lelkiismeretes és aprólékos munkáján múlik a memória hatékony kezelése. Memóriaszivárgás esetén nagyon gyorsan elfogyhat a RAM és akkor a rendszer leállítja a programot.

A fentiek miatt teljesen hibás az az állítás, hogy az iPhone teljesítménye hasonlítana a 8 évvel ezelőtt általános 400 Mhz-es 128MB RAM-os 4GB HDD-s asztali gépekéhez. Már a Win 3.1 is használt memóriaswap-et és garbage collectiont, ami itt nincs.

Ha mindenképpen hasonlítani kell valamilyen asztali masinához, akkor inkább egy 486-ost képzeljünk el 16 MB RAM-mal és MS DOS-szal. Kb. ennyi teljesítményre lehet számítani egy saját alkalmazás részére.

Pontosan ezen okok miatt nem hagyja az Apple, hogy háttérben futó szoftvereket is készítsünk az iPhone-ra, egyszerűen nincs hozzá elegendő erőforrás, nagyon könnyen instabillá lehet tenni a rendszert és tönkrevágni az Apple által szigorúan vett felhasználói élményt.

Fejlesztés

A fejlesztés a csak OSX-en futó XCode fejlesztői rendszerben történik, ebben fejlesztik az OSX-es asztali alkalmazásokat is. Az Apple-nek szerintem amúgy sem lett volna ereje egy külön valamire, most meg van egy nagy integrált izéje, amiben fejleszthetünk asztalra és mobilra. Minden egyben, így szép.

Mint minden hasonló rendszernek, ennek is megvan a sajátos logikája, először átláthatatlanul kusza, aztán ha belejössz minden összeáll szépen. A tesztelés történhet az asztali gépeden szimulált környezetben (iPhone Simulator) és magán a készüléken is.

Kényelmes az Interface builder, ahol grafikus felületen lehet összerakni a felhasználói felületet. Nagyon hasznos az Instruments, ahol többek között a CPU használatot és a memóriaszivárgást lehet monitorozni (nem csak a szimulátorban, hanem magán a telefonon is).

xcode.jpg

Ezeken a nyelveken lehet fejleszteni: Objective-C, C++, "Pure" Java, AppleScript, Ruby és Python. Mielőtt belelkesedsz: azért Objective-C-re van kihegyezve minden. Némi ASM kód is becsempészhető, illetve a nyelveket lehet kombinálni. C-ben az összes ANSI C funkció elérhető, ugyanúgy malloc-olni és memcpy-zni kell, mint régen. Egészen alacsony szintekre is lemehetsz.

Anno a diplomamunkám egy Windows-os program volt, amit C++-ban készítettem a Windows API felhasználásával. Hiszed vagy sem, az iPhone fejlesztésben ez az ismeretanyag nagyon hasznos lett, szinte teljesen ugyanúgy történnek a dolgok...

Fontos, hogy az iPhone alkalmazások nem látják egymást, egy "homokozóban" (sandbox) futnak, csak a saját mappáikba írhatnak, csak onnan olvashatnak.

Érdekes dolog még a telefonos megszakítások kezelése, pl. ha jön egy hívás vagy naptáresemény. Ilyenkor pause állapotba kell tennünk a programot, aztán ha a felhasználó úgy dönt, hogy felveszi a hívást, akkor a rendszer leállítja az appot.

Alapvetően úgy kell megtervezni egy alkalmazást, hogy ilyen megszakítások bármikor jöhetnek, a felhasználó bármikor leállíthatja a programot és nagyon gyors válaszidők kellenek ezekre. Ez a szemlélet jól tenne sok asztali alkalmazásnak is egyébként...

Azzal is foglalkozni kell, hogy az akkut minél kevésbé terheljük. Ha azt nézzük, hogy a fejlesztői doksi szerint mi mennyire fontos (hányszor írnak róla, milyen sorrendben és nyelvezetben), akkor az akkuzabáló eszközök érdekes sorrendje alakul ki:

  1. WiFi (ez eszi a legtöbbet)
  2. Baseband radio (GSM, 3G, stb. mobil forgalmazás)
  3. GPS
  4. gyorsulásmérő
  5. Flash disk (ez meg a legkevesebbet?)

Keretrendszerek

A legtöbb lehetőséget keretrendszerekkel, magyarul Framework-ökkel érik el a fejlesztők. Például UIKit-nek hívják a felhasználói felülettel kapcsolatosat, vagy AddressBook-nak a kontaktkezelőset.

Ezek közül néhány keretrendszer szabványos és más operációs rendszereken is elérhető, így nem kell a fejlesztőknek újat tanulni. Például van OpenGL és OpenAL, ez ismerős lehet a játékok háza tájáról, ezért emlegetik az iPhone-t mint új játék platformot. Persze van olyan, hogy teljesítmény vagy egyéb okból egy-két funkció nem érhető el, pl. az Audio Units keretrendszerből jópár audio effekt hiányzik.

Főleg üzletpolitikai dolgok miatt sok keretrendszer nem használható (Private Frameworks), de ügyes programozók megmutatták, hogy hogyan lehet ezeket használni, például hozzáférni az MP3-akhoz az iPod részben és hasonlók. Ilyen szoftverek csak feltört telefonokra telepíthetők, az AppStore nem fogad be Private Framework-öt használó programot! Igen, van rá eszközük, hogy kiderítsék.

Ha kijön egy új frissítés, mint legutóbb a 2.2, az nemcsak azt jelenti, hogy mondjuk megjelent a Google Maps-ben a Street View, hanem ilyenkor szoktak bővülni a fejlesztők lehetőségei is, azaz messze nem csak a felhasználói felületet és a csilivilit polírozzák!

A keretrendszerek folyamatosan bővülnek, és fejlesztői oldalról is szembetűnő a fejlődés. Igen messze járunk még attól, hogy az iPhone kész legyen.

Például a TV kimenet keretrendszere még csak most alakul és úgy tűnik, hogy hamarosan publikus és dokumentált lesz. Azaz jövőre jöhetnek az olyan játékok, ahol az iPhone lesz a kezelőfelület de a TV-re jön a kép. Tiszta Nintendo

Konklúzió

A fentiek figyelembevételével talán már másképp látod az iPhone helyzetét. Már-már hihetetlen, hogy az igen limitált hardver erőforrások mellett ennyit ki tudtak hozni belőle. Minden fejlett telefonnál, az Android platformnál is bele fognak futni (belefutottak?) a fenti problémákba és az azokra adott válaszoktól függ, hogy mennyire lesz sikeres egy platform - hiszen most már mobilplatformok versenyeznek, nem gyártók.

A hagyományos telefonokhoz képest világok választják el az iPhone (és Android) platformokat. Míg egy hagyományos telefonhoz elég volt a Nokia vagy a SonyEriccson fejlesztői kapacitása, ide alapvetően másra és bizony jóval többre van szükség. Úgy tűnik, hogy egyelőre csak az Android lesz képes felvenni a technológiai (technológiai, nem üzleti!) versenyt.

A Symbian és a Windows meg lemaradt? Mindenki az iPhoneról és az Androidról beszél, azokra jön ki a legtöbb új szoftver.

Nem csoda, ha sokan azt állítják, hogy az iPhone előnye jelenleg legalább másfél év. Az sem csoda, hogy ezidáig nem tudtak a nagy mobilgyártók egyetlen olyan modellt (vagy inkább platformot) sem kihozni, ami megszorongatná az iPhone-t. Olyan összetett fejlesztőkörnyezetet kell felmutatni, mint amit az előző bekezdésekben éppen, hogy csak megkarcoltam.

Ömlengésnek hangzik de igaz, hogy az iPhone alapjaiban változtatta meg a mobilvilágot és a hagyományos mobilgyártók válasza még mindig nem tiszta. Ezért úgy kell nekik az Android, mint egy falat kenyér.

12 hozzászólás

  1. idézem 2008.12.09. 12:35
    szep osszeszedett iras, varom a folytatast, ami mondjuk elmeseli, h mit kell tennem ha iPhonera akarok fejleszteni, milyen lepesek vannak, mi kell hozza, hova kuldom az app-ot, mit lesz vele, stb :) mondjuk nem vagyok fejleszto, de erdekel..
  2. idézem 2008.12.13. 21:21
    • Molnar tamas
    Hali,

    Gratulalok, tetszett a cikk!

    Udv,
    Tamas
  3. idézem 2008.12.25. 13:50
    Azért aki mondjuk windows mobile-ra fejlesztett, az mosolyog ezen, mert ezek már messze iphone előtt létező dolgok voltak, csak kevesebb fény esett rájuk. Sokkal több alkalmazás van windows mobile-ra és akár Symbiánra is, valamint akár egy Omina is tudásban bucira veri az Iphone-t. Az tény, hogy az Apple megváltoztatta azt, hogy hogyan kell egy telefonnak kinézni. Androidra meg kíváncsi leszek nagyon, számomra most ez tűnik a legígéretesebb platformnak.
  4. idézem 2008.12.25. 17:22
    @felhő Oké, de akkor miért nem beszéltek róluk ennyit? Miért nem használták ennyien? Gyanítom nem csak a kinézet lehet eltérő.
  5. idézem 2008.12.27. 16:39
    Hát pedig kb. itt a hype nyom a legtöbbet latba. Az Apple ott alkotott nagyot, hogy egy jóval szélesebb körben vonzóvá tette az "okostelefont", valamint user interface terén jelentősen megváltoztatta a telefonkról kialakult képet. Illetve írtak ezekről bőven, csak nem azokon az oldalakon, amiket te olvasol. Az iphone esetén istenített programok többsége simán elérhető egyéb, régebb óta létező platformokra is.
  6. idézem 2008.12.27. 17:20
    Linkeket, szeretnék olvasni! Tényleg.
  7. idézem 2009.01.04. 19:40
    • eFi via Google Reader
    Nagyon jól összeszedett kis leírás a szifon belvilágáról (via angelday).
  8. idézem 2009.01.04. 19:40
    • angelday via Google Reader
    Szantog a szifonról, érdemes elolvasni.
  9. idézem 2009.02.17. 14:26
    • Andras via Google Reader
    htc rulez :)
  10. idézem 2009.02.17. 14:26
    • eszpee via Google Reader
    "Érdekes dolog még a telefonos megszakítások kezelése, pl. ha jön egy hívás vagy naptáresemény. Ilyenkor pause állapotba kell tennünk a programot, aztán ha a felhasználó úgy dönt, hogy felveszi a hívást, akkor a rendszer leállítja az appot." - elképesztő, a kezdeti "nekem nincs szükségem iphonera"-ból elég gyorsan "nekem nem kell iphone" lett.
  11. idézem 2009.02.17. 14:26
    • thingol via Google Reader
    nagyon jó kis post lett
  12. idézem 2009.08.20. 00:28
    szep osszeszedett iras, varom a folytatast, ami mondjuk elmeseli, h mit kell tennem ha iPhonera akarok fejleszteni, milyen lepesek vannak, mi kell hozza, hova kuldom az app-ot, mit lesz vele, stb :) mondjuk nem vagyok fejleszto, de erdekel..

    ---
    Minta Szerződés
Új hozzászólás
A sortörések automatikusak. Csak az üzenet kitöltése kötelező, a többi mező opcionális. A megadott e-mail címet nem tesszük közzé. Engedélyezett HTML tagek: p, a, strong, em, blockquote, ul, ol, li, dl, dt, dd.

Legutolsó hozzászólások

Diszkórobbanás a 90-es években és a legendás Campari diszkó: Árpika Palotáról: Szia ZooLou :-9 Te melyik részen melóztál?

Teh early agez... (így kezdődött) 1990-1992: Tamás Hölzer: Szia Gábor! Hozzájárulsz, hogy a http://zenci-blog.blogspot.com/p/disco-story.html blogban linkeljem a diszkó "történelmed"? Üdv; tamás

Diszkórobbanás a 90-es években és a legendás Campari diszkó: ZooLou: Finucsi, PG, Függöny, Dj Tökimanó, Barbi, Kacsa, Virág, Feri, Erzsi, Jana, és még sokan a csapatból! Én is lehúztam egy kis időt ott,...

A csatlakozás az iPhone Developer Program-hoz szívás: Nyéki Zoltán: Sziasztok, Arról nincs információtok vagy tanácsotok, hogy egy magyarországi kisvállalkozásnak hogy kell regisztrálnia az Applenél, hogy...

Rólam és a blogról: Szanto Peter: Szia, en is szeretnek veled app fejlesztes ugyben beszelni:) Ha aktualis szamodra uj projekt befogadasa, akkor kerlek irj. koszi, p

iMect means internet, media and other cool things. We're a small company located in Hungary. There is a big footer on every page where you can discover what we do and what happens with us.

Az iMect jelentése: internet, média és egyéb király dolgok. Egy kis magyar cég vagyunk. Minden oldalon van egy nagy lábléc, ahol felfedezheted, hogy mivel foglalkozunk.