{"id":1098,"date":"2010-10-05T06:11:42","date_gmt":"2010-10-05T05:11:42","guid":{"rendered":"http:\/\/www.plagosus.net\/blog\/?p=1098"},"modified":"2010-10-05T14:20:21","modified_gmt":"2010-10-05T13:20:21","slug":"uvod-u-arhitekturu-android-osa-za-programere","status":"publish","type":"post","link":"https:\/\/www.plagosus.net\/blog\/dev\/android\/uvod-u-arhitekturu-android-osa-za-programere\/","title":{"rendered":"Uvod u arhitekturu Android OS-a za programere"},"content":{"rendered":"<p style=\"text-align: justify;\"><a href=\"http:\/\/www.plagosus.net\/blog\/wp-content\/uploads\/2010\/10\/android-logo.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.plagosus.net\/blog\/wp-content\/uploads\/2010\/10\/android-logo-150x150.png\" alt=\"\" title=\"Android logo\" width=\"150\" height=\"150\" class=\"alignright size-thumbnail wp-image-1101\" \/><\/a>Ovo je prvi iz serije tekstova o programiranju na <strong><a href=\"http:\/\/plagosus.net\/blog\/tag\/android\">Andorid<\/a><\/strong> platformi, o \u010demu \u0107u vi\u0161e pisati u narednom periodu. Pre nego \u0161to krenete da radite bilo \u0161ta vezano za razvoj aplikacija za ovu platformu, potrebno je da se upoznate sa samom arhitekturom <a href=\"http:\/\/www.android.com\/\" target=\"_blank\">Androida<\/a>, a Google tim je za tu priliku pripremio 3 odli\u010dna video klipa iz <em>Andriodology<\/em> serijala sa obja\u0161njenjem najosnovnijih stvari koje traba da znate o samoj <strong>organizaciji arhitekture OS<\/strong>-a, <strong>\u017eivotnom ciklusu aplikacija<\/strong>, <strong>procesima<\/strong> i osnovnim svojstvima <acronym title=\"Application Programming Interface\"><strong>API<\/strong><\/acronym>-ja koji <strong><a href=\"http:\/\/developer.android.com\/sdk\/\" target=\"_blank\">Android SDK<\/a><\/strong> omogu\u0107ava.<\/p>\n<p style=\"text-align: justify;\">Ovde \u0107u ukratko opisati sve ono \u0161to je bitno za predznanje pre no \u0161to krenete u pisanje svoje <em>Hello World<\/em> aplikacije, no u svakom slu\u010daju preporu\u010dujem da pogledate ova tri video snimka u kojima je sve, kroz primere, obja\u0161njeno.<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/www.plagosus.net\/blog\/wp-content\/uploads\/2010\/10\/android-system-architecture.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-1099\" title=\"Arhitektura Android sistema\" src=\"http:\/\/www.plagosus.net\/blog\/wp-content\/uploads\/2010\/10\/android-system-architecture-640x459.jpg\" alt=\"\" width=\"640\" height=\"459\" \/><\/a><\/p>\n<p><!--more--><\/p>\n<h2>Pregled arhitekture<\/h2>\n<p style=\"text-align: justify;\">U prvom video snimku obja\u0161njena je arhitektura i interna organizacija samog Androida. U osnovi svega nalazi se modifikovani <strong><a href=\"http:\/\/en.wikipedia.org\/wiki\/Linux_kernel\" target=\"_blank\">Linux kernel<\/a><\/strong> 2.6 koji se brine za komunikaciju sa hardverom, drajvere, upravljanje procesima i memorijom. Sam Linux kernel napisan je u programskom jeziku <strong>C<\/strong>. Iznad kernela, nalaze se sistemske biblioteke pisane u <strong>C++<\/strong> programskom jeziku i tu su stvari vezane za rad sa grafikom, fontovima, multimedijom, \u010duvanjem podataka, obradom web strana i sl. Na njih se vezuje <em>Android Runtime<\/em> u kome se istovremeno mo\u017ee izvr\u0161avati vi\u0161e <strong><a href=\"http:\/\/en.wikipedia.org\/wiki\/Dalvik_(software)\" target=\"_blank\">Delvik<\/a><\/strong> virtuelnih ma\u0161ina. \u010cisto podse\u0107anja radi, Delvik je virtuelna ma\u0161ina za Java programe koja je napisana nezavisno od <a href=\"http:\/\/en.wikipedia.org\/wiki\/Java_Virtual_Machine\" target=\"_blank\">Java VMa<\/a>, a u osnovi radi istu stvar, samo na malo druga\u010diji na\u010din. Naime, <em>Java bytecode<\/em> (.class) se ne izvr\u0161ava kao takav, ve\u0107 se vi\u0161e klasa prevodi u jedan jedinstveni <em>Delvik izvr\u0161ni format<\/em> (.dex) koji je optimizovan za rad na slabijim procesorima i zahteva manje memorije &#8211; \u0161to je pogodno za mobilne ure\u0111aje. Na vrhu svega (programerski) je <em>Application Framework<\/em>, pisan u <strong>Java<\/strong> programskom jeziku, gde su sve komponente koje su bitne programerima koji \u017eele da razvijaju aplikacije za Android platformu. Tu su razni menad\u017eeri koji se brinu za rad sa akcijama, prozorima, sadr\u017eajem, resursima, notifikacijama, lokaciji, telefonskim opcijama i rad sa paketima. U doti\u010dnom framework-u napisane su sve aplikacije, uklju\u010duju\u0107i i one koje fabri\u010dki dolaze uz Android i one koje pi\u0161u drugi developeri.<\/p>\n<p><object width=\"640\" height=\"505\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/QBGfUs9mQYY?fs=1&amp;hl=en_US&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/QBGfUs9mQYY?fs=1&amp;hl=en_US&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"640\" height=\"505\"><\/embed><\/object><\/p>\n<h2>\u017divotni ciklus aplikacije<\/h2>\n<p style=\"text-align: justify;\">Slede\u0107a stvar, posle same arhitekture, koja je bitna programerima je kako se sama aplikacija pona\u0161a u toku izvr\u0161avanja i kako se odvija <em><strong>multitasking<\/strong><\/em>. Nije da se o ovome ne brine svaki operativni sistem i da je ovo u osnovi svakog ra\u010dunara, po\u010dev\u0161i od onih prvih centralizovanih na koje su naka\u010deni terminali koji dobijaju deo po deo procesorskog vremena &#8211; jer se u jednom trekutku mogu izvr\u0161avati instrukcije samo jedne aplikacije, ali nije zgore pogledati kako se konkretno to odvija na Androidu. Kako je svaki deo memorije, a i procesorske snage, uvek bitan (\u0161to zbog br\u017eeg i efikasnijeg rada, to i zbog potro\u0161nje elektri\u010dne energije i trajanja baterije) sistem se trudi da u aktivnosti dr\u017ei samo ono \u0161to je u tom trenutku neophodno (kao i ono \u0161to bi uskoro\/slede\u0107e moglo da nam zatreba). Stoga se, ukoliko imamo vi\u0161e aktivnih aplikacija, \u010duvaju stanja aplikacija koje rade u pozadini (na osnovu kojih sistem kasnije mo\u017ee da restauira sadr\u017eaj) a same procese ubija osloba\u0111aju\u0107i resurse za aplikaciju koja je trenutno prikazana na ekranu. Kada \u017eelimo da se vratimo na neku od pokrenutih aplikacija, sistem ponovo pokre\u0107e instancu \u017eeljene aplikacije i restauira prethodno stanje, \u0161to rezultuje da mi vidimo sve identi\u010dno kao kada smo iz aplikacije iza\u0161li tj. pre\u0161li na novu aplikaciju.<\/p>\n<p><object width=\"640\" height=\"505\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/fL6gSd4ugSI?fs=1&amp;hl=en_US&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/fL6gSd4ugSI?fs=1&amp;hl=en_US&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"640\" height=\"505\"><\/embed><\/object><\/p>\n<h2>API u Androidu<\/h2>\n<p style=\"text-align: justify;\">U tre\u0107em video snimku ukratko su opisane mogu\u0107nosti nekoliko zanimljivijih API-ja i na\u010din na koji se isti mogu primeniti u na\u0161oj aplikaciji. Predstavljeni su:\u00a0<em><strong>Location Manager<\/strong><\/em> uz pomo\u0107 koga se lako barata sa mapama i geografksim podacima vezanim za iste; <em><strong>XMPP<\/strong> servis<\/em> koji koristi <em>Gmail<\/em> infrastrukturu i uz pomo\u0107 koga se mogu razmenjivati bilo kakvi podaci izme\u0111u vi\u0161e ure\u0111aja, bilo da su to odre\u0111ene vrednosti bitne za neku aplikaciju, geografki podaci ili poruke za \u0107askanje; <em><strong>Notification Manager<\/strong><\/em> koji na jedinstveni na\u010din integri\u0161e i prikazuje poruke iz bilo koje aplikacije, web servisa ili sl. koje korisnik vidi na svom po\u010detnom ekranu; <em><strong>Pogledi<\/strong><\/em> (<em>Views<\/em>) koji sadr\u017ee standardne komponente uz pomo\u0107 kojih se izgra\u0111uju kompleksnije aplikacije&#8230;<\/p>\n<p><object width=\"640\" height=\"505\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/MPukbH6D-lY?fs=1&amp;hl=en_US&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\"><\/param><param name=\"allowFullScreen\" value=\"true\"><\/param><param name=\"allowscriptaccess\" value=\"always\"><\/param><embed src=\"http:\/\/www.youtube.com\/v\/MPukbH6D-lY?fs=1&amp;hl=en_US&amp;rel=0&amp;color1=0x006699&amp;color2=0x54abd6\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"640\" height=\"505\"><\/embed><\/object><\/p>\n<p style=\"text-align: justify;\">Posle ovoga, napisa\u0107u uputstvo: <em>\u0161ta je sve potrebno instalirati i kako se pode\u0161ava razvojno okru\u017eenje za programiranje aplikacija za Android platrofmu<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ovo je prvi iz serije tekstova o programiranju na Andorid platformi, o \u010demu \u0107u vi\u0161e pisati u narednom periodu. Pre&#8230;<\/p>\n","protected":false},"author":2,"featured_media":1101,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[136],"tags":[280,137,21],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/posts\/1098"}],"collection":[{"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/comments?post=1098"}],"version-history":[{"count":0,"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/posts\/1098\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/media\/1101"}],"wp:attachment":[{"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/media?parent=1098"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/categories?post=1098"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.plagosus.net\/blog\/wp-json\/wp\/v2\/tags?post=1098"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}