Skip to content

Programmeerimine iPhone ja Androidi peal

iPhone OS rakenduste arendamine käib valdavalt Objective-C programmeerimiskeele abil, mis poleks probleem kui vaid selle oskajaid oleks rohkem. Väljaspool iPhone OS’i ja Mac OS X’i seda praktiliselt ei kasutata! Androidil käib programmeerimine seevastu laialtlevinud Java keele abil kuid kõiki harjumuspäraseid klasse ja võimalusi seal ei eksisteeri.

Objective-C

Tegu on C keele laiendusega, millele on lisatud objektorienteeritud programmeerimise võimalusi (klassid, erindid jne), mis võimaldavad C-st kiiremini ja veavabamalt valmis kirjutada suure osa rakendusest. Samas jääb alati alles võimalus hüpata madala taseme C peale ajakriitilistes juppides.

NSLog(@"%@", [minuObjekt description]);
NSLog(@"%@", objc_msgSend(minuObjekt, sel_registerName("description")));

Mõlemad koodiread on sisult identsed kuid esimene kasutab Objective-C süntaksit ja teine C süntaksit koos Objective-C runtime-ga. Objective-C koodi kompileerimisel muudetakse see põhimõtteliselt C koodiks, misjärel seda töödeldakse edasi. Keele dünaamiline olemus võimaldab jooksvas rakenduses vajadusel üle kirjutada kasvõi Apple baasklasside meetodeid. Ruby-s on selline tegevus saanud üleliigse kasutamise tõttu halva imago (vt monkey patching, aga vahel muudmoodi ei saa).

Varem sai öeldud, et C-d kasutatakse peamiselt ajakriitilistes punktides, näiteks oleme seda kasutanud Open GL mängu graafikamootori arendamisel ning rakendusesisesel pilditöötluses. Samas on C tundmine hädavajalik  ka siis, kui on vaja teha miskit, mille peale Apple mõelnud ei ole – näiteks siiani ei ole iPhone’l päris korrektset eesti keele tuge, ent kombineerides mõningast C koodi Objective-C runtime-ga on võimalik selgeks teha, kas telefon on Eesti tõugu või mitte ning rakendusi siis vastavalt eesti või inglise keeles kuvada.

Java

Java ilmselt pikemat tutvustamist ei vaja, sest tegu on laialtlevinud programmeerimiskeelega, mida õpetatakse palju ka Eesti kõrgkoolides. Suur osa tava-Java klasse on olemas ka Androidile ja lisaks mahukas Androidi SDK, mis võimaldab ehitada kasutajaliidest, positsioneerida, reageerida puudutustele jne. Androidi eripäraks on ka Dalvik virtuaalmasin, mis ei kasuta Java bytecode‘t, ei toeta J2ME klasse ega tavapäraseid Java kasutajaliidesekomponente (AWT, Swing) ning on optimeeritud töötama mobiiliseadmete kitsastes oludes.

4 Comments

  1. Tauno wrote:

    optimeeritud, mitte optimiseeritud ;)

    Teisipäev, jaanuar 26, 2010 at 16:34 | Permalink
  2. janekp wrote:

    Jajah, muudetud. thx :P

    Teisipäev, jaanuar 26, 2010 at 20:29 | Permalink
  3. Reyo wrote:

    Miks siis seda oop c-d nii vähe liigub? Saan aru et tegelikult on C kõige alus ja järelikult parem. Mis täpsemalt Cocoa on :) või Cocoa ongi OOP-C?

    Java võib olla igati crossplatform aga lihtsalt on minu jaoks oma nime ära määrinud oma aegluse, kohmakuse ja koledusega (GUI tarkvara siis, Eclipse nt macil, jpm)

    Neljapäev, veebruar 4, 2010 at 10:05 | Permalink
  4. janekp wrote:

    C-ga on võimalik tugevalt näppu lõigata nii, et ei julge päris väita, et Java/C# on kehvemad. Ise eelistan C#’d Javale, sest see tundub “loomulikum”, aga mõlema keele puhul on programmerijal võimalus teha vähem vigu. Vähem vigu tähendab tavaliselt kiiremat arendamist, aga hinnaks on performance kadu, mis on mobiiliseadmetel kriitiline.

    Kui C-s teed mõne mäluhalduse või “buffer overflow” stiilis vea, siis sageli viga kohe ei ilmne. Ilmneb viitega fataalselt ja siis ei pruugigi aru saada kust tekkis. See tähendab, et programmeerija peab olema väga tähelepanelik!

    Objective-C oskajate vähesus on suuresti tingitud sellest, et seda kasutati praktiliselt ainult mäkkidel ja mäkikasutajaid ei ole kunagi olnud liiga palju.

    Cocoa on kogum Application Programming Interface ehk API-dest. Kogu baasklassidest, mida igapäevaselt rakenduste kirjutamisel tuleb kasutada. Näiteks sõned, massiivid, aknad, nupud jne.

    Cocoa = Foundation Kit + Application Kit API (mäki kasutajaliidese klassid)
    Cocoa Touch = Foundation Kit + UIKit API (iPhone kasutajaliidese klassid)

    Neljapäev, veebruar 4, 2010 at 10:43 | Permalink

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*

Spam Protection by WP-SpamFree

AWSOM Powered