- ডালভিক JIT কম্পাইলেশন ব্যবহার করে কাজ করতেন, যা অ্যাপটি চলার সময়েই কোড অনুবাদ করত।
- ART ইনস্টলেশনের সময় AOT কম্পাইলেশন প্রক্রিয়া সম্পাদন করে সিস্টেমকে অপ্টিমাইজ করে।
- উভয় পরিবেশেই DEX ফাইল ফরম্যাট ব্যবহৃত হয়, যা সংস্করণগুলোর মধ্যে সামঞ্জস্য নিশ্চিত করে।
- ART-তে রূপান্তরের ফলে ব্যাটারির ব্যবহার কমেছে এবং সিস্টেমের সাবলীলতা বেড়েছে।
আপনি যখন কোনো অ্যাপ খোলেন তখন আপনার ফোনের ভেতরে আসলে কী ঘটে, তা নিয়ে যদি কখনো ভেবে থাকেন, তবে এর উত্তরটি রানটাইম এনভায়রনমেন্টের মধ্যেই রয়েছে। অ্যান্ড্রয়েড ইকোসিস্টেমে, আমরা ডালভিক ভার্চুয়াল মেশিনের উপর ভিত্তি করে তৈরি আর্কিটেকচার থেকে অ্যান্ড্রয়েড রানটাইম নামক একটি অনেক বেশি শক্তিশালী সিস্টেমে স্থানান্তরিত হয়েছি, যা ART নামেই বেশি পরিচিত। মূলত, প্রোগ্রামারদের লেখা কোডকে এমন নির্দেশাবলীতে অনুবাদ করার দায়িত্ব ART-এর, যা আপনার ডিভাইসের হার্ডওয়্যার ক্র্যাশ না করেই বুঝতে পারে।
এটা বোঝার জন্য, এটা জানা জরুরি যে অ্যান্ড্রয়েড সরাসরি জাভা চালায় না; এর পরিবর্তে, এটি একটি নিজস্ব অভিযোজিত পদ্ধতি ব্যবহার করে । এর পুরো প্রক্রিয়াটি শুরু হয় সোর্স কোড থেকে, যা বাইটকোডে রূপান্তরিত হয়ে DEX নামক একটি নির্দিষ্ট ফরম্যাটে শেষ হয়। আপনার অ্যান্ড্রয়েড সংস্করণটি পুরোনো না নতুন, তার ওপর নির্ভর করে এই কোডটি কার্যকর হওয়ার পথটি ব্যাপকভাবে পরিবর্তিত হয়, যা ব্যাটারির আয়ু এবং অ্যাপ লোডিং স্পিডের মতো দৈনন্দিন বিষয়গুলোকে প্রভাবিত করে।
ডালভিকের উত্তরাধিকার: জাস্ট-ইন-টাইম যুগ
অ্যান্ড্রয়েডের একেবারে শুরু থেকেই ডালভিক একটি মৌলিক স্তম্ভ ছিল। এর উদ্দেশ্য ছিল সুস্পষ্ট: জাভায় লেখা অ্যাপ্লিকেশনগুলোকে অত্যন্ত সীমিত রিসোর্সযুক্ত ডিভাইসে চালানোর সুযোগ করে দেওয়া । একটি সাধারণ জাভা ভার্চুয়াল মেশিনের মতো না হয়ে, ডালভিককে কম মেমরি ব্যবহার করতে এবং একই সাথে একাধিক ইনস্ট্যান্স চালানোর জন্য অপ্টিমাইজ করা হয়েছিল, এবং থ্রেড ব্যবস্থাপনার দায়িত্ব লিনাক্স কার্নেলের ওপর অর্পণ করা হয়েছিল।
ডালভিকের মূল বৈশিষ্ট্য ছিল জাস্ট-ইন-টাইম (JIT) কম্পাইলেশন । এর মানে হলো, ব্যবহারকারী যখনই অ্যাপটির সাথে ইন্টারঅ্যাক্ট করতেন, ঠিক তখনই কোডটি মেশিন ল্যাঙ্গুয়েজে অনূদিত হতো। প্রতিবার এই ক্লান্তিকর কাজটি পুনরাবৃত্তি করা এড়াতে, ডালভিক ODEX (Optimized DEX) নামে ফাইল তৈরি করেছিল , যা ইতিমধ্যে অনূদিত অংশগুলোকে একটি ক্যাশে সংরক্ষণ করত। সমস্যাটি ছিল যে, এই অবিরাম কম্পাইলেশন প্রক্রিয়াটি সিপিইউ সাইকেল খরচ করত এবং ফলস্বরূপ, বেশি শক্তি ব্যবহার করত ।
অ্যান্ড্রয়েড রানটাইম (ART): সময়ের চেয়ে এগিয়ে যাওয়ার এক নতুন পদক্ষেপ
অ্যান্ড্রয়েড ৫.০ ললিপপ থেকে ART সম্পূর্ণরূপে এর স্থান দখল করে নেয়। এর প্রধান পার্থক্য হলো, ART অ্যাহেড-অফ-টাইম (AOT) কম্পাইলেশন প্রয়োগ করে। আপনার অ্যাপ্লিকেশনটি খোলার জন্য অপেক্ষা করার পরিবর্তে, ART ইনস্টলেশনের সময়ই কঠিন কাজটি করে ফেলে। এটি DEX ফাইলগুলোকে ELF (এক্সিকিউটেবল অ্যান্ড লিঙ্কেবল ফরম্যাট) এক্সিকিউটেবলে রূপান্তর করার জন্য dex2oat নামক একটি টুল ব্যবহার করে , যা লিনাক্সের নিজস্ব ফরম্যাট।
এই পদ্ধতির ফলে, যখন আপনি কোনো অ্যাপ আইকনে ট্যাপ করেন, তখন সিস্টেমকে কোনো কিছু কম্পাইল করতে হয় না; এটি কেবল ELF ফাইলটি পড়ে এবং তা এক্সিকিউট করে। এর মানে হলো, প্রসেসরের ওপর চাপ কম পড়ে, ব্যাটারি বেশিক্ষণ টেকে এবং অ্যাপগুলো অনেক বেশি সাবলীলভাবে চলে। তবে, এর একটি ছোট অসুবিধাও আছে: অ্যাপ ইনস্টল হতে কিছুটা বেশি সময় লাগে এবং ডালভিকের তুলনায় এগুলো বেশি স্টোরেজ স্পেস দখল করে ।
প্রযুক্তিগত তুলনা এবং মূল উন্নতি
যদিও উভয় পরিবেশই সামঞ্জস্যপূর্ণ এবং একই DEX বাইটকোড চালায়, ART এমন কিছু উন্নতি এনেছে যা সিস্টেমটিকে অবিশ্বাস্যভাবে দ্রুত করে তুলেছে। এর মধ্যে সবচেয়ে উল্লেখযোগ্য একটি হলো গার্বেজ কালেকশন (GC) । ডালভিকে, গার্বেজ কালেক্টর ইন্টারফেসে সেই বিরক্তিকর বিরতি বা "স্টাটার" (কুখ্যাত ল্যাগ) সৃষ্টি করত। ART এটিকে মূলত একটি কনকারেন্ট সিস্টেমের মাধ্যমে নতুন করে ডিজাইন করেছে , যার ফলে ব্যবহৃত মেমরির পরিমাণের ওপর বিরতিগুলো নির্ভরশীল নয়।
- উন্নত ডিবাগিং: ART ডেভেলপারদেরকে থ্রেডগুলো কোন লকগুলো ধরে রেখেছে তা দেখতে এবং ক্লাস ইনস্ট্যান্সগুলোকে আরও অনেক বেশি নির্ভুলভাবে ট্র্যাক করতে সাহায্য করে।
- সঠিক রোগ নির্ণয়: এখন, যখন কোনো অ্যাপ ক্র্যাশ করে, তখন এরর রিপোর্টগুলো অনেক বেশি বিস্তারিত হয়, বিশেষ করে কিছু ক্ষেত্রে। নাল পয়েন্টার ব্যতিক্রম.
- স্মৃতি ব্যবস্থাপনা: ডালভিকের বিপরীতে, যা একটি নন-পেজেবল ক্যাশে ব্যবহার করত, ART র্যাম মেমরি ব্যবহার করে যা পৃষ্ঠা সংখ্যা সম্ভবহার্ডওয়্যারের ব্যবহারকে সর্বোত্তম করা।
প্যাকেজিং প্রক্রিয়া: কোড থেকে APK পর্যন্ত
এই পরিবেশগুলোর যেকোনোটি কাজ করার জন্য, কোডটিকে একটি অ্যাসেম্বলি লাইনের মধ্য দিয়ে যেতে হয়। প্রথমে, জাভা কম্পাইলার .class ফাইল তৈরি করে, যেগুলোকে পরে dex টুল একটি একক classes.dex ফাইলে রূপান্তর করে। এই ফাইলটিই APK-এর মূল অংশ এবং ART বা Dalvik এটিকেই প্রসেস করে।
aapt-এর মতো টুল রিসোর্স প্যাকেজ করতে ব্যবহৃত হয়, এবং zipalign ডেটা অ্যালাইনমেন্ট অপ্টিমাইজ করে, যা প্রসেসরকে যথাসম্ভব দক্ষতার সাথে মেমরি অ্যাক্সেস করতে সাহায্য করে। APK ফাইলটি ডিভাইসে পৌঁছানোর পরেই আসল কাজটি শুরু হয়: যদি ART থাকে, তাহলে ELF ফাইল তৈরি হয়; আর যদি Dalvik থাকে, তাহলে সাথে সাথেই ODEX ফাইল তৈরি হতে শুরু করে ।
রম এবং ডিওডেক্সিং প্রক্রিয়া সম্পর্কে কিছু আকর্ষণীয় তথ্য
কাস্টম রম-এর জগতে ODEX এবং Deodex শব্দ দুটি সচরাচর ব্যবহৃত হয় । যেহেতু ODEX ফাইলটি হার্ডওয়্যার-নির্ভর এবং এটি যে নির্দিষ্ট সিস্টেমে তৈরি করা হয়েছে তার উপর নির্ভরশীল, তাই এটিকে সহজে এক ফোন থেকে অন্য ফোনে স্থানান্তর করা যায় না। সিস্টেম ক্র্যাশ না করিয়ে কোনো অ্যাপ পরিবর্তন করার জন্য, ডেভেলপাররা একটি ডিওডেক্সিং প্রক্রিয়া সম্পন্ন করেন , যার মাধ্যমে APK ফাইলের মধ্যে অপ্টিমাইজ করা ফাইলটিকে একীভূত করা হয়, যাতে এর ব্যবহার সহজ হয়।
অ্যান্ড্রয়েড ইকোসিস্টেম একটি নমনীয় কিন্তু শক্তি-নিবিড় ভার্চুয়াল মেশিন থেকে এমন একটি অপ্টিমাইজড রানটাইম এনভায়রনমেন্টে রূপান্তরিত হয়েছে যা ব্যবহারকারীর অভিজ্ঞতাকে অগ্রাধিকার দেয়। যেখানে ডালভিক রিয়েল টাইমে কোড অনুবাদের বহুমুখীতার উপর মনোযোগ দিয়েছিল, সেখানে ART প্রি-কম্পাইলেশনের মাধ্যমে হার্ডওয়্যারের ব্যবহারকে সর্বোচ্চ করেছে , যা সফটওয়্যারটিকে আরও স্থিতিশীল, দ্রুত এবং অধিক শক্তি-সাশ্রয়ী করে তুলেছে।
সূচক



