A Google közzétette a Jelly Bean újdonságairól szóló listát, gondoltam ezt érdemes megosztani magyar nyelven is illetve a saját tapasztalataimat is beleszőni, hiszen napok óta Jelly Bean-t használok. Illetve megjelent egy remek írás a Project butterről (vaj projekt), ami elmagyarázza, hogy mitől is olyan remek a Jelly Bean és az új funkciók mellett milyen hatalmas változást kapunk a motorháztető alatt.
Sok kritika érte az Androidot korábban a lag miatt. Gyengébb telefonokon jobban, erősebb telefonokon kevésbé érződött, de tagadhatatlan tény, hogy bár az Ice Cream Sandwich óriási fejlődést hozott, azért a rendszer még nem volt tökéletes. Mostanáig. Bár a volt Google alkalmazott megmondta anno (aztán rendesen kapott cáfolatokat, hiszen sok marhaságot írt össze), hogy az Android sosem lehet olyan gördülékeny, mint az iOS, de azt hiszem a Jelly Bean a konkrét válasz arra, hogy de. Most már nem kell programozónak lenni ahhoz, hogy valaki ezt cáfolni tudja, elég kézbe venni egy Jelly Bean-el hajtott készüléket és a vita le is van zárva.
Android 4.1, Jelly Bean, is the fastest and smoothest version of Android yet.
Project Butter
Miért jó ez nekem, mi is ez tulajdonképpen? Az Android Police-on megjelent egy remek írás (köszönet nekik a képekért), de egyrészt elég hosszúra sikeredett, másrészt ugye angol nyelven van. Röviden összefoglalva:
Puffer: az elkészült képkockákat a rendszer pufferekben tárolja és ott várakoznak a megjelenítésre
Vsync: A vsync a vertical syncron sign rövidítése, vagyis függõleges szinkron jel. A grafikus mag akkor adja ezt a jelet, amikor kirajzolt egy teljes képet, és új képet kell kirajzolnia
Sárga sáv: vsync ütemek idővonala
Zöld téglalap: GPU azaz grafikus mag által készített puffer
Kék téglalap: CPU azaz processzor által készített puffer
A legtöbb Androidos készülék néven 60Hz-en fut (de mondhatjuk azt is, hogy 60 FPS-el azaz frame per secundum). Így 16 ezredmásodperc ideje van a programnak kirajzolni a következő képkockát. Ha ez nem sikerül, el is olvad a vaj sima érzés (tetszett ez a megfogalmazás, ezért át is vettem). Ice Cream Sandwich alatt a következő képkocka kirajzolása akkor indul, amikor a rendszer ráér, vagy időben vagy nem. Ahogy esik, úgy puffan. S bár sokkal gördülékenyebb a korábbiakhoz képest, mégsem tökéletes. Vessetek egy pillantást a képre (a sárga sáv a vsync ütemeket mutatja, a kék illetve zöld téglalap pedig a puffert):
Jelly Bean alatt a Vsync impulzusok vezérlik a képkockák rajzolását, tehát mialatt mondjuk a 0. képkockát kirajzolja a rendszer, már ki is számolja is az elsőt, így amint letelik a 16ms, készen áll a megjelenítendő következő képkocka és időben meg is tud jelenni. Ezt láthatjuk a képen (mindig a következő ütem – sárga sáv – előtt elkészül a puffer):
Ezzel el is értük a vaj sima érzést. Vagy mégsem? Jelly Bean alatt az ütemezési szabályok bevezetése mellett megjelent a tripla pufferelés is. Korábban a szokásos dupla pufferelés volt használatban Androidon. Azaz egy képkockát megjelenített a rendszer és a következőt pufferelte, hogy meg tudja jeleníteni, amikor szükséges. Így néz ki egy tipikus dupla pufferelés, ha a rendszer elfoglalt. Elkezd hibázni, majd folytatja a folyamat végéig, hiszen az egyik puffer meg van jelenítve, a másik pedig várakozik arra, hogy megjelenjen, nincs üres puffer helyrehozni a problémát.
Minden mágia ellenére Jelly Bean alatt is előfordulhat (ahogy iOS és a többi operációs rendszer alatt is), hogy a rendszer annyira le van terhelve, hogy nem tudja időben kirajzolni a következő képkockát és így bizony lesz egy kis röcögés. Ez nem probléma, volt már ilyen a történelemben. De a Jelly Bean képes ebből a gödörből is a lehető leghamarabb kikecmeregni, hiszen itt van nekünk a tripla pufferelés. Tegyük fel, hogy kicsit elfoglaltabb a rendszer, mint szeretnénk. Kirajzolja az aktuális képkockát, de sajnos lassan és várakozik a következő. Semmi probléma, a rendszer már nem elfoglalt, így a harmadik pufferben előre gondolkodik és adott vsync impulzuson belül elkezdi pufferelni, így meg tudja jeleníteni amikor eljön az ideje. Képen talán egyszerűbb értelmezni:
De ha ez ekkora királyság, miért nem használ az Android folyamatosan tripla pufferelést? Nos, a tripla pufferelés beviteli laghoz vezet. Nézzétek meg a képen a C puffert (kék és zöld téglalap), ami ugye a harmadik és nézzétek meg felül, a sárga vonalon, hogy milyen későn fogja kirajzolni a rendszer. A kettő között pedig hiába adunk utasítást, még korábbi képkockát fog kirajzolni. Tehát ha a rendszer elfoglalt választhatunk, hogy az animáció lagoljon vagy a bevitel. A Google úgy döntött, hogy a bevitel várhat. S mivel az input lagot sem szeretjük, amint utolérte magát a rendszer, azonnal meg is szűnik a tripla pufferelés és visszatér a megszokott dupla.
Most, hogy már tudjuk miről van szó, nézzük meg, hogy az Ice Cream Sandwich hogy viszonyul a Jelly Beanhez nagy sebességű kamerafelvételen:
Illetve vessünk egy pillantást arra, hogy mennyire sima a felület használat közben (én néha csak azért váltogatok az alkalmazások között, hogy láthassam a rendszer simaságát. Elképesztő):
Mostanra biztosan elfáradtatok kicsit, én is. :) A cikk folytatása következik hamarosan, ahol a Jelly Bean újdonságait mutatjuk be.