मानक Java API और वर्चुअल मशीन मुख्य रूप से डेस्कटॉप के साथ-साथ सर्वर सिस्टम के लिए डिज़ाइन किए गए हैं। वे मोबाइल उपकरणों के साथ संगत नहीं हैं। इस वजह से, Google ने मोबाइल उपकरणों के लिए एक अलग एपीआई और वर्चुअल मशीन बनाई है। इसे Dalvik वर्चुअल मशीन के नाम से जाना जाता है।
दलविक वर्चुअल मशीन एंड्रॉइड रनटाइम का एक प्रमुख घटक है और विशेष रूप से एंड्रॉइड के लिए विकसित जेवीएम (जावा वर्चुअल मशीन) का एक हिस्सा है। Dalvik वर्चुअल मशीन उन विशेषताओं का उपयोग करती है जो जावा में काफी महत्वपूर्ण हैं जैसे कि मेमोरी मैनेजमेंट, मल्टी-थ्रेडिंग आदि। जावा में प्रोग्राम को पहले JVM में परिवर्तित किया जाता है और फिर इसे DVM बायटेकोड में व्याख्यायित किया जाता है।
JVM और DVM दोनों के बारे में विवरण इस प्रकार दिया गया है -
जावा वर्चुअल मशीन
जावा वर्चुअल मशीन एक ऐसा एप्लिकेशन है जो जावा बाइटकोड को निष्पादित करने के लिए रन-टाइम वातावरण प्रदान करता है। यह बायटेकोड को मशीन कोड में बदल देता है। जावा वर्चुअल मशीन कई ऑपरेशन कर सकती है जैसे कोड लोड करना, कोड को सत्यापित करना, कोड को निष्पादित करना, रन-टाइम वातावरण प्रदान करना आदि।
जावा वर्चुअल मशीन की कार्यप्रणाली को दर्शाने वाला एक आरेख इस प्रकार दिया गया है -
Dalvik वर्चुअल मशीन
दल्विक वर्चुअल मशीन जावा वर्चुअल मशीन का एक संस्करण है जो कम शक्ति वाले हैंडहेल्ड डिवाइस यानी मोबाइल उपकरणों के लिए अनुकूलित है। DVM मोबाइल सिस्टम को बैटरी लाइफ, मेमोरी और सामान्य रूप से प्रदर्शन के लिए अनुकूलित करता है।
Android के लिए अभिप्रेत प्रोग्राम पहले जावा में लिखे जाते हैं और बाद में JVM के लिए बायटेकोड में संकलित किए जाते हैं। उसके बाद, इस बाइटकोड को Dalvik बाइटकोड में अनुवादित किया जाता है और .dex और .odex फ़ाइलों में संग्रहीत किया जाता है। ये क्रमशः Dalvik निष्पादन योग्य और अनुकूलित Dalvik निष्पादन योग्य फ़ाइलें हैं।
दल्विक वर्चुअल मशीन की कार्यप्रणाली को दर्शाने वाला एक चित्र इस प्रकार दिया गया है -