{"id":418,"date":"2018-01-11T18:23:42","date_gmt":"2018-01-11T15:23:42","guid":{"rendered":"http:\/\/melic.com\/wp1\/?p=418"},"modified":"2018-01-11T18:23:42","modified_gmt":"2018-01-11T15:23:42","slug":"android-ve-mimarisi","status":"publish","type":"post","link":"https:\/\/melic.com\/wp1\/android-ve-mimarisi\/","title":{"rendered":"Android ve Mimarisi"},"content":{"rendered":"<p>Android i\u015fletim sistemi orijinal olarak sadece 32-bit i\u015flemciler i\u00e7in yaz\u0131lm\u0131\u015ft\u0131r, \u00f6zellikle 32-bit ARM i\u015flemcileri i\u00e7in. Sonralar\u0131 Intel ve MIPS Android deste\u011fi i\u00e7in yat\u0131r\u0131mlar yapmaya ba\u015flad\u0131 ama hala 32-bit i\u015flemciler i\u00e7in. Bunun esas sebebi ise bir standart olmas\u0131 ve muhtemelen uyumsuzluk sorunlar\u0131 ile kar\u015f\u0131la\u015fmamak i\u00e7indi. Tabi esas\u0131nda bunun alt\u0131nda yatan bir di\u011fer ger\u00e7ek \u015fu anda Android&#8217;te kullan\u0131lan uygulamalar\u0131n \u00e7ok b\u00fcy\u00fck bir \u00e7o\u011funlu\u011funun saf kod (binary code) olarak yay\u0131mlanmamas\u0131. Hemen hemen bir \u00e7o\u011fu JAVA da yaz\u0131ld\u0131\u011f\u0131 i\u00e7in sanal uygulama (bytecode) olarak \u00e7al\u0131\u015fmakta<\/p>\n<blockquote><p>Binary &#8211; Saf Kod (0\/1): herhangi bir VM taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131lmay\u0131p direkt makine dilinde yaz\u0131lm\u0131\u015f yada derlenmi\u015f ve sistemle direkt \u00e7al\u0131\u015fabilen kodlara denir.\u00c7ok daha h\u0131zl\u0131 \u00e7al\u0131\u015f\u0131rlar.Makine dili 0 ve 1 lerden olu\u015fmaktad\u0131r..<\/p><\/blockquote>\n<blockquote><p>ByteCode &#8211; Sanal Uygulama : Ad\u0131 sizi kand\u0131rmas\u0131n normal binary koddan fark\u0131 gerekli kut\u00fcphanaleri ba\u011fl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131 sanal makinesi \u00fczerinden almakta arada bir katman oldu\u011fu i\u00e7in mili saniyeler d\u00fczeyinde yava\u015fl\u0131k olsa da k\u00fct\u00fcphaneyi kendi i\u00e7inde ta\u015f\u0131mak zorunda olmad\u0131\u011f\u0131 i\u00e7in haf\u0131za gereksinimlerini azaltmakta ve daha da \u00f6nemlisi uyumsuzluk s\u0131k\u0131nt\u0131s\u0131 minimize edilmektedir.<\/p><\/blockquote>\n<p>\u00d6zetle ikisininde birbirine g\u00f6re avantajlar\u0131 ve dezavantajlar\u0131 var tabi ki.\u0130nan\u0131n buraya tek tek yazmaya kalksam en az iki \u00fc\u00e7 g\u00fcn yaz\u0131 yazmam gerekir. Ama ba\u015fl\u0131\u011f\u0131m\u0131za ba\u011fl\u0131 kalmak ad\u0131na k\u0131saca anlaman\u0131z i\u00e7in \u015f\u00f6yle ufak bir iki \u00f6rnek daha vereyim istiyorum: <\/p>\n<p>JVM \u00fczerinde ko\u015fmas\u0131 i\u00e7in yaz\u0131lm\u0131\u015f olan uygulamalar Java bunu bulundu\u011fu makinenin mimarisine g\u00f6re derleyip \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131ndan multiplatform, yani hemen hemen JVM&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131 her platformda uygulamay\u0131 \u00e7al\u0131\u015ft\u0131racakt\u0131r.Bu sebepten i\u015f uygulamalar\u0131n\u0131n hemen hemen hepsi bytecode olarak y\u00fcklenir veya \u00f6yle olmas\u0131 en mant\u0131kl\u0131s\u0131; aksi halde her uygulama i\u00e7in her \u00e7al\u0131\u015faca\u011f\u0131 cihaz ve platform i\u00e7in  kendi k\u00fct\u00fcphanesini ve derleyicisini yan\u0131nda kopyalamak zorunda kal\u0131rd\u0131n\u0131z. <\/p>\n<p>Yukar\u0131da yazd\u0131klar\u0131m genel bilgi anlam\u0131nda do\u011fruda olsa gelelim buna ARM yap\u0131s\u0131 \u00fczerinden bakal\u0131m. ARM Lollipop ile beraber yeni jenerasyon 64 bit i\u015flemci deste\u011fi geldi. Bunun ARM i\u015flemcileri i\u00e7in uygulama geli\u015ftiren yaz\u0131l\u0131mc\u0131lar i\u00e7in ise bug\u00fcn tek avantaj\u0131 var art\u0131k 4GB ve \u00fczeri ram adreslemesi yapabilmek. Bildi\u011fimiz %98 Android  uygulamalar\u0131n buna ihtiyac\u0131 bulunmamakta ancak \u00fcst seviye oyunlar ve resim\/video yaratma ve editleme uygulamalar\u0131 i\u00e7in iyi avantaj \u00fcsa\u011flayacak gibi g\u00f6z\u00fck\u00fcyor.S\u00f6z konusu 64bit olunca console kalitesinde oyunlar ve \u00f6zellikle VR oyunlar\u0131n artaca\u011f\u0131na inan\u0131yoruz.Java uygulamalar\u0131 i\u00e7in ise her \u015fey harika \u00e7\u00fcnk\u00fc yaz\u0131l\u0131m\u0131n\u0131 ile ilgili bir g\u00fcncelleme yapman\u0131z gerekmiyor; \u00e7\u00fcnk\u00fc JVM uygulamalar\u0131 her \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda kendisi cihazlar\u0131n yap\u0131s\u0131na g\u00f6re derlemeyi yapmaktad\u0131r, ancak native(do\u011fal) uygulamalar i\u00e7in g\u00fcncellemeler gerekli olacak.<\/p>\n<p>ARMv8 in geriye uyumlulu\u011funun olmas\u0131 sebebiyle 32bit uygulamlar\u0131n\u0131n bir s\u0131k\u0131nt\u0131s\u0131 olmayacakt\u0131r.Hatta sisteminizin 64 bit yada 32bit olmas\u0131da bir \u015feyi de\u011fi\u015ftirmeyecektir. 32bit de yaz\u0131lm\u0131\u015f bir native kodunuz var ise bunu 64bit e derlerseniz 64 bit in 4g \u00fczerini adresleme \u00f6zelli\u011fini kullanmas\u0131 m\u00fcmk\u00fcn olacakt\u0131r.<\/p>\n<p>Bug\u00fcn en b\u00fcy\u00fck yaz\u0131l\u0131m \u015firketleri 64 bit uygulamalar geli\u015ftirmeye ba\u015flasalar dahi 32bit cihazlar\u0131n sekt\u00f6rdeki \u00e7ok a\u011f\u0131r yo\u011funlu\u011fundan dolay\u0131 uzun y\u0131llar 32bit ARM deste\u011fi var olacak gibi g\u00f6z\u00fck\u00fcyor.<\/p>\n<p>Bug\u00fcn 64bit deste\u011finin Android&#8217;e gelmesinin tek sebebi INTEL tabanl\u0131 sistemlerin \u00f6zellikle MICROSOFT bask\u0131s\u0131 ile 64bit propagandas\u0131ndan kaynaklan\u0131yor. IOT (Internet of Things) geli\u015ftik\u00e7e ve mobilite artt\u0131k\u00e7a Android&#8217;in durdurulmas\u0131 imkans\u0131z y\u00fckseli\u015fi devam ediyor.Bu durumdan da en \u00e7ok INTEL ile MICROSOFT zarar g\u00f6r\u00fcyor. Oysa Android ile maliyetleri \u00e7ok d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcmler \u00fcretebiliyor ve END\u00dcSTR\u0130 4.0 yada AKILLI \u015eEH\u0130RLER gibi hedeflere h\u0131zla yakla\u015fabiliyoruz. 2000 &#8211; 3000 dolarlardan 500 dolarlar\u0131n alt\u0131na d\u00fc\u015fen donan\u0131m maliyetleri art\u0131k devlet ve enterprise \u015firketlerin projeleri yap\u0131labilir hale geldi. Hatta dahada g\u00fczeli art\u0131k \u00fclkemizde daha fazla Milli \u00c7\u00f6z\u00fcmler bu sayede g\u00f6rebiliyoruz.<\/p>\n<p>Umuyorum T\u00fcrkiye&#8217;de devlet politikas\u0131 ile bu \u00e7\u00f6z\u00fcmlere daha fazla destek verilir ve teknolojik olarak yat\u0131r\u0131mlar\u0131n desteklenmesinin \u00f6n\u00fc a\u00e7\u0131l\u0131r.<\/p>\n<p>Bu arada takip etti\u011fim baz\u0131 forumlarda 64bit mimarili i\u015flemcili sistemler ile 32bit mimarili i\u015flemcili yap\u0131lar aralar\u0131nda ger\u00e7ek hayat testlerinde sonu\u00e7lar kafa kar\u0131\u015ft\u0131ran cinsten ; mesela ffmpeg dosyas\u0131n\u0131 -j4 tag ile derlemek i\u00e7in 64bit fedora s\u00fcr\u00fcm\u00fc ile 32bit raspbian s\u00fcr\u00fcm\u00fcyle k\u0131yaslama imkan\u0131 bulduk.Eminim \u00e7ok g\u00fc\u00e7l\u00fc cortex-A7 armv7 ile cortecx-A53 armv8 k\u0131yaslamas\u0131nda 64 bitin \u00fcst\u00fcnl\u00fc\u011f\u00fcn\u00fc g\u00f6rece\u011finizi d\u00fc\u015f\u00fcn\u00fcyorsunuz.<br \/>\n64Bit sistemlerin bir ba\u015fka sorunu da esas\u0131nda y\u0131llard\u0131r 32bitler i\u00e7in yap\u0131lan derlemelerdeki optimizasyonlar ile k\u0131yasland\u0131\u011f\u0131nda daha oyunun ba\u015f\u0131nda olan 64bit derlemelerinin ger\u00e7ek hayat k\u0131yaslamalar\u0131nda pek de g\u00f6z kama\u015ft\u0131rd\u0131\u011f\u0131 s\u00f6ylenemez.<\/p>\n<p>\u0130\u015fte sonu\u00e7lar :<br \/>\nAarch64 (64bit): 36 dakika<br \/>\nArm32 (32bit): 23 dakika <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Android i\u015fletim sistemi orijinal olarak sadece 32-bit i\u015flemciler i\u00e7in yaz\u0131lm\u0131\u015ft\u0131r, \u00f6zellikle 32-bit ARM i\u015flemcileri i\u00e7in. Sonralar\u0131 Intel ve MIPS Android deste\u011fi i\u00e7in yat\u0131r\u0131mlar yapmaya ba\u015flad\u0131 ama hala 32-bit i\u015flemciler i\u00e7in. Bunun esas sebebi ise bir standart olmas\u0131 ve muhtemelen uyumsuzluk sorunlar\u0131 ile kar\u015f\u0131la\u015fmamak i\u00e7indi. Tabi esas\u0131nda bunun alt\u0131nda yatan bir&#8230;<\/p>\n","protected":false},"author":1,"featured_media":421,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[111],"tags":[115,116,117,114,118,112,113,87],"class_list":["post-418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","tag-32bit","tag-64bit","tag-aarch64","tag-android","tag-arm32","tag-armv7","tag-armv8","tag-jvm"],"_links":{"self":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/comments?post=418"}],"version-history":[{"count":2,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/418\/revisions"}],"predecessor-version":[{"id":420,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/posts\/418\/revisions\/420"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/media\/421"}],"wp:attachment":[{"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/media?parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/categories?post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/melic.com\/wp1\/wp-json\/wp\/v2\/tags?post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}