Kaj je jedro? Če boste ves čas brali forume, bloge, objave z navodili ali spletno razpravo o Androidu, boste kmalu slišali ljudi, ki govorijo o jedru. Jedro ni nekaj edinstvenega za Android - iOS in MacOS ga imata, Windows ga ima, BlackBerryjev QNX ga ima, pravzaprav ga imajo vsi operacijski sistemi na visoki ravni. Tisti, ki nas zanima, je Linux, saj ga uporablja Android. Poskusimo razčleniti, kaj je in kaj počne.
Naprave Android uporabljajo jedro Linuxa, stavite, da vsak telefon uporablja svojo različico tega. Vzdrževalci jeder Linux ohranjajo vse urejeno in na voljo, sodelavci (kot je Google) dodajajo ali spreminjajo stvari, da lažje izpolnijo njihove potrebe, pa tudi ljudje, ki izdelujejo strojno opremo, prispevajo, ker morajo razviti gonilnike strojne opreme za dele, ki jih uporabljajo za različico jedra, ki jo uporabljajo. Zato neodvisni razvijalci in hekerji za Android potrebujejo nekaj časa, da nove različice prenesejo na starejše naprave in dosežejo vse. Gonilniki, napisani za delo z eno različico jedra za telefon, morda ne delujejo z drugo različico programske opreme na istem telefonu. In to je pomembno, saj je ena od glavnih funkcij jedra nadzor nad strojno opremo. Gre za cel kup izvorne kode, z več možnostmi, medtem ko jo gradite, ampak na koncu je le posrednik med strojno in programsko opremo.
Ko programska oprema potrebuje strojno opremo, da naredi karkoli, jedru pošlje zahtevo. In ko rečemo karkoli, mislimo karkoli. Od svetlosti zaslona, do glasnosti, do klica prek radia, tudi tisto, kar je narisano na zaslonu, na koncu nadzira jedro. Na primer - ko se dotaknete gumba za iskanje v telefonu, programski opremi rečete, da odpre iskalno aplikacijo. Zgodilo se je, da ste se dotaknili določene točke na digitalizatorju, ki sporoča programski opremi, da ste se na teh koordinatah dotaknili zaslona. Programska oprema ve, da naj bi se ob dotiku tega mesta odprlo iskalno pogovorno okno. Jedro je tisto, kar naloži digitalizatorju, naj si pogleda (ali posluša, dogodke "poslušajo") za dotakne, pomaga ugotoviti, kje ste se dotaknili, in pove sistemu, ki ste se ga dotaknili. Ko sistem prejme jedro (prek gonilnika) na določeni točki dotika, ve, kaj narisati na zaslonu. Tako strojna kot programska oprema komunicirata z jedrom na oba načina in tako vaš telefon ve, kdaj kaj storiti. Vhod z ene strani se pošlje kot izhod na drugo, ne glede na to, ali igrate Angry Birds ali se povežete z Bluetooth v avtomobilu.
Sliši se zapleteno in je. Je pa tudi precej standardna računalniška logika - za vsak dogodek se sproži nekakšna akcija, odvisno od tega, kaj se dogaja s tekočo programsko opremo. Brez jedra, ki bi sprejemalo in pošiljalo informacije, bi razvijalci morali napisati kodo za vsak posamezen dogodek za vsak kos strojne opreme v vaši napravi. Pri jedru je treba samo komunicirati z njim prek API-ja za sistem Android, razvijalci strojne opreme pa morajo samo zagotoviti, da strojna oprema naprave komunicira z jedrom. Dobra stvar je, da vam ni treba natančno vedeti, kako ali zakaj jedro počne, kar počne, samo razumevanje, da gre za prehod med programsko in strojno opremo, dokaj dobro razume, kaj se dogaja pod kozarcem.
Nekako daje povsem nove poglede na tiste, ki ostajajo vso noč, da bi delali jeder za telefon, kajne?