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