Què és un nucli? Si dediqueu un temps a llegir fòrums, blogs, publicacions pràctiques o debats en línia, aviat se sentirà gent parlant sobre el nucli. Un nucli no és quelcom únic a Android: iOS i MacOS en tenen un, Windows en té un, BlackBerry QNX en té un, de fet tots els sistemes operatius d’alt nivell en tenen un. El que ens interessa és Linux, ja que és el que fa servir Android. Intentem desglossar el que és i el que fa.
Els dispositius Android utilitzen el nucli Linux, aposta perquè cada telèfon utilitzi la seva pròpia versió. Els mantenidors del nucli de Linux ho mantenen tot ordenat i disponible, els col·laboradors (com Google) afegeixen o modifiquen les coses per satisfer millor les seves necessitats i les persones que elaboren el maquinari també contribueixen, perquè necessiten desenvolupar controladors de maquinari per a les parts que utilitzen per a les versió del nucli que estan fent servir. És per això que es necessita un temps perquè els desenvolupadors i pirates informàtics independents d'Android portin versions noves a dispositius més antics i facin que tot funcioni. És possible que els controladors escrits per treballar amb una versió del nucli per a un telèfon no funcionin amb una versió diferent del programari del mateix telèfon. I això és important, perquè una de les funcions principals del nucli és controlar el maquinari. Es tracta d’un codi font complet, amb més opcions mentre es construeix el que es pot imaginar, però al final és només l’intermediari entre el maquinari i el programari.
Quan el programari necessita el maquinari per fer qualsevol cosa, envia una sol·licitud al nucli. I quan diem qualsevol cosa, volem dir qualsevol cosa. Des de la brillantor de la pantalla, fins al nivell de volum, fins a iniciar una trucada a través de la ràdio, fins i tot el que es dibuixa a la pantalla és controlat en última instància pel nucli. Per exemple: quan toqueu el botó de cerca al telèfon, diteu al programari que obri l'aplicació de cerca. El que passa és que has tocat un punt determinat del digitalitzador, que indica al programari que has tocat la pantalla en aquestes coordenades. El programari sap que quan es toca aquest punt en concret, se suposa que el diàleg de cerca s'obre. El nucli és el que demana al digitalitzador que busqui (o escolti, els esdeveniments es "escolten" per als tocs, ajuda a esbrinar on has tocat i indica al sistema que el has tocat. Al seu torn, quan el sistema rep un esdeveniment tàctil en un punt concret del nucli (a través del controlador) sap què dibuixar a la pantalla. Tant el maquinari com el programari es comuniquen de totes dues maneres amb el nucli, i és així com el telèfon sap quan cal fer alguna cosa. L’entrada d’un costat s’envia com a sortida a l’altra, tant si es tracta de jugar a Angry Birds com si es connecta al Bluetooth del cotxe.
Sona complicat, i ho és. Però també és una lògica informàtica prou normal: hi ha una acció generada per a cada esdeveniment i, en funció d'aquesta acció, es produeixen coses del programari en execució. Sense que el nucli accepti i enviï informació, els desenvolupadors haurien d’escriure codi per a cada esdeveniment per a cada peça de maquinari del dispositiu. Amb el nucli, tot el que ha de fer és comunicar-se a través de l'API del sistema Android, i els desenvolupadors de maquinari només han de fer que el maquinari del dispositiu es comuniqui amb el nucli. El bo és que no necessiteu saber exactament com o per què el nucli fa el que fa, només entendre que es troba entre el programari al maquinari us proporciona una bona comprensió del que passa sota el vidre.
És una mica de perspectiva nova cap als companys que es queden tota la nit a treballar amb nuclis per al telèfon, no?