

Arhitectura celor doua platforme
Ambele platforme se bazeaza pe Linux. Filozofia celor de la Android este "full multitasking", pe cand cea a celor de la Apple este"single 3rd party application running". Din aceasta cauza nivelele arhitecturale difera. Imaginea urmatoare afiseaza majoritatea componentelor unui sistem de operare de tip Android.

Programatorii au acces la schema API-urilor utilizate de aplicatiile standard. Arhitectura aplicatiilor este conceputa in a simplifica reutilizarea componentelor de cod.
Android include un set de librarii C/C++ utilizate de diferite componente ale sistemului. Mai exista si un set de librarii ce sunt utilizate de masina virtuala Dalvik.
Kernel-ul este specific fiecarui echipament, deoarece contine drivere care difera de la un contructor la altul. Kernel-ul furnizeaza servicii cum ar fi gestiunea memoriei, gestiunea proceselor, stiva de retea, servicii de securitate si gestiunea perifericelor prin drivere. Kernel-ul se comporta ca un nivel abstract intre hardware si restul stivei de software.
La iPhone arhitectura software este tributara Cocoa. Cocoa este structurata in librarii, API-uri si software-uri ce formeaza un nivel de programare pentru toate aplicatiile Mac OS X.

Sistemul fundamental de servicii al SO este furnizat pentru toate aplicatiile de niv elul Core Services. Chiar daca nu sunt utilizate in mod direct foarte multe parti din aplicatii se bazeaza pe aceste servicii.Core OS este chiar kernel-ul. La acest nivel sunt interfete C ce furnizeaza obiecte abstracte pentru a lucra cu protocoale de retea, de a comunica cu accesoriile hardware ale iPhone-ului, de a garanta securitatea datelor.
Arhitectura unei aplicatii
Arhitectura unei aplicatii difera intre iPhone si Android. Aplicatiile in Android sunt scrise in Java iar cele in iPhone sunt scrise in Object-C. La sistemul Android fiecare aplicatie ruleaza propriul ei proces Linux. Fiecare proces are propria lui masina virtuala, astfel incat codul poate rula izolat fata de celelalte coduri ale altor aplicatii. Daca privim aplicatia ca o cutie neagra, in Android nu exista o singura intrare (nu exista functia main() spre exemplu). Mai curand, aplicatiile de tip Android au componente esentiale ce sistemul le poate instantia si rula la cerere. Exista patru componente ce pot fi instantiate de catre aplicatii: cele legate de activitatea aplicatiei (activity), serviciile oferite (service), furnizarea continutului de date (content providers) si difuzarea de informatii receptorilor (broadcast receivers).
Spre exemplu, daca una din aplicatii are nevoie pentru a afisa o lista de imagini de un meniu de defilare si o alta aplicatie contine un tip de meniu de defilare si il furnizeaza pentru celelalte aplicatii, atunci, se poate prelua acesta fara a crea un altul nou. Aplicatia nu include codul celeilalte aplicatii cau o legatura spre el. Mai degraba aplicatia lanseaza acea parte de cod a celeilalte aplicatii cand va avea nevoie. Putem spune ca v-a "imprumuta" pentru o perioada scurta de timp si spatiu memorie meniul de defilare, de fiecare data cand este nevoie.
Android este mult mai flexibil cand este vorba de modelele de proiectare. Modele de proiectare cum ar fi MVC (Model-View-Controller) sau Null pot fi aplicate in creearea de aplicatii.
Ciclul de viata al unei aplicatii
Ciclul de viata al unei aplicatii este constituit din secvente de evenimente ce apar pe durata intre lansarii aplicatiei si terminarea ei. La iPhone, utilizatorul lanseaza aplicatia prin apasarea cu degetul a icoanei aflate pe ecran (Home screen). La foarte putin timp dupa aceea, sistemul afiseaza imagini de tranzitie si procedeaza la lansarea aplicatiei apeland functia main(). Din acest moment, cea mai mare parte a procedurii de initializare este preluata de UIKit, care incarca interfata aplicatiei utilizatorului si pregateste bu cla de evenimente. In timpul rularii buclei de evenimente, UIKit coordoneaza evenimentele furnizate te obiectele personalizate si raspunde comenzilor emise de aplicatie.


Cum am vazut deja, in Android, aplicatiile ruleaza ca procese Linux separate. Astfel ciclul de viata al unei aplicatii este raportat la ciclul de viata a procesului. Ciclul de viat a al unui proces-aplicatie este gestionat de sistem in functie de starea memoriei aparatului. In cazul unei congestii de memorie, sistemul Android elimina procesele mai putin importante. Gradul de importanta a unui proces este decis in functie de starea proceselor componente. Exista mai multe tipuri de procese: procese de prim-plan, procese vizi bile, procese de servicii, procese de fundal si procese goale. In figura de mai jos sunt infatisate cateva metode apelate in timpul ciclului de viata de o activitate. Acestea sunt: onCreate, onStart, Process-specific events, onStop, onDestroy.

Interfata grafica a utilizatorului
Interfata grafica a lui iPhone este compusa dintr-un set de ecrane proiectate pentru tehnologia touch. Elementele GUI a iPhone include vederi si mecanisme de control. Vederile furnizeaza practic intrerfata grafica, culorile, formele. Mecanismele de control au grija sa raspunda la actiunile utilzatorilor (adica la apasarea ecranului spre exemplu). Anatomia unui mecanism de control a interfetei grafice este prezentat in figura de mai jos.

Utilitare pentru dezvoltare de aplicatii
Pentru dezvoltare de aplicatii pe iPhone, Apple furnizeaza un utilitar numit Xcode. Xcode este un mediu de dezvoltare integrat (IDE), care oferă toate instrumentele de care este nevoie pentru a crea şi de a gestiona proiectele de aplicatii iPhone şi fişierele sursă. Xcode poate construi codul într-un executabil, şi a-l rula şi depana, fie în simulatorul de iPhone, fie direct pe un dispozitiv.

Pentru a crea o noua aplicatie iPhone, trebuie sa se inceapa mai intai prin crearea unui nou proiect în Xcode. Un proiect gestionează toate informaţiile asociate cu aplicaţia iPhone, adica, fişierele sursă, construirea de setări, regulile necesare pentru a asambla toate informatiile legate de aplicatie. Centrul fiecarui proiect Xcode este fereastra proiectului, se arată în figura 1. Această fereastră oferă acces rapid la toate elementele cheie ale candidaturii dumneavoastră. Grupuri şi lista Fişiere este locul unde să vă gestionaţi fişiere în proiectul dumneavoastră, inclusiv fişierele sursă şi construi obiective pe care sunt create din aceste fişiere sursă. Bara de instrumente oferă acces la instrumente şi comenzi utilizate în mod obişnuit, în timp ce panoul de detalii oferă un spaţiu de configurabil pentru a lucra la proiectul dumneavoastra. Alte aspecte ale fereastra proiectului va oferi informaţii contextuale despre proiect.
