للبدء في برمجة التطبيقات للإندرويد بجودة عالية علينا اولاً ان نفهم مماذا يتكون نظام الاندرويد؟ في هذه المقالة سوف نرى ماهي الطبقات التي يتكون منها النظام (وكأننا نعمل له تشريح!) ثم سنسترسل اكثر في الطبقة الرئيسية التي تهم المبرمج وهي طبقة الـ Android Runtime.

نظام الاندرويد يتكون من خمس طبقات وهي:

  1. Linux Kernel.
  2. Hardware Abstraction Layer.
  3. Native C/C++ Libraries.
  4. Android Runtime (سنركز اكثر على هذه الطبقه).
  5. Java API Framework.
  6. System App.

طبقة الـ Linux Kernel

 وهي طبقة نواة اللنكس, وتأتي قبلها طبقة التحكم بالطاقة وادارتها كالتالي:

بالنسبة لطبقة الـ Linux Kernel فالاندرويد يعتبر نظام لينكس مع اختلافات بسيطة لتناسب الجوالات المحمولة. هذة الطبقة تتكون من برامج التغشيل للقطع الموجودة في الجوالات مثل تعريفات الشاشة, تعريفات كرت الصوت, تعريفات لوحة المفاتيح وما الى ذلك.

طبقة الـ Hardware Abstraction Layer

وهي عبارة عن طبقه تحتوي على العديد من الواجهات البرمجية ومن خلالها نصنع طبقة الـ Java API Framework لاحقاً. والتي تمكننا من التحكم في قطع الهاتف كالكاميرا والبلوتوث و المستشعرات.

طبقة الـ Native C/C++ Libraries

عبارة عن المكاتب الرئيسية التي تمت برمجتها بلغات كالـ C و الـ C++ والتي من خلالها نستطيع التخاطب مع قطع الهاتف باستخدام هذه اللغات.

طبقة الـ Android Runtime

هذه الطبقه هي مرادنا. هنا يعيش تطبيقك, عندما يقوم المستخدم بتشغيله! وتكون مصاحبه للطبقه السابقه كالشكل التالي:

 ان تطبيقنا, وعمليته يعيش بداخلها, تغلفه ولاتسمح بخروج شئ منه ولا دخول شئ له كصندوق رملي خاص للعب الاطفال حتى لايتم اتساخ النظام!

طبقة الـ Android Runtime تتكون من قسمين بالغالب وهما:

  • الـ Android Runtime.
  • الـ Core Libraries.

اولاً: الـ Android Runtime اختصاراً تسمى ART

سابقاً كان الاندرويد يستخدم طبقة الـ Dalvik Virtual Machine. ولكن اتت الـ ART لتستبدلها فهي تتمتع بحمايه عاليه وايضاً سرعه اكثر. وبعض هواتف الاندرويد تحتوي على الطبقتين.

دالفيك (سميت تيمناً لبلدة مبرمجها) تم استبدالها بالارت (اندرويد رن تايم) من بعد الاصدار ٤.٤ لنظام الاندرويد, وتم الاستغناء عنها في الاصدارات الحديثة.

الان مايميز الـ ART هو: بأن تطبيقك عندما يعمل فانها تنشئ له عملية خاصة به Process ونسخه كامله من الـ ART ونستطيع القول بانه يعيش بداخل صندوق رمل خاص به SandBox. وبهذا يتمتع بحماية خاصة وايضاً النظام يحمي نفسه من خلال حجز تطبيقك بداخل صندوق الرمل هذا.

ثانياً: الـ Core Libraries

مكاتب تستخدمها في تطبيقك لبنائه. وهي عبارة عن كلاسات متنوعة اتت من لغة الجافا, وبالتأكيد انك قمت باستخدام العديد منها في بناء تطبيقاتك السابقة. امثال على هذة المكاتب وكلاساتها: كلاس Integer, String, Thread, Arraylist, FileInputStream, وما الى ذلك.

ماذا يوجد بداخل الـ Android Runtime؟

عند تشغيل اي تطبيق يتم صناعة عملية خاصة به (Linux process) ليعمل بداخلها منفصلاً عن الاخرين. وستضل هذه العملية نشطه الإ في حالة احتياج نظام الاندرويد موارد كالذاكرة (memory) لإستخدامها للتطبيقات الاخرى. والا سوف يقوم النظام بانهاء عمل هذه العملية وذلك يؤدي الى انهاء تطبيقك. فهذا يعني اذا كانت تطبيقك سيئ”مثلاً استخدام خاطئ وقاسي لمكونات مثل: Activity او Service او BroadcastReceiver او يقوم باستخدام الكثير من الموارد سيقوم نظام الاندرويد بقتل عمليته وهذا يؤدي الى انهاءه.

مثال لبعض العمليات التي تعمل حالياً في هذه الطبقه:

تخيل ان العمليات التي تعمل حالياً في هذه الطبقه هي المربعات باللون الازرق. الان يوجد ثلاثة عمليات اذن ذلك يعني بوجود ثلاثة تطبيقات نشطة بالعادة.

اذا كان تطبيقك يستخدم اكثر من عملية Process فذلك يعني انه Multiprocessing.

والان لنرى عملية تطبيقنا بشكل كبير:

وبداخل هذه العملية نسخة كاملة من الـ Android Runtime خاصة لتطبيقنا كالتالي:

وبداخل هذه النسخة يوجد تطبيقنا كالتالي:

وبداخل تطبيقنا بشكل افتراضي يوجد الخيط الحاسوبي الرئيسي كالتالي:

هنا تعيش شفرتك البرمجية!

ماذا لو وجد اكثر من خيط حاسوبي كالصورة التالية:

اذا كان تطبيقك يستخدم اكثر من خيط Threads فذلك يعني انه Multithreading.

طبقة الـ Java API Framework

من خلال الطبقة الثانية Hardware Abstraction Layer تمت صناعة هذه الطبقة للتخاطب مع الـ Android OS والهاتف باستخدام لغة البرمجة الـ Java.

طبقة الـ System App

طبقة خاصة بتطبيقات نظام الجوال كتطبيق الاسماء والاتصال والكاميرا التي تأتي مثبته عند شرائك لهاتف جديد.

صورة توضح الشكل الكلي للطبقات المكونه لنظام الاندرويد

الان قد رأينا كيف ان نظام الاندرويد مكون من نواة لينكس تحتوي على التعاريف الاساسية للتعامل وتشغيل القطع “Hardware”  الموجودة في جهاز الهاتف, ثم تأتي بعدها طبقة اخرى تربط هذه الطبقه بطبقه خاصة للتعامل مع هذه القطع من خلال استخدام لغات الـ C او C++ “نعم يمكنك برمجة التطبيقات للإندرويد باستخدام هذه اللغات” ثم تتكون لدينا طبقة اخرى خاصة بالجافا للتعامل مع هذه القطع باستخدام لغة الجافا.



0 Comments

اترك رد