অ্যান্ড্রয়েড ডেভেলপিং শুরু করার আগে অ্যান্ড্রয়েড অপারেটিং সিস্টেমের  সব কী-কন্সেপ্ট সম্পর্কে জানা উচিৎ।  এখানে আমি অ্যান্ড্রয়েডের আর্কিটেকচার নিয়ে আলোচনা করেছি। শুরু করা যাক :
অ্যান্ড্রয়েড আর্কিটেকচার ডায়াগ্রাম :

উপরের চিত্রটি অ্যান্ড্রয়েড আর্কিটেকচার ডায়াগ্রাম দেখানো হয়েছে। অ্যান্ড্রয়েড অপারেটিং সিস্টেম এমন একটি সফটওয়্যার স্টাক (Software Stack) যা কয়েকটি প্রোগ্রাম কম্পোনেন্টের স্তর নিয়ে গঠিত । এটি অপারেটিং সিস্টেম, মিডেলওয়ার (Middleware) এবং গুরুত্বপূর্ণ অ্যাপ্লিকেশন এর সমন্নয়ে গঠিত। প্রতিটি লেয়ার এর আলাদা আলাদা ফিচার রয়েছে। এখানে বিস্তারিত আলোচনা করা হল  :

লিনাক্স কার্নেল 

এটি অ্যান্ড্রয়েডের মূল স্তর। গুগলের কিছু আর্কিটেকচারাল পরিবর্তন বাদে সম্পূর্ণ অ্যান্ড্রয়েড অপারেটিং সিস্টেমটি লিনাক্স ২.৬ কার্নেল এর উপর তৈরি। লিনাক্স এই সব হার্ডওয়্যার ড্রাইভার অবস্থিত এবং এটিই সব হার্ডওয়্যারের সাথে যোগাযোগ রক্ষা করে । হার্ডওয়্যার ড্রাইভার হল একধরনের প্রোগ্রাম যা হার্ডওয়্যার কন্ট্রোল করে এবং এগুলোর সাথে যোগাযোগ রক্ষা করে।  উদাহরন হিসেবে ব্লু-টুথ ফাংশনের কথা বলা যেতে পারে যেখানে প্রত্যেকটি ডিভাইসের একটা করে হার্ডওয়্যার থাকে । সেক্ষেত্রে কার্নেলের অবশ্যই কমিউনেট করার জন্য  ব্লু-টুথ ড্রাইভার থাকতে হবে। লিনাক্স কার্নেল হার্ডওয়্যার এবং সফটওয়্যারের মধ্যে আবস্ট্রাকশন লেয়ার হিসেবে কাজ করে। অ্যান্ড্রয়েড মেমোরি ম্যানেজমেন্ট, প্রসেস ম্যানেজমেন্ট, নেটওয়ার্কিং , সিকিউরিটি সেটিংস্‌ ইত্যাদি কোর ফাংশনালিটির জন্য  লিনাক্সকে ব্যবহার করে থাকে। যেহেতু অ্যান্ড্রয়েড  জনপ্রিয় একটি ফাউন্ডেশনের উপর প্রতিষ্ঠিত, একারনে এটি অনেকটা ক্রস প্লাটফর্ম এবং বিভিন্ন হার্ডওয়্যার পোর্টিং করা তুলনামুলক সহজ।

লাইব্রেরী (Libraries)

পরবর্তী স্তরটি অ্যান্ড্রয়েডের নেটিভ লাইব্রেরী। বিভিন্ন ধরনের ডাটা হ্যান্ডল করতে এটি সাহায্য করে। লাইব্রেরীটি C/C++ এ লেখা ।
অধিকাংশ লাইব্রেরী নিচের ফিচারগুলো নিয়ে গঠিত :
সারফেজ ম্যানেজার (Surface Manager)
এটি উইন্ডো ম্যানেজারের সাথে অফ-স্ক্রিন বাফারিং যুক্ত করতে দরকার হয়। অফ-স্ক্রিন বাফারিং হল সেই জিনিস যার মাধ্যমে আপনি সরাসরি স্ক্রীনে ড্র করতে পারবেন, কিন্তু আপনার ড্রইং  অফ-স্ক্রিন বাফারে যাবে, সেখানে এটা অন্যান্য ড্রইং এর সাথে যুক্ত হবে এবং চূড়ান্ত স্ক্রীনটি তৈরি করবে যেটা ইউজাররা দেখবে। এই অফ-স্ক্রিন বাফার ই উইন্ডোজের ট্রান্সপারেন্সি তৈরি করে।
মিডিয়া ফ্রেমওয়ার্ক (Media Framework)
বিভিন্ন ধরনের মিডিয়া ফরম্যাটের রেকর্ডিং এবং প্লেব্যাকের জন্য বিভিন্ন ধরনের মিডিয়া কোডেক্স প্রভাইড করে।
সিকিউএলাইট (SQLite) 
এটা অ্যান্ড্রয়েডের ডাটাবেজ ইঞ্জিন।
ওয়েবকিট (Webkit)
এটি ওয়েব কন্টেন্ট ব্রাউজিং এর জন্য অ্যান্ড্রয়েডের এর ব্রাউজার ইঞ্জিন।
ওপেনজিএল (OpenGL)
2D এবং 3D কন্টেন্ট প্রদর্শনের জন্য প্রয়োজন হয়।

অ্যান্ড্রয়েড রানটাইম (Anrdoid RunTime)

অ্যান্ড্রয়েড রানটাইম ডালভিক ভার্চুয়াল মেশিন (Dalvik Virtual Machine) এবং কোর জাভা  লাইব্রেরী নিয়ে গঠিত।
 ডালভিক ভার্চুয়াল মেশিন (Dalvik Virtual Machine)
এটা জাভা ভার্চুয়াল মেশিনের মতই। এটি কম প্রসেসিং পাওয়ার এবং কম মেমরির সিস্টেমে চলার উপযোগী । কিন্তু এটা জাভা ভার্চুয়াল মেশিনের মত .class রান করেনা, এটা .dex এক্সটেনশনের ফাইল রান করে যেটা কমপাইলেশনের সময় .class থেকে তৈরি হয়। এটা লো-রিসোর্স এনভাইরোনমেন্টে .class এর থেকে বেশি ফাস্ট । এটি সিকিউরিটি, মেমোরি ম্যানেজমেন্ট, থ্রেডিং সাপোর্ট প্রদান করে। এটি ডেভেলপ করেছেন গুগলের Dan Bornstein.
কোর জাভা  লাইব্রেরী (Core Java Libraries)
এটা জাভা SE এবং জাভা ME লাইব্রেরী থেকে ভিন্ন। তবে জাভা SE  লাইব্রেরী এর অধিকাংশ ফাংশনালিটি এটি প্রভাইড করে।

অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (Application FrameWork)

এটা সেই ব্লক যার সাথে অ্যাপ্লিকেশন সরাসরি ইন্টারঅ্যাক্ট করে। এটা ফোনের বেসিক ফাংশন যেমন- রিসোর্স ম্যানেজমেন্ট, ভয়েস কল ম্যানেজমেন্ট নিয়ন্ত্রণ করে। কিছু গুরুত্বপূর্ণ ব্লক হল :
অ্যাক্টিভিটি ম্যানেজার ( Activity Manager) 
অ্যাপ্লিকেশনের অ্যাক্টিভিটি লাইফ-সাইকেল নিয়ন্ত্রণ করে।
কনটেন্ট প্রভাইডার (Content Providers)
অ্যাপ্লিকেশনের মধ্যে ডাটা শেয়ারিং কন্ট্রোল করে।
টেলিফোনি ম্যানেজার (Telephony Manager)
ভয়েস কল কন্ট্রোল করে। ভয়েস কল অ্যাক্সেস করতে টেলিফোনি ম্যানেজার ব্যবহার হয়।
রিসোর্স ম্যানেজার (Resource Manager)
অ্যাপ্লিকেশনের রিসোর্স ম্যানেজমেন্টে লাগে। (খুব বড় ব্যাখ্যা দিলাম :P )

অ্যাপ্লিকেশনস (Applications)

এটি অ্যান্ড্রয়েড আর্কিটেকচারের সবচেয়ে উপরের স্তর। কিছু অ্যাপ্লিকেশন  ডিভাইস গুলোতে প্রি-ইন্সটল দেয়া থাকে। যেমন - এসএমএস ক্লায়েন্ট অ্যাপ, ওয়েব ব্রাউজার, কন্টাক্ট ম্যানেজার ইত্যাদি। আপনি ইচ্ছা করলে আপনার তৈরি অ্যাপ্লিকেশন দিয়ে সিস্টেমের অ্যাপ্লিকেশন রিপ্লেস করতে পারেন (পন্ডিতগিরি :P )। তার মানে আপনি সিস্টেমের ডিফল্ট কোন অ্যাপ্লিকেশন ও ব্যবহার করতে বাধ্য নন। এভাবেই অ্যান্ড্রয়েড আমাদের সীমাহীন সুবিধা দেয়।
বেঁচে থাকলে আর সময় করতে পারলে আবার লিখব। খোদা হাফেয :)

0 comments:

Post a Comment

Subscribe to RSS Feed Follow me on Twitter!