Theory
What holds your app up?
आपकी FestConnect app इस पूरे software stack के सबसे ऊपर यानी top floor पर बैठती है, और ये अपने नीचे की हर layer पर depend करती है: वो framework जो इसे buttons देता है, वो runtime जो इसका code execute करता है, वो libraries जो इसका data store करती हैं, और वो kernel जो actual hardware chips से बात करता है।
Android का design एक layered stack की तरह है, जैसे 4 मंजिला इमारत हो, जहाँ हर floor अपने नीचे वाले floor पर टिका होता है। इन सभी floors और उनके सही order को समझना exam के लिए एक guaranteed question है, और ये आपके लिए एक mental map की तरह काम करेगा जब भी आप कुछ build करेंगे।
Theory
A four-storey building
एक building को इमेजिन करिए। उसकी foundation जो जमीन (hardware) को छूती है: वो है हमारा Linux kernel। उस foundation के ऊपर आते हैं utility rooms, जैसे water tanks और generators (ये हमारी native libraries और runtime हैं)। उनके ऊपर है services floor जहाँ reception, notices और वो staff होता है जिसे आप मदद के लिए बुलाते हैं (यह है application framework)। और सबसे ऊपर आते हैं apartments जहाँ tenants यानी किराएदार रहते हैं (ये हमारी apps हैं)। हर floor अपने नीचे वाले floor पर depend करता है, कोई भी हवा में नहीं तैर सकता।
Theory
The four layers, bottom to top
1. Linux Kernel (सबसे नीचे): इसमें device drivers, memory, process और power management, और security होती है। यह सीधे hardware से बात करता है।
2. Native Libraries + Android Runtime: इसमें C/C++ libraries होती हैं (जैसे data के लिए SQLite, WebKit, graphics के लिए OpenGL) और साथ में होता है runtime (ART, जिसे पहले Dalvik VM कहते थे) जो आपकी app के compiled code को रन करता है, हर एक app अपने खुद के VM में चलती है।
3. Application Framework: ये वो Java APIs हैं जिनका इस्तेमाल करके आप code लिखते हैं, जैसे Activity Manager, Content Providers, Notification Manager, View System, और Package Manager।
4. Applications (सबसे ऊपर): इसमें पहले से आई हुई built-in apps और आपकी खुद की बनाई हुई apps आती हैं, जैसे FestConnect।
At a glance
The stack और उसमें रहने वाले components
| Layer | Contains | Example |
|---|---|---|
| 4. Applications | सभी apps | FestConnect, Contacts |
| 3. App Framework | Java API managers | Activity Manager |
| 2. Libraries + Runtime | C/C++ libs, ART/Dalvik | SQLite, ART |
| 1. Linux Kernel | drivers, memory, power | camera driver |
Think first
Trace a save
मान लीजिए FestConnect एक registration को device के छोटे से database में save करती है। कौन सी layer वो database engine प्रोवाइड करती है, और कौन सी layer आखिरकार bytes को storage hardware पर write करती है? दोनों के नाम बताइए।
Show the answer
Database engine असल में SQLite है, जो layer 2 में एक native library है। लेकिन SQLite खुद flash chip को नहीं छू सकती; यह drivers के जरिए Linux kernel (layer 1) से कहती है कि वो bytes को storage पर write करे। तो एक single save का सफर ऊपर से नीचे की तरफ होता है: आपकी app (4) एक framework API (3) को call करती है, जो SQLite (2) का इस्तेमाल करता है, और वो kernel (1) पर depend करता है। हर real action इसी तरह stack में नीचे kernel तक जाता है और फिर वापस आता है।
Quiz
Android stack में, Linux kernel कहाँ बैठता है, और आपकी applications के ठीक ऊपर क्या होता है?
- Kernel सबसे नीचे (bottom) होता है; applications के ऊपर कुछ नहीं होता, वो सबसे top layer हैं
- Kernel सबसे ऊपर होता है; applications सीधे kernel के ऊपर बैठती हैं
- Kernel बीच (middle) में होता है; applications सबसे नीचे होती हैं
- यहाँ सिर्फ एक ही layer होती है, इसलिए order का कोई मतलब नहीं है
Show the answer
Kernel सबसे नीचे (bottom) होता है; applications के ऊपर कुछ नहीं होता, वो सबसे top layer हैं
Linux kernel सबसे नीचे की foundation है, और applications सबसे ऊपर की topmost layer हैं जिसके ऊपर कुछ नहीं होता (A)। Kernel कभी भी top (B) या middle (C) में नहीं हो सकता क्योंकि उसे hardware के सबसे करीब होना होता है। Android साफ तौर पर एक four-layer stack है, इसलिए इसका order बहुत मायने रखता है (D गलत है)। नीचे से ऊपर का क्रम याद रखिए: Kernel, Libraries+Runtime, Framework, Applications।
Watch out
Architecture traps
1. Flipping the order: याद रखिए kernel हमेशा bottom (hardware के पास) होता है, और apps हमेशा top पर होती हैं। अगर diagram उल्टा बना दिया तो marks कट जाएंगे।
2. Putting the runtime in the wrong layer: ART/Dalvik हमेशा layer 2 (native libraries के साथ) में रहता है, framework में नहीं।
3. Thinking apps talk to the kernel directly: apps कभी भी सीधे kernel से बात नहीं करतीं। उन्हें framework और libraries से होकर जाना पड़ता है। कोई भी layer सिर्फ अपने ठीक नीचे वाली layer को ही call कर सकती है।
Theory
Next: zoom into the runtime
Layer 2 ने एक बहुत जरूरी चीज़ छुपा रखी है: वो runtime जो असल में आपकी app को execute करता है, यानी Dalvik Virtual Machine (और उसका successor ART)। अगले lesson में हम इसी पर zoom करेंगे: Android को standard Java VM के बजाय अपने खुद के VM की ज़रूरत क्यों पड़ी, और ये कैसे आपकी compiled FestConnect code को एक battery-powered phone पर एकदम efficiently चलाता है।
Summary
Key takeaways
- Android एक four-layer software stack है; हर layer अपने ठीक नीचे वाली layer का इस्तेमाल करती है।
- नीचे से ऊपर का सही क्रम: Linux Kernel; Native Libraries + Android Runtime; Application Framework; Applications।
- Kernel का काम drivers, memory, और power को संभालना है; libraries में SQLite, WebKit, और OpenGL शामिल हैं; और runtime (ART/Dalvik) app code को रन करता है।
- Framework हमें Java API managers (जैसे Activity Manager वगैरह) प्रोवाइड करता है जिनका इस्तेमाल करके हम code लिखते हैं।
- आपकी apps सबसे top layer पर होती हैं; वे hardware तक केवल पूरे stack में नीचे की तरफ सफर करके ही पहुँच सकती हैं।
- Memory hook: 4 मंजिला इमारत, foundation (kernel) से लेकर apartments (apps) तक!