অ্যান্ড্রয়েড নিয়ে কিছু কথা

অ্যান্ড্রয়েড এর নাম শুনে নাই এমন লোক মনে হয় খুব কম পাওয়া যাবে। ৫ নভেম্বের, ২০০৭ এ গুগল মোবাইল ফোনের অপারেটিং সিস্টেম হিসেবে ঘোষণা দেয়। যদিও Andy Rubin ২০০৩ সালের অক্টোবর মাসে প্রথম Android Inc. নামে কোম্পানি  Palo Alto, California, United States তে শুরু করেন। তারপর ২০০৫ সালে গুগল Android Inc. কে তাদের অধীনস্ত কোম্পানি করে নেয়। এই হল অ্যান্ড্রয়েডের শুরুর দিকের কিছু সংক্ষিপ্ত ইতিহাস ।

আসলে অ্যান্ড্রয়েড কি? এই প্রশ্ন সবার মনে প্রথমে আসে। অনেকে বলে থাকে অ্যান্ড্রয়েড হচ্ছে মোবাইল অপারেটিং সিস্টেম। কথাটা ভুল না। তবে অ্যান্ড্রয়েড কেবলমাত্র অপারেটিং সিস্টেম নয়, আরও অনেক কিছুর সমষ্টি।

From developer.android.com
Android is an open source, Linux-based software stack created for a wide array of devices and form factors. 
 সফটওয়্যার স্ট্যাক হচ্ছে অনেকগুলো সফটওয়্যারের সমষ্টি।

 নিচের ছবিটা অ্যান্ড্রয়েড সফটওয়্যার স্ট্যাকের প্রধান উপাদান গুলো দেখানো হয়েছে। ছবিটি নেয়া হয়েছে developer.android.com থেকে ।

Android software stack



অ্যান্ড্রয়েড সফটওয়্যার স্ট্যাকের উপাদান গুলো নিয়ে কিছু সংক্ষিপ্ত বিবরণ ঃ

Linux Kernel


অ্যান্ড্রয়েডের ভিত্তি হচ্ছে এই লিনাক্স কার্নেল। অ্যান্ড্রয়েডের ভার্চুয়াল মেশিন Android Runtime(ART) বিভিন্ন কাজের যেমন- threading, low-level memory management লিনাক্স কার্নেলের উপর নির্ভরশীল। এছাড়া অ্যান্ড্রয়েডের Security সংশ্লিষ্ট কাজগুলোও লিনাক্স কার্নেল করে থাকে।

Hardware Abstraction Layer (HAL)


HAL কে দরজার সাথে তুলনা করা যেতে পারে।  দরজা যেমন এক কক্ষ থেকে অন্য কক্ষে যাবার মাধ্যম হিসেবে ব্যবহৃত হয়, তেমনি HAL হচ্ছে Java API framework এর সাহায্যে আপনার মোবাইলের হার্ডওয়্যার ( Camera, Bluetooth etc ) ব্যবহার করার মাধ্যম।

Android Runtime(ART)


ART কে বলা যেতে পারে অ্যান্ড্রয়েডের Virtual Machine(VM) . যারা JAVA ল্যাঙ্গুয়েজের সাথে পরিচিত তারা জানেন যে JAVA, Java Virtual Machine(JVM) এর মাধ্যমে JAVA কোডকে Bytecode এ পরিবর্তন করে। কিন্ত অ্যান্ড্রয়েড JAVA 'র এই Bytecode ব্যবহার করে না। অ্যান্ড্রয়েডের নিজস্ব Bytecode আছে, যার নাম DalvikDalvik হচ্ছে একইসাথে Runtime,Bytecode, VM  এর নাম যেটা অ্যান্ড্রয়েড সিস্টেম বিভিন্ন অ্যাপ্লিকেশান চালানোর জন্য ব্যবহার করে।

ART  আসলে Dalvik এর পরবর্তী উন্নত সংস্করণ। অ্যান্ড্রয়েড ভার্সন ৪.৪(কিট ক্যাট) তে Google পরীক্ষামূলকভাবে সংযুক্ত করে। তাই কিট ক্যাট ভার্সন এ ART এবং Dalvik দুইটা অপশনই ছিল। কিন্ত অ্যান্ড্রয়েড ভার্সন ৫.০(ললিপপ) এবং পরবর্তী থেকে ART কে ডিফল্ট Runtime  করা হয়েছে।

ART vs Dalvik


ART তে Dalvik এর তুলনায় দুইটি ভাল বৈশিষ্ট সংযুক্ত করা হয়েছে।

  1. Ahead-of-Time (AOT) compilation, যা অ্যাপ্লিকেশানের Speed বাড়িয়েছে এবং Memory footprint ( একটি প্রোগ্রাম যতটুকু পরিমান জায়গা Main Memory তে দখল করে ) কমিয়েছে।
  2. Garbage Collection এর পদ্ধতি আগের থেকে উন্নত করেছে।
এখন প্রশ্ন হল AOT কি? এটা কি আসলেই আগের থেকে অ্যাপ্লিকেশান রান করার প্রক্রিয়াকে গতিশীল করেছে? এগুলো জানার জন্য আমাদের আরও কিছু জানতে হবে। 

আমাদের মোবাইলের জন্য আমরা অ্যাপ্লিকেশান তৈরি করতে প্রোগ্রাম লিখে .apk ফাইল বানাই। এই apk ফাইলটি কিন্ত শুধুমাত্র Bytecode এবং অ্যান্ড্রয়েডের Resource  ফাইল (যেমনঃ images and layouts) নিয়ে তৈরি compressed ফাইল অনেকটা .zip ফাইলের মত।  কিন্ত আমাদের মোবাইল ফোন গুলোতে Bytecode রান করে না, রান করে মেশিন কোড (Binary)। 
আগে Dalvik যে কাজটি করত তা JIT (Just-IN-Time) compilation, মানে হল Bytecode থেকে Machine Code এ compilation হবে অ্যাপ্লিকেশানের রান করার সময়। এতে করে অ্যাপ্লিকেশান performance ভালো পাওয়া যায় না। কারন আপনার অ্যাপ্লিকেশান যখন রান করবে তার আগ মুহূর্তে Bytecode থেকে মেশিন কোড এবং সেই মেশিন কোড পরে রান করা বেশ সময় সাপেক্ষ। 
আর তাই ART এই Bytecode থেকে Machine Code এ compilation এর কাজটি করে একবার, অ্যাপ্লিকেশান ইন্সটলের সময়।  এতে করে ইন্সটল করার জন্য সময় বাড়লেও, অ্যাপ্লিকেশান performance আগের থেকে ভাল পাওয়া যায়।


এখন আসা যাক অ্যান্ড্রয়েড অ্যাপ্লিকেশান ডেভেলপমেন্টে। অ্যাপ্লিকেশান ডেভেলপের জন্য বিভিন্ন ল্যাঙ্গুয়েজ ব্যবহার করা যায়। এদের মধ্যে Java ল্যাঙ্গুয়েজ ব্যবহার করে অ্যান্ড্রয়েডের বিভিন্ন API গুলো লেখা হয়েছে। অতি সম্প্রতি Google Kotlin কে অ্যান্ড্রয়েড অ্যাপ্লিকেশান ডেভেলপমেন্ট ল্যাঙ্গুয়েজ হিসেবে অন্তর্ভুক্ত করেছে।

অ্যাপ্লিকেশান ডেভেলপমেন্ট ল্যাঙ্গুয়েজের একটি তালিকাঃ

  • Java - primary android development language
  • C++NDK for libraries, not apps
  • Python, bash. - Via the Scripting Environment
  • Corona - One is to use the Corona SDK . Corona is a high level SDK built on the LUA programming language.
  • Phonegap technology / Cardova - which used HTML 5, JavaScript, CSS
  • Xamarin technology - that uses c# and in which mono is used for that. Here MonoTouch and Mono for Android are cross-platform implementations of the Common Language Infrastructure (CLI) and Common Language Specifications.
  • Kotlin - Added recently. Kotlin has always been an open source project, primarily under Apache 2.
আজকে এই পর্যন্তই। অ্যান্ড্রয়েডের দুনিয়ায় আপনাকে স্বাগতম।



References: 


“I am not a teacher, but an awakener.”
― Robert Frost

Comments

Post a Comment

Popular posts from this blog

Android Activity Life Cycle