স্ট্যান্ডার্ড জাভা API এবং ভার্চুয়াল মেশিন মূলত ডেস্কটপ ও সার্ভার সিস্টেমের জন্য ডিজাইন করা হয়েছে। এগুলো মোবাইল ডিভাইসের সাথে সাবিধানusen নয়। এই কারণেই গুগল মোবাইল ডিভাইসের জন্য আলাদা API এবং ভার্চুয়াল মেশিন তৈরি করেছে। এটিকে ডালভিক ভার্চুয়াল মেশিন (DVM) বলা হয়।
ডালভিক ভার্চুয়াল মেশিন অ্যান্ড্রয়েড রানটাইমের একটি কী কম্পোনেন্ট এবং JVM (জাভা ভার্চুয়াল মেশিন) का একটি অংশ যা বিশেষভাবে অ্যান্ড্রয়েডের জন্য ডেভেলপ করা হয়েছে। DVM জাভার গুরুত্বপূর্ণ ফিচারগুলো ব্যবহার করে যেমন মেমরি ম্যানেজমেন্ট, মাল্টি-থ্রেডিং ইত্যাদি। জাভা প্রোগ্রামগুলো প্রথমে JVM বাইটকোডে কম্পাইল হয় এবং তারপর এটি DVM বাইটকোডে ইন্টারপ্রেট হয়।
জাভা ভার্চুয়াল মেশিন (JVM)
জাভা ভার্চুয়াল মেশিন একটি অ্যাপ্লিকেশন যা জাভা বাইটকোড এক্সিকিউট করার জন্য রানটাইম এনভাॅयरনমেন্ট প্রদান করে। এটি বাইটকোডকে মেশিন কোডে রূপান্তর করে। JVM কোড লোড করা, ভেরিফাই করা, এক্সিকিউট করা, রানটাইম এনভাॅयरনমেন্ট প্রদান করা ইত্যাদি একাধিক অপারেশন সম্পাদন করতে পারে।
ডালভিক ভার্চুয়াল মেশিন (DVM)
ডালভিক ভার্চুয়াল মেশিন JVM-এর একটি ভার্সন যা কম পাওয়ার হ্যান্ডহেল্ড ডিভাইস (মোবাইল) জন্য অপ্টিমাইজড। DVM মোবাইল সিস্টেমকে ব্যাটারি লাইফ, মেমরি এবং পারফরম্যান্সের জন্য অপ্টিমাইজ করে।
অ্যান্ড্রয়েডের জন্য প্রোগ্রামগুলো প্রথমে জাভাতে লেখা হয় এবং পরে JVM-এর জন্য বাইটকোডে কম্পাইল করা হয়। এরপর এই বাইটকোড ডালভিক বাইটকোডে ট্রান্সলেট হয় এবং .dex ও .odex ফাইলে সংরক্ষিত হয়। এগুলো যথাক্রমে ডালভিক এক্সিকিউটেবল এবং অপ্টিমাইজড ডালভিক এক্সিকিউটেবল ফাইল।