डाल्विक (सॉफ्टवेयर): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(6 intermediate revisions by 4 users not shown)
Line 24: Line 24:
| replaced_by            = [[Android Runtime]]
| replaced_by            = [[Android Runtime]]
}}
}}
डाल्विक [[एंड्रॉइड (ऑपरेटिंग सिस्टम)]] में बंद प्रक्रिया वर्चुअल मशीन#प्रोसेस_वर्चुअल_मशीन (वीएम) है जो एंड्रॉइड के लिए लिखे गए एप्लिकेशन को निष्पादित करता है।<ref>{{cite web |url=https://source.android.com/devices/tech/dalvik/gc-debug.html |title=एआरटी कचरा संग्रहण डिबगिंग|quote=The Dalvik runtime is no longer maintained or available [in current versions of Android] and its byte-code format is now used by ART. |access-date=6 October 2015}}</ref> (Dalvik बाइटकोड प्रारूप अभी भी वितरण प्रारूप के रूप में उपयोग किया जाता है, लेकिन अब नए एंड्रॉइड संस्करणों में रनटाइम पर नहीं है।) एंड्रॉइड संस्करण इतिहास (अब असमर्थित) एंड्रॉइड किटकैट|4.4 किटकैट और इससे पहले, डेल्विक एंड्रॉइड सॉफ़्टवेयर स्टैक का अभिन्न अंग था। जो आमतौर पर मोबाइल उपकरणों जैसे [[ चल दूरभाष ]] और [[टैबलेट कंप्यूटर]] और कुछ उपकरणों जैसे [[स्मार्ट टीवी]] और [[पहनने योग्य]] उपकरणों में उपयोग किए जाते थे। डाल्विक [[ खुला स्रोत सॉफ्टवेयर ]] है, जो मूल रूप से डैन बोर्नस्टीन द्वारा लिखा गया है, जिन्होंने इसका नाम [[आइसलैंड]] के आईजफजोरिदुर में मछली पकड़ने वाले गांव डाल्विक के नाम पर रखा था।<ref>[http://uke.livejournal.com/25660.html Journal entry] referencing the source of the name</ref><ref name="onlamp">{{cite web |title= Google Calling: Inside Android, the gPhone SDK |url= http://www.onlamp.com/pub/a/onlamp/2007/11/12/google-calling-inside-the-gphone-sdk.html |website= onlamp.com |access-date= 2008-02-05 |archive-date= 2017-01-10 |archive-url= https://web.archive.org/web/20170110110729/http://www.onlamp.com/pub/a/onlamp/2007/11/12/google-calling-inside-the-gphone-sdk.html |url-status= dead }}</ref>
'''डाल्विक [[एंड्रॉइड (ऑपरेटिंग सिस्टम)]]''' में संवृत प्रक्रिया एक वर्चुअल मशीन (वीएम) है जो एंड्रॉइड के लिए लिखे गए अनुप्रयोग को निष्पादित करता है।<ref>{{cite web |url=https://source.android.com/devices/tech/dalvik/gc-debug.html |title=एआरटी कचरा संग्रहण डिबगिंग|quote=The Dalvik runtime is no longer maintained or available [in current versions of Android] and its byte-code format is now used by ART. |access-date=6 October 2015}}</ref> (डाल्विक बाइटकोड प्रारूप अभी भी वितरण प्रारूप के रूप में उपयोग किया जाता है, परन्तु अब नवीन एंड्रॉइड संस्करणों में अर्थगत पर नहीं है।) एंड्रॉइड संस्करण इतिहास (अब असमर्थित) एंड्रॉइड किटकैट या 4.4 किटकैट और इससे पूर्व, डाल्विक एंड्रॉइड सॉफ़्टवेयर स्टैक का अभिन्न अंग था। जो सामान्यतः मोबाइल उपकरणों जैसे [[ चल दूरभाष |चल दूरभाष]] और [[टैबलेट कंप्यूटर]] और कुछ उपकरणों जैसे [[स्मार्ट टीवी]] और [[पहनने योग्य|धारणीय]] उपकरणों में उपयोग किए जाते थे। डाल्विक [[ खुला स्रोत सॉफ्टवेयर |ओपन सोर्स सॉफ्टवेयर]] है, जो मूल रूप से डैन बोर्नस्टीन द्वारा लिखा गया है, जिन्होंने इसका नाम [[आइसलैंड]] के आईजफजोरिदुर में मछली पकड़ने वाले गांव डाल्विक के नाम पर रखा था।<ref>[http://uke.livejournal.com/25660.html Journal entry] referencing the source of the name</ref><ref name="onlamp">{{cite web |title= Google Calling: Inside Android, the gPhone SDK |url= http://www.onlamp.com/pub/a/onlamp/2007/11/12/google-calling-inside-the-gphone-sdk.html |website= onlamp.com |access-date= 2008-02-05 |archive-date= 2017-01-10 |archive-url= https://web.archive.org/web/20170110110729/http://www.onlamp.com/pub/a/onlamp/2007/11/12/google-calling-inside-the-gphone-sdk.html |url-status= dead }}</ref>
एंड्रॉइड के लिए [[कंप्यूटर प्रोग्राम]] आमतौर पर [[जावा प्रोग्रामिंग भाषा]] में लिखे जाते हैं और [[जावा वर्चुअल मशीन]] के लिए [[ बाईटकोड ]] में संकलित किए जाते हैं, जिसे बाद में डाल्विक बाइटकोड में अनुवादित किया जाता है और संग्रहीत किया जाता है। <code>.dex</code> (Dalvik EXecutable) और <code>.odex</code> (अनुकूलित डाल्विक निष्पादन योग्य) फ़ाइलें; संबंधित शब्द ओडेक्स और डी-ओडेक्स संबंधित बाइटकोड रूपांतरणों से जुड़े हैं। कॉम्पैक्ट डेल्विक एक्ज़ीक्यूटेबल प्रारूप उन सिस्टमों के लिए डिज़ाइन किया गया है जो [[ रैंडम एक्सेस मेमोरी ]] और [[सेंट्रल प्रोसेसिंग यूनिट]] स्पीड के मामले में बाधित हैं।


डाल्विक का उत्तराधिकारी [[एंड्रॉइड रनटाइम]] (एआरटी) है, जो समान बाइटकोड और .dex फ़ाइलों (लेकिन .odex फ़ाइलों का नहीं) का उपयोग करता है, उत्तराधिकार का लक्ष्य प्रदर्शन में सुधार करना है। नए रनटाइम वातावरण को पहली बार एंड्रॉइड 4.4 किटकैट में तकनीकी पूर्वावलोकन के रूप में शामिल किया गया था,<ref>{{cite web
इस प्रकार से एंड्रॉइड के लिए [[कंप्यूटर प्रोग्राम]] सामान्यतः [[जावा प्रोग्रामिंग भाषा|जावा प्रोग्रामिंग लैंग्वेज]] में लिखे जाते हैं और [[जावा वर्चुअल मशीन]] के लिए [[ बाईटकोड |बाईटकोड]] में संकलित किए जाते हैं, जिसे बाद में डाल्विक बाइटकोड में अनुवादित किया जाता है और संग्रहीत किया जाता है। <code>.dex</code> (डाल्विक EXecutable) और <code>.odex</code> (अनुकूलित डाल्विक निष्पादन योग्य) फ़ाइलें; संबंधित शब्द ओडेक्स और डी-ओडेक्स संबंधित बाइटकोड रूपांतरणों से जुड़े हैं। अतः संहत डाल्विक निष्पाद्य प्रारूप उन सिस्टमों के लिए डिज़ाइन किया गया है जो [[ रैंडम एक्सेस मेमोरी |रैंडम एक्सेस मेमोरी]] और [[सेंट्रल प्रोसेसिंग यूनिट]] गति की स्थिति में बाधित हैं।
 
इस प्रकार से डाल्विक का उत्तराधिकारी [[एंड्रॉइड रनटाइम|एंड्रॉइड अर्थगत]] (एआरटी) है, जो समान बाइटकोड और .dex फ़ाइलों (परन्तु .odex फ़ाइलों का नहीं) का उपयोग करता है, उत्तराधिकार का लक्ष्य निष्पादन में सुधार करना है। अतः नवीन अर्थगत वातावरण को पहली बार एंड्रॉइड 4.4 किटकैट में तकनीकी पूर्वावलोकन के रूप में सम्मिलित किया गया था,<ref>{{cite web
  | url = https://www.engadget.com/2013/11/06/new-android-runtime-could-improve-battery-life/
  | url = https://www.engadget.com/2013/11/06/new-android-runtime-could-improve-battery-life/
  | title = 'ART' experiment in Android KitKat improves battery life and speeds up apps
  | title = 'ART' experiment in Android KitKat improves battery life and speeds up apps
Line 37: Line 38:
  | date = 2013-11-07 | access-date = 2014-07-05
  | date = 2013-11-07 | access-date = 2014-07-05
  | author = Daniel P. | website = phonearena.com
  | author = Daniel P. | website = phonearena.com
}}</ref> और बाद के संस्करणों में डाल्विक को पूरी तरह से बदल दिया; एंड्रॉइड लॉलीपॉप|एंड्रॉइड 5.0 लॉलीपॉप पहला संस्करण है जिसमें एआरटी एकमात्र रनटाइम शामिल है।
}}</ref> और बाद के संस्करणों में डाल्विक को पूर्ण रूप से बदल दिया; एंड्रॉइड लॉलीपॉप या एंड्रॉइड 5.0 लॉलीपॉप पहला संस्करण है जिसमें एआरटी एकमात्र अर्थगत सम्मिलित है।


==वास्तुकला==
==वास्तुकला==
[[File:ART view.png|thumb|right|upright=1.8|डाल्विक और एंड्रॉइड रनटाइम आर्किटेक्चर की तुलना]]जावा वर्चुअल मशीनों के विपरीत, जो [[स्टैक मशीन]]ें हैं, डेल्विक वीएम [[ मशीन रजिस्टर करें ]] | रजिस्टर-आधारित आर्किटेक्चर का उपयोग करता है जिसके लिए कम, आमतौर पर अधिक जटिल, वर्चुअल मशीन निर्देशों की आवश्यकता होती है। डाल्विक प्रोग्राम एंड्रॉइड [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] (एपीआई) का उपयोग करके जावा में लिखे गए हैं, जावा बाइटकोड में संकलित किए गए हैं, और आवश्यकतानुसार डाल्विक निर्देशों में परिवर्तित किए गए हैं।
[[File:ART view.png|thumb|right|upright=1.8|डाल्विक और एंड्रॉइड अर्थगत संरचना की तुलना]]इस प्रकार से जावा वर्चुअल मशीनों के विपरीत, जो [[स्टैक मशीन]] हैं, डाल्विक वीएम [[ मशीन रजिस्टर करें |मशीन रजिस्टर-]]आधारित संरचना का उपयोग करता है जिसके लिए कम, सामान्यतः अधिक जटिल, वर्चुअल मशीन निर्देशों की आवश्यकता होती है। अतः डाल्विक प्रोग्राम एंड्रॉइड [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] (एपीआई) का उपयोग करके जावा में लिखे गए हैं, जावा बाइटकोड में संकलित किए गए हैं, और आवश्यकतानुसार डाल्विक निर्देशों में परिवर्तित किए गए हैं।


एक उपकरण कहा जाता है <code>dx</code> जावा क्लास (फ़ाइल प्रारूप)|क्लास फ़ाइलों को .dex प्रारूप में परिवर्तित करने के लिए उपयोग किया जाता है। ही .dex फ़ाइल में एकाधिक कक्षाएँ (कंप्यूटर विज्ञान) शामिल हैं। डुप्लिकेट [[स्ट्रिंग (कंप्यूटर विज्ञान)]] और कई क्लास फ़ाइलों में उपयोग किए जाने वाले अन्य स्थिरांक को स्थान बचाने के लिए .dex आउटपुट में केवल बार शामिल किया जाता है। जावा बाइटकोड को डेल्विक वीएम द्वारा उपयोग किए जाने वाले वैकल्पिक निर्देश सेट में भी परिवर्तित किया जाता है। असम्पीडित .dex फ़ाइल आम तौर पर समान .class फ़ाइलों से प्राप्त डेटा संपीड़न JAR (फ़ाइल प्रारूप) (JAR) की तुलना में आकार में कुछ प्रतिशत छोटी होती है।<ref>{{cite web
इस प्रकार से जावा .class फ़ाइलों को .dex प्रारूप में परिवर्तित करने के लिए <code>dx</code> नामक टूल का उपयोग किया जाता है। एक ही .dex फ़ाइल में एकाधिक क्लास (कंप्यूटर विज्ञान) सम्मिलित हैं। अतः अनुलिपि [[स्ट्रिंग (कंप्यूटर विज्ञान)]] और कई क्लास फ़ाइलों में उपयोग किए जाने वाले अन्य स्थिरांक को स्थान बचाने के लिए .dex आउटपुट में मात्र एक बार सम्मिलित किया जाता है। जावा बाइटकोड को डाल्विक वीएम द्वारा उपयोग किए जाने वाले वैकल्पिक निर्देश समूह में भी परिवर्तित किया जाता है। असम्पीडित .dex फ़ाइल सामान्यतः समान .class फ़ाइलों से प्राप्त डेटा संपीड़न जेएआर (फ़ाइल प्रारूप) (जेएआर) की तुलना में आकार में कुछ प्रतिशत छोटी होती है।<ref>{{cite web
| url=http://sites.google.com/site/io/dalvik-vm-internals/2008-05-29-Presentation-Of-Dalvik-VM-Internals.pdf?attredirects=0
| url=http://sites.google.com/site/io/dalvik-vm-internals/2008-05-29-Presentation-Of-Dalvik-VM-Internals.pdf?attredirects=0
| title=Presentation of Dalvik VM Internals
| title=Presentation of Dalvik VM Internals
Line 51: Line 52:
| page=22
| page=22
}}</ref>
}}</ref>
मोबाइल डिवाइस पर इंस्टॉल होने पर डेल्विक निष्पादनयोग्य को फिर से संशोधित किया जा सकता है। अधिक [[अनुकूलन (कंप्यूटर विज्ञान)]] प्राप्त करने के लिए, कुछ डेटा, सरल [[डेटा संरचना]]ओं और फ़ंक्शन (कंप्यूटर विज्ञान) में [[endianness]] की अदला-बदली की जा सकती है, [[लाइब्रेरी (कंप्यूटिंग)]] [[लिंकर (कंप्यूटिंग)]] [[इनलाइन फ़ंक्शन]] हो सकती है, और खाली क्लास ऑब्जेक्ट शॉर्ट-सर्किट हो सकते हैं। , उदाहरण के लिए।


कम मेमोरी आवश्यकताओं के लिए अनुकूलित होने के कारण, डाल्विक में कुछ विशिष्ट विशेषताएं हैं जो इसे अन्य मानक वीएम से अलग करती हैं:<ref>{{cite web
मोबाइल उपकरण पर इंस्टॉल होने पर डाल्विक निष्पादनयोग्य को फिर से संशोधित किया जा सकता है। अतः अधिक [[अनुकूलन (कंप्यूटर विज्ञान)]] प्राप्त करने के लिए, कुछ डेटा, सरल [[डेटा संरचना|डेटा संरचनाओं]] और प्रकार्य (कंप्यूटर विज्ञान) में [[endianness|इंडियानेस]] की विनिमेयता की जा सकती है, [[लाइब्रेरी (कंप्यूटिंग)]] [[लिंकर (कंप्यूटिंग)]] [[इनलाइन फ़ंक्शन|इनलाइन प्रकार्य]] हो सकते है, और रिक्त क्लास ऑब्जेक्ट लघुपथित हो सकते हैं। उदाहरण के लिए.
 
इस प्रकार से निम्न मेमोरी आवश्यकताओं के लिए अनुकूलित होने के कारण, डाल्विक में कुछ विशिष्ट विशेषताएं हैं जो इसे अन्य मानक वीएम से अलग करती हैं:<ref>{{cite web
| url=http://blogs.sun.com/jrose/entry/with_android_and_dalvik_at
| url=http://blogs.sun.com/jrose/entry/with_android_and_dalvik_at
| title=with Android and Dalvik at Google I/O
| title=with Android and Dalvik at Google I/O
Line 64: Line 66:
| url-status=dead
| url-status=dead
}}</ref>
}}</ref>
* कम जगह का उपयोग करने के लिए वीएम को पतला कर दिया गया था।
* कम स्थान का उपयोग करने के लिए वीएम को दुर्बल कर दिया गया था।
* क्लास (फ़ाइल प्रारूप)# [[ दुभाषिया (कंप्यूटिंग) ]] को सरल बनाने के लिए केवल [[32-बिट कंप्यूटिंग]]|32-बिट इंडेक्स का उपयोग करने के लिए निरंतर पूल को संशोधित किया गया है।
* क्लास (फ़ाइल प्रारूप) [[ दुभाषिया (कंप्यूटिंग) |इंटरप्रेटर (कंप्यूटिंग)]] को सरल बनाने के लिए मात्र [[32-बिट कंप्यूटिंग]] का उपयोग करने के लिए निरंतर पूल को संशोधित किया गया है।
* मानक [[जावा बाइटकोड]] [[8-बिट कंप्यूटिंग]]|8-बिट स्टैक निर्देशों को निष्पादित करता है। स्थानीय चर को अलग-अलग निर्देशों द्वारा ऑपरेंड स्टैक में या उससे कॉपी किया जाना चाहिए। इसके बजाय डेल्विक अपने स्वयं के [[16-बिट कंप्यूटिंग]]|16-बिट अनुदेश सेट का उपयोग करता है जो सीधे स्थानीय चर पर काम करता है। स्थानीय चर को आमतौर पर [[4-बिट कंप्यूटिंग]]|4-बिट वर्चुअल रजिस्टर फ़ील्ड द्वारा चुना जाता है। इससे डेल्विक के निर्देशों की संख्या कम हो जाती है और उसकी दुभाषिया गति बढ़ जाती है।
* मानक [[जावा बाइटकोड]] [[8-बिट कंप्यूटिंग]] निर्देशों को निष्पादित करता है। स्थानीय चर को अलग-अलग निर्देशों द्वारा ऑपरेंड स्टैक में या उससे अनुकरण किया जाना चाहिए। इसके अतिरिक्त डाल्विक अपने स्वयं के [[16-बिट कंप्यूटिंग]] समूह का उपयोग करता है जो सीधे स्थानीय चर पर काम करता है। स्थानीय चर को सामान्यतः [[4-बिट कंप्यूटिंग]] रजिस्टर क्षेत्र द्वारा चुना जाता है। इससे डाल्विक के निर्देशों की संख्या कम हो जाती है और उसकी इंटरप्रेटर गति बढ़ जाती है।


Google के अनुसार, डाल्विक का डिज़ाइन डिवाइस को VM के कई उदाहरणों को कुशलतापूर्वक चलाने की अनुमति देता है।<ref>{{cite web
इस प्रकार से गूगल के अनुसार, डाल्विक का डिज़ाइन उपकरण को वीएम के कई उदाहरणों को कुशलतापूर्वक चलाने की अनुमति देता है।<ref>{{cite web
| url=http://developer.android.com/guide/basics/what-is-android.html
| url=http://developer.android.com/guide/basics/what-is-android.html
| title=What is Android?
| title=What is Android?
Line 77: Line 79:
| archive-date=2009-06-27
| archive-date=2009-06-27
}}</ref>
}}</ref>
Android Froyo|Android 2.2 Froyo दलविक में [[समय-समय पर संकलन का पता लगाना]] लाया। (कंप्यूटिंग) अक्सर उनके बाइटकोड के छोटे खंडों को मूल [[मशीन कोड]] में निष्पादित करता है। जबकि डाल्विक इंटरप्रेटर (कंप्यूटिंग) एप्लिकेशन के बाकी बाइटकोड को, उन छोटे बाइटकोड सेगमेंट का मूल निष्पादन, जिन्हें ट्रेस कहा जाता है, महत्वपूर्ण प्रदर्शन सुधार प्रदान करता है।<ref>{{cite web
 
अतः एंड्राइड फ्रोयो डाल्विक में [[समय-समय पर संकलन का पता लगाना|ट्रेस-आधारित जस्ट-इन-टाइम (जेआईटी) संकलन]] लाया गया था, प्रत्येक बार चलने वाले अनुप्रयोग को निरंतर प्रोफाइल करके और उनके बाइटकोड के प्रायः निष्पादित छोटे खंडों को [[मशीन कोड]] में गतिशील रूप से संकलित करके अनुप्रयोगों के निष्पादन को अनुकूलित किया था। जबकि डाल्विक इंटरप्रेटर (कंप्यूटिंग) अनुप्रयोग के शेष बाइटकोड को, उन छोटे बाइटकोड परिखंड का मूल निष्पादन, जिन्हें ट्रेस कहा जाता है, महत्वपूर्ण निष्पादन सुधार प्रदान करता है।<ref>{{cite web
  | url = http://www.android-app-developer.co.uk/android-app-development-docs/android-jit-compiler-androids-dalvik-vm.pdf
  | url = http://www.android-app-developer.co.uk/android-app-development-docs/android-jit-compiler-androids-dalvik-vm.pdf
  | title = A JIT Compiler for Android's Dalvik VM
  | title = A JIT Compiler for Android's Dalvik VM
Line 97: Line 100:
  | archive-date = 2014-07-14
  | archive-date = 2014-07-14
}}</ref><ref>{{cite web |url= http://www.androidpolice.com/2010/05/11/exclusive-androidpolice-coms-nexus-one-is-running-android-2-2-froyo-how-fast-is-it-compared-to-2-1-oh-only-about-450-faster/ | title= Nexus One Is Running Android 2.2 Froyo. How Fast Is It Compared To 2.1? Oh, Only About 450% Faster |date= 2010-05-13 |access-date= 2010-05-21}}</ref>
}}</ref><ref>{{cite web |url= http://www.androidpolice.com/2010/05/11/exclusive-androidpolice-coms-nexus-one-is-running-android-2-2-froyo-how-fast-is-it-compared-to-2-1-oh-only-about-450-faster/ | title= Nexus One Is Running Android 2.2 Froyo. How Fast Is It Compared To 2.1? Oh, Only About 450% Faster |date= 2010-05-13 |access-date= 2010-05-21}}</ref>
== प्रदर्शन ==
== निष्पादन ==
[[File:Motorola RAZR XT910.jpg|thumb|एक डेल्विक-संचालित फ़ोन]]स्टैक मशीनों बनाम रजिस्टर मशीन-आधारित दृष्टिकोणों की सापेक्ष खूबियाँ चल रही बहस का विषय हैं।<ref>{{cite web
[[File:Motorola RAZR XT910.jpg|thumb|एक डाल्विक-संचालित फ़ोन]]इस प्रकार से स्टैक मशीनों बनाम रजिस्टर मशीन-आधारित दृष्टिकोणों की सापेक्ष विशेषताएं चल रही चर्चा का विषय हैं।<ref>{{cite web
| url= http://www.usenix.org/events/vee05/full_papers/p153-yunhe.pdf
| url= http://www.usenix.org/events/vee05/full_papers/p153-yunhe.pdf
| title= Virtual Machine Showdown: Stack Versus Registers
| title= Virtual Machine Showdown: Stack Versus Registers
Line 107: Line 110:
| date= 2005-06-11
| date= 2005-06-11
| access-date= 2009-12-22}}</ref>
| access-date= 2009-12-22}}</ref>
आम तौर पर, स्टैक-आधारित मशीनों को स्टैक पर डेटा लोड करने और उस डेटा में हेरफेर करने के लिए [[निर्देश (कंप्यूटर विज्ञान)]] का उपयोग करना चाहिए, और इस प्रकार, समान उच्च-स्तरीय प्रोग्रामिंग भाषा | उच्च-स्तरीय कोड को लागू करने के लिए रजिस्टर मशीनों की तुलना में अधिक निर्देशों की आवश्यकता होती है, लेकिन रजिस्टर मशीन में निर्देशों को स्रोत और गंतव्य रजिस्टरों को एन्कोड करना होगा और इसलिए, वे बड़े होते हैं। यह अंतर वीएम दुभाषियों के लिए महत्वपूर्ण है, जिसके लिए [[opcode]] प्रेषण महंगा होता है, साथ ही समय-समय पर संकलन के लिए समान रूप से प्रासंगिक अन्य कारक भी होते हैं।
सामान्यतः, स्टैक-आधारित मशीनों को स्टैक पर डेटा लोड करने और उस डेटा में अन्तःक्षेप करने के लिए [[निर्देश (कंप्यूटर विज्ञान)]] का उपयोग करना चाहिए, और इस प्रकार, समान उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज को लागू करने के लिए रजिस्टर मशीनों की तुलना में अधिक निर्देशों की आवश्यकता होती है, परन्तु रजिस्टर मशीन में निर्देशों को स्रोत और गंतव्य रजिस्टरों को एन्कोड करना होगा और इसलिए, वे बड़े होते हैं। अतः यह अंतर वीएम इंटरप्रेटर के लिए महत्वपूर्ण है, जिसके लिए [[opcode|ओपकोड]] प्रेषण बहुमूल्य होता है, साथ ही समय-समय पर संकलन के लिए समान रूप से प्रासंगिक अन्य कारक भी होते हैं।


2010 में [[ओरेकल कॉर्पोरेशन]] (जावा तकनीक के मालिक) द्वारा मानक गैर-ग्राफिकल जावा बेंचमार्क के साथ एआरएम आर्किटेक्चर परिवार # 32-बिट_आर्किटेक्चर उपकरणों पर किए गए परीक्षणों से पता चला कि एंबेडेड जावा # जावा एसई का [[हॉटस्पॉट (वर्चुअल मशीन)]] वीएम 2-3 एम्बेडेड है। Android Froyo|Android 2.2 (प्रारंभिक Android रिलीज़ जिसमें JIT कंपाइलर शामिल था) के JIT कंपाइलर-आधारित डाल्विक VM से कई गुना तेज़।<ref>{{cite web
इस प्रकार से 2010 में [[ओरेकल कॉर्पोरेशन|ओरेकल निगम]] (जावा तकनीक के मुखिया) द्वारा मानक गैर-ग्राफिकल जावा बेंचमार्क के साथ एआरएम संरचना वर्ग 32-बिट संरचना उपकरणों पर किए गए परीक्षणों से ज्ञात हुआ कि एंबेडेड जावा जावा एसई का [[हॉटस्पॉट (वर्चुअल मशीन)]] वीएम 2-3 एम्बेडेड है। अतः एंड्राइड 2.2 (प्रारंभिक एंड्राइड रिलीज़ जिसमें जेआईटी कंपाइलर सम्मिलित था) के जेआईटी कंपाइलर-आधारित डाल्विक वीएम से कई गुना तीव्र था।<ref>{{cite web
  |url          = http://blogs.oracle.com/javaseembedded/entry/how_does_android_22s_performance_stack_up_against_java_se_embedded
  |url          = http://blogs.oracle.com/javaseembedded/entry/how_does_android_22s_performance_stack_up_against_java_se_embedded
  |title        = Java SE Embedded Performance Versus Android 2.2
  |title        = Java SE Embedded Performance Versus Android 2.2
Line 121: Line 124:
  |archive-date = 2011-06-28
  |archive-date = 2011-06-28
  |url-status    = dead
  |url-status    = dead
}}</ref> 2012 में, अकादमिक बेंचमार्क ने ही एंड्रॉइड बोर्ड पर हॉटस्पॉट (वर्चुअल मशीन) और डाल्विक के बीच 3 के कारक की पुष्टि की, यह भी ध्यान दिया कि डाल्विक कोड हॉटस्पॉट से छोटा नहीं था।<ref>{{cite book
}}</ref> 2012 में, अकादमिक बेंचमार्क ने एक ही एंड्रॉइड बोर्ड पर हॉटस्पॉट (वर्चुअल मशीन) और डाल्विक के मध्य 3 के कारक की पुष्टि की, यह भी ध्यान दिया कि डाल्विक कोड हॉटस्पॉट से छोटा नहीं था।<ref>{{cite book
| publisher=[[Association for Computing Machinery]]
| publisher=[[Association for Computing Machinery]]
|author1=Hyeong-Seok Oh | title= Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES '12
|author1=Hyeong-Seok Oh | title= Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES '12
Line 130: Line 133:
| isbn=9781450316880
| isbn=9781450316880
|s2cid=36316611 }}</ref>
|s2cid=36316611 }}</ref>
आगे, {{As of|2014|3|lc=yes}}, एंड्रॉइड डिवाइस पर किए गए बेंचमार्क अभी भी उसी एंड्रॉइड डिवाइस पर मूल एप्लिकेशन और डाल्विक एप्लिकेशन के बीच कारक 100 तक दिखाते हैं।<ref>{{cite web
 
इस प्रकार से आगे, {{As of|2014|3|lc=yes}}, एंड्रॉइड उपकरण पर किए गए बेंचमार्क अभी भी उसी एंड्रॉइड उपकरण पर मूल अनुप्रयोग और डाल्विक अनुप्रयोग के मध्य कारक 100 तक दिखाते हैं।<ref>{{cite web
| url= http://www.eembc.org/andebench/
| url= http://www.eembc.org/andebench/
| title=Top AndEBench Scores  
| title=Top AndEBench Scores  
| publisher=www.eembc.org
| publisher=www.eembc.org
| access-date= 2014-03-23}}</ref>{{OR|date=June 2014}}{{synthesis inline|date=June 2014}} 2009 के प्रारंभिक दुभाषिया का उपयोग करके बेंचमार्क चलाने पर, [[जावा नेटिव इंटरफ़ेस]] (जेएनआई) और नेटिव कोड दोनों ने तीव्रता का क्रम दिखाया।<ref>{{cite book
| access-date= 2014-03-23}}</ref> 2009 के प्रारंभिक इंटरप्रेटर का उपयोग करके बेंचमार्क चलाने पर, [[जावा नेटिव इंटरफ़ेस]] (जेएनआई) और नेटिव कोड दोनों ने तीव्रता का क्रम दिखाया।<ref>{{cite book
| title=Developing and Benchmarking Native Linux Applications on Android
| title=Developing and Benchmarking Native Linux Applications on Android
| journal=Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering
| journal=Lecture Notes of the Institute for Computer Sciences, Social Informatics and Telecommunications Engineering
Line 155: Line 159:
}}</ref>
}}</ref>
== लाइसेंसिंग और पेटेंट ==
== लाइसेंसिंग और पेटेंट ==
{{main|Oracle v. Google}}
{{main|ओरेकल वी. गूगल}}
डाल्विक को [[अपाचे लाइसेंस]] 2.0 की शर्तों के तहत प्रकाशित किया गया है।<ref>{{cite web |url=http://android.git.kernel.org/?p=platform/dalvik.git;a=blob_plain;f=NOTICE;hb=HEAD |title=सोर्स ट्री डाउनलोड करना - एंड्रॉइड ओपन सोर्स|publisher=Android.git.kernel.org |access-date=2012-06-07 |url-status=dead |archive-url=https://web.archive.org/web/20090417091524/http://android.git.kernel.org/?p=platform%2Fdalvik.git |archive-date=2009-04-17 }}</ref> कुछ {{who?|date=February 2023}} कहते हैं कि डाल्विक मानक जावा रनटाइम के शीर्ष पर विकास के बजाय [[साफ़ कमरे का डिज़ाइन]]|क्लीन-रूम कार्यान्वयन है, जिसका अर्थ यह होगा कि यह मानक-संस्करण या ओपन-सोर्स-संस्करण से कॉपीराइट-आधारित लाइसेंस प्रतिबंध प्राप्त नहीं करता है। जावा रनटाइम.<ref>{{Cite magazine|url=https://www.wired.com/2012/04/google-oracle-experts|title=एंड्रॉइड के जावा मिमिक को लेकर गूगल और ओरेकल के 'विशेषज्ञ' आपस में भिड़ गए|magazine=Wired|last1=Garling|first1=Caleb}}</ref>
 
Oracle Corporation और कुछ समीक्षक इस पर विवाद करते हैं।<ref>{{cite web
इस प्रकार से डाल्विक को [[अपाचे लाइसेंस]] 2.0 की प्रतिबन्धों के अंतर्गत प्रकाशित किया गया है।<ref>{{cite web |url=http://android.git.kernel.org/?p=platform/dalvik.git;a=blob_plain;f=NOTICE;hb=HEAD |title=सोर्स ट्री डाउनलोड करना - एंड्रॉइड ओपन सोर्स|publisher=Android.git.kernel.org |access-date=2012-06-07 |url-status=dead |archive-url=https://web.archive.org/web/20090417091524/http://android.git.kernel.org/?p=platform%2Fdalvik.git |archive-date=2009-04-17 }}</ref> कुछ {{who?|date=February 2023}} कहते हैं कि डाल्विक मानक जावा अर्थगत के शीर्ष पर विकास के अतिरिक्त [[साफ़ कमरे का डिज़ाइन|स्पष्ट कक्ष का डिज़ाइन]] कार्यान्वयन है, जिसका अर्थ यह होगा कि यह मानक-संस्करण या ओपन-सोर्स-संस्करण जावा अर्थगत से स्वत्वाधिकार-आधारित लाइसेंस प्रतिबंध प्राप्त नहीं करता है।<ref>{{Cite magazine|url=https://www.wired.com/2012/04/google-oracle-experts|title=एंड्रॉइड के जावा मिमिक को लेकर गूगल और ओरेकल के 'विशेषज्ञ' आपस में भिड़ गए|magazine=Wired|last1=Garling|first1=Caleb}}</ref> अतः ओरेकल निगम और कुछ समीक्षक इस पर तर्क करते हैं।<ref>{{cite web
| url=http://www.zdnet.com/blog/bott/the-real-history-of-java-and-android-as-told-by-google/3924
| url=http://www.zdnet.com/blog/bott/the-real-history-of-java-and-android-as-told-by-google/3924
| title=The real history of Java and Android, as told by Google
| title=The real history of Java and Android, as told by Google
Line 165: Line 169:
| date=September 8, 2011
| date=September 8, 2011
| access-date=2011-11-27}}</ref>
| access-date=2011-11-27}}</ref>
12 अगस्त 2010 को, ओरेकल कॉर्पोरेशन, जिसने अप्रैल 2009 में [[सन माइक्रोसिस्टम्स]] का अधिग्रहण किया था और इसलिए उसके पास जावा के अधिकार हैं, ने कॉपीराइट और पेटेंट के कथित उल्लंघन पर Google पर मुकदमा दायर किया। Oracle ने आरोप लगाया कि Google ने Android विकसित करते समय जानबूझकर, सीधे और बार-बार Oracle की जावा-संबंधित बौद्धिक संपदा का उल्लंघन किया।<ref>{{cite web| url=http://www.digitaltrends.com/mobile/oracle-sues-google-over-java-in-android-devices/
 
इस प्रकार से 12 अगस्त 2010 को, ओरेकल निगम, जिसने अप्रैल 2009 में [[सन माइक्रोसिस्टम्स]] का अधिग्रहण किया था और इसलिए उसके निकट जावा के अधिकार हैं, उसने स्वत्वाधिकार और पेटेंट के कथित उल्लंघन पर गूगल पर प्रकरण दर्ज किया। अतः ओरेकल ने आरोप लगाया कि गूगल ने एंड्राइड विकसित करते समय विचार करके, प्रत्यक्षतः और बार-बार ओरेकल की जावा-संबंधित बौद्धिक संपदा का उल्लंघन किया।<ref>{{cite web| url=http://www.digitaltrends.com/mobile/oracle-sues-google-over-java-in-android-devices/
| title=Oracle Sues Google Over Java in Android Devices
| title=Oracle Sues Google Over Java in Android Devices
| publisher=digitaltrends.com
| publisher=digitaltrends.com
Line 182: Line 187:
| url = https://www.pcmag.com/article2/0,2817,2367761,00.asp
| url = https://www.pcmag.com/article2/0,2817,2367761,00.asp
| work = [[PC Magazine]]
| work = [[PC Magazine]]
| publisher = [[Ziff Davis]]}}</ref> मई 2012 में, इस मामले में जूरी ने पाया कि Google ने Oracle के पेटेंट का उल्लंघन नहीं किया है, और ट्रायल जज ने फैसला सुनाया कि Google द्वारा उपयोग की जाने वाली Java API की संरचना कॉपीराइट योग्य नहीं थी।<ref>{{cite web | url=http://www.zdnet.com/blog/btl/jury-clears-google-of-infringing-on-oracle-patents/77897 | title=जूरी ने Google को Oracle के पेटेंट के उल्लंघन से मुक्त कर दिया| author = Josh Lowensohn | work=ZDNet | date = May 23, 2012 | access-date=2012-05-25}}</ref><ref>
| publisher = [[Ziff Davis]]}}</ref> मई 2012 में, इस स्थिति में जूरी ने पाया कि गूगल ने ओरेकल के पेटेंट का उल्लंघन नहीं किया है, और ट्रायल कोर्ट के न्यायाधीश ने निर्णय सुनाया कि गूगल द्वारा उपयोग की जाने वाली जावा एपीआई की संरचना स्वत्वाधिकार योग्य नहीं थी।<ref>{{cite web | url=http://www.zdnet.com/blog/btl/jury-clears-google-of-infringing-on-oracle-patents/77897 | title=जूरी ने Google को Oracle के पेटेंट के उल्लंघन से मुक्त कर दिया| author = Josh Lowensohn | work=ZDNet | date = May 23, 2012 | access-date=2012-05-25}}</ref><ref>
{{cite web
{{cite web
| title = Google wins crucial API ruling, Oracle's case decimated
| title = Google wins crucial API ruling, Oracle's case decimated
Line 189: Line 194:
| work =  Ars Technica
| work =  Ars Technica
| date = May 31, 2012
| date = May 31, 2012
| access-date = 2012-06-01}}</ref> पार्टियां कॉपी किए गए कोड की 9 पंक्तियों के लिए [[वैधानिक क्षति]] में शून्य डॉलर पर सहमत हुईं।<ref name="damages">
| access-date = 2012-06-01}}</ref> इस प्रकार से समूहों ने अनुकरण किए गए कोड की 9 पंक्तियों के लिए [[वैधानिक क्षति]] में शून्य डॉलर पर सहमत हुईं।<ref name="damages">
{{cite web
{{cite web
| title = Oracle agrees to 'zero' damages in Google lawsuit, eyes appeal
| title = Oracle agrees to 'zero' damages in Google lawsuit, eyes appeal
Line 206: Line 211:


== यह भी देखें{{Portal|Free and open-source software}}==
== यह भी देखें{{Portal|Free and open-source software}}==
* एंड्रॉइड रनटाइम
* एंड्रॉइड अर्थगत
* [[एंड्रॉइड सॉफ्टवेयर विकास]]
* [[एंड्रॉइड सॉफ्टवेयर विकास]]
* [[अनुप्रयोग वर्चुअलाइजेशन]]
* [[अनुप्रयोग वर्चुअलाइजेशन]]
[[एप्लिकेशन वर्चुअलाइजेशन सॉफ़्टवेयर की तुलना]] तुलना
[[एप्लिकेशन वर्चुअलाइजेशन सॉफ़्टवेयर की तुलना|अनुप्रयोग वर्चुअलाइजेशन सॉफ़्टवेयर की तुलना]]
* [[जावा और एंड्रॉइड एपीआई की तुलना]]
* [[जावा और एंड्रॉइड एपीआई की तुलना]]
* [[जेईबी डिकंपाइलर]] - डाल्विक (डीईएक्स और एपीके) डिकंपाइलर
* [[जेईबी डिकंपाइलर]] - डाल्विक (डीईएक्स और एपीके) डिकंपाइलर
* [[डाल्विक टर्बो वर्चुअल मशीन]] - मालिकाना वैकल्पिक दल्विक कार्यान्वयन
* [[डाल्विक टर्बो वर्चुअल मशीन]] - स्वामित्व वैकल्पिक दल्विक कार्यान्वयन


== संदर्भ ==
== संदर्भ ==
Line 218: Line 223:


== बाहरी संबंध ==
== बाहरी संबंध ==
* [https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html Dalvik bytecode] – official Android documentation of the [[instruction set]]
* [https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html डाल्विक bytecode] – official एंड्राइड documentation of the [[instruction set]]
* [https://source.android.com/devices/tech/dalvik/dex-format.html Dex Executable format] – official Android documentation
* [https://source.android.com/devices/tech/dalvik/dex-format.html Dex Executable format] – official एंड्राइड documentation
* {{YouTube|id=Ls0tM-c4Vfo|title=A JIT Compiler for Android's Dalvik VM}}, Google I/O 2010, by Ben Cheng and Bill Buzbee
* {{YouTube|id=Ls0tM-c4Vfo|title=A JIT Compiler for Android's Dalvik VM}}, गूगल I/O 2010, by Ben Cheng and Bill Buzbee
* [http://sites.google.com/site/io/dalvik-vm-internals Dalvik VM Internals], Google I/O 2008, by Dan Bornstein
* [http://sites.google.com/site/io/dalvik-vm-internals डाल्विक वीएम Internals], गूगल I/O 2008, by Dan Bornstein
* [http://johnkoenig.com/the-800-million-dollar-question-whats-the-difference-between-trademark-and-copyright/ The $800 Million Dollar Question: What’s the Difference Between Trademark and Copyright?]
* [http://johnkoenig.com/the-800-million-dollar-question-whats-the-difference-between-trademark-and-copyright/ The $800 Million Dollar Question: What’s the Difference Between Trademark and Copyright?]


Line 227: Line 232:
{{Virtualization software}}
{{Virtualization software}}


{{DEFAULTSORT:Dalvik (Software)}}[[Category: एंड्रॉइड (ऑपरेटिंग सिस्टम)]] [[Category: जावा वर्चुअल मशीनें बंद कर दी गईं]] [[Category: रजिस्टर-आधारित वर्चुअल मशीनें]] [[Category: बाइटकोड]]
{{DEFAULTSORT:Dalvik (Software)}}
 
 


[[Category: Machine Translated Page]]
[[Category:All articles containing potentially dated statements|Dalvik (Software)]]
[[Category:Created On 11/07/2023]]
[[Category:All articles with specifically marked weasel-worded phrases|Dalvik (Software)]]
[[Category:Articles containing potentially dated statements from March 2014|Dalvik (Software)]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Dalvik (Software)]]
[[Category:Articles with invalid date parameter in template|Dalvik (Software)]]
[[Category:Articles with specifically marked weasel-worded phrases from February 2023|Dalvik (Software)]]
[[Category:Citation Style 1 templates|M]]
[[Category:Collapse templates|Dalvik (Software)]]
[[Category:Created On 11/07/2023|Dalvik (Software)]]
[[Category:Lua-based templates|Dalvik (Software)]]
[[Category:Machine Translated Page|Dalvik (Software)]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Dalvik (Software)]]
[[Category:Pages with empty portal template|Dalvik (Software)]]
[[Category:Pages with script errors|Dalvik (Software)]]
[[Category:Portal templates with redlinked portals|Dalvik (Software)]]
[[Category:Sidebars with styles needing conversion|Dalvik (Software)]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Dalvik (Software)]]
[[Category:Templates based on the Citation/CS1 Lua module]]
[[Category:Templates generating COinS|Cite magazine]]
[[Category:Templates generating microformats|Dalvik (Software)]]
[[Category:Templates that add a tracking category|Dalvik (Software)]]
[[Category:Templates that are not mobile friendly|Dalvik (Software)]]
[[Category:Templates that generate short descriptions|Dalvik (Software)]]
[[Category:Templates using TemplateData|Dalvik (Software)]]
[[Category:Wikipedia fully protected templates|Cite magazine]]
[[Category:Wikipedia metatemplates|Dalvik (Software)]]
[[Category:एंड्रॉइड (ऑपरेटिंग सिस्टम)|Dalvik (Software)]]
[[Category:जावा वर्चुअल मशीनें बंद कर दी गईं|Dalvik (Software)]]
[[Category:बाइटकोड|Dalvik (Software)]]
[[Category:रजिस्टर-आधारित वर्चुअल मशीनें|Dalvik (Software)]]

Latest revision as of 10:11, 27 July 2023

Dalvik
Original author(s)Dan Bornstein
Operating systemLinux kernel
PlatformAndroid
SuccessorAndroid Runtime
TypeVirtual machine
LicenseApache License 2.0
Websitesource.android.com/devices/tech/dalvik/index.html

डाल्विक एंड्रॉइड (ऑपरेटिंग सिस्टम) में संवृत प्रक्रिया एक वर्चुअल मशीन (वीएम) है जो एंड्रॉइड के लिए लिखे गए अनुप्रयोग को निष्पादित करता है।[1] (डाल्विक बाइटकोड प्रारूप अभी भी वितरण प्रारूप के रूप में उपयोग किया जाता है, परन्तु अब नवीन एंड्रॉइड संस्करणों में अर्थगत पर नहीं है।) एंड्रॉइड संस्करण इतिहास (अब असमर्थित) एंड्रॉइड किटकैट या 4.4 किटकैट और इससे पूर्व, डाल्विक एंड्रॉइड सॉफ़्टवेयर स्टैक का अभिन्न अंग था। जो सामान्यतः मोबाइल उपकरणों जैसे चल दूरभाष और टैबलेट कंप्यूटर और कुछ उपकरणों जैसे स्मार्ट टीवी और धारणीय उपकरणों में उपयोग किए जाते थे। डाल्विक ओपन सोर्स सॉफ्टवेयर है, जो मूल रूप से डैन बोर्नस्टीन द्वारा लिखा गया है, जिन्होंने इसका नाम आइसलैंड के आईजफजोरिदुर में मछली पकड़ने वाले गांव डाल्विक के नाम पर रखा था।[2][3]

इस प्रकार से एंड्रॉइड के लिए कंप्यूटर प्रोग्राम सामान्यतः जावा प्रोग्रामिंग लैंग्वेज में लिखे जाते हैं और जावा वर्चुअल मशीन के लिए बाईटकोड में संकलित किए जाते हैं, जिसे बाद में डाल्विक बाइटकोड में अनुवादित किया जाता है और संग्रहीत किया जाता है। .dex (डाल्विक EXecutable) और .odex (अनुकूलित डाल्विक निष्पादन योग्य) फ़ाइलें; संबंधित शब्द ओडेक्स और डी-ओडेक्स संबंधित बाइटकोड रूपांतरणों से जुड़े हैं। अतः संहत डाल्विक निष्पाद्य प्रारूप उन सिस्टमों के लिए डिज़ाइन किया गया है जो रैंडम एक्सेस मेमोरी और सेंट्रल प्रोसेसिंग यूनिट गति की स्थिति में बाधित हैं।

इस प्रकार से डाल्विक का उत्तराधिकारी एंड्रॉइड अर्थगत (एआरटी) है, जो समान बाइटकोड और .dex फ़ाइलों (परन्तु .odex फ़ाइलों का नहीं) का उपयोग करता है, उत्तराधिकार का लक्ष्य निष्पादन में सुधार करना है। अतः नवीन अर्थगत वातावरण को पहली बार एंड्रॉइड 4.4 किटकैट में तकनीकी पूर्वावलोकन के रूप में सम्मिलित किया गया था,[4][5] और बाद के संस्करणों में डाल्विक को पूर्ण रूप से बदल दिया; एंड्रॉइड लॉलीपॉप या एंड्रॉइड 5.0 लॉलीपॉप पहला संस्करण है जिसमें एआरटी एकमात्र अर्थगत सम्मिलित है।

वास्तुकला

डाल्विक और एंड्रॉइड अर्थगत संरचना की तुलना

इस प्रकार से जावा वर्चुअल मशीनों के विपरीत, जो स्टैक मशीन हैं, डाल्विक वीएम मशीन रजिस्टर-आधारित संरचना का उपयोग करता है जिसके लिए कम, सामान्यतः अधिक जटिल, वर्चुअल मशीन निर्देशों की आवश्यकता होती है। अतः डाल्विक प्रोग्राम एंड्रॉइड अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) का उपयोग करके जावा में लिखे गए हैं, जावा बाइटकोड में संकलित किए गए हैं, और आवश्यकतानुसार डाल्विक निर्देशों में परिवर्तित किए गए हैं।

इस प्रकार से जावा .class फ़ाइलों को .dex प्रारूप में परिवर्तित करने के लिए dx नामक टूल का उपयोग किया जाता है। एक ही .dex फ़ाइल में एकाधिक क्लास (कंप्यूटर विज्ञान) सम्मिलित हैं। अतः अनुलिपि स्ट्रिंग (कंप्यूटर विज्ञान) और कई क्लास फ़ाइलों में उपयोग किए जाने वाले अन्य स्थिरांक को स्थान बचाने के लिए .dex आउटपुट में मात्र एक बार सम्मिलित किया जाता है। जावा बाइटकोड को डाल्विक वीएम द्वारा उपयोग किए जाने वाले वैकल्पिक निर्देश समूह में भी परिवर्तित किया जाता है। असम्पीडित .dex फ़ाइल सामान्यतः समान .class फ़ाइलों से प्राप्त डेटा संपीड़न जेएआर (फ़ाइल प्रारूप) (जेएआर) की तुलना में आकार में कुछ प्रतिशत छोटी होती है।[6]

मोबाइल उपकरण पर इंस्टॉल होने पर डाल्विक निष्पादनयोग्य को फिर से संशोधित किया जा सकता है। अतः अधिक अनुकूलन (कंप्यूटर विज्ञान) प्राप्त करने के लिए, कुछ डेटा, सरल डेटा संरचनाओं और प्रकार्य (कंप्यूटर विज्ञान) में इंडियानेस की विनिमेयता की जा सकती है, लाइब्रेरी (कंप्यूटिंग) लिंकर (कंप्यूटिंग) इनलाइन प्रकार्य हो सकते है, और रिक्त क्लास ऑब्जेक्ट लघुपथित हो सकते हैं। उदाहरण के लिए.

इस प्रकार से निम्न मेमोरी आवश्यकताओं के लिए अनुकूलित होने के कारण, डाल्विक में कुछ विशिष्ट विशेषताएं हैं जो इसे अन्य मानक वीएम से अलग करती हैं:[7]

  • कम स्थान का उपयोग करने के लिए वीएम को दुर्बल कर दिया गया था।
  • क्लास (फ़ाइल प्रारूप) इंटरप्रेटर (कंप्यूटिंग) को सरल बनाने के लिए मात्र 32-बिट कंप्यूटिंग का उपयोग करने के लिए निरंतर पूल को संशोधित किया गया है।
  • मानक जावा बाइटकोड 8-बिट कंप्यूटिंग निर्देशों को निष्पादित करता है। स्थानीय चर को अलग-अलग निर्देशों द्वारा ऑपरेंड स्टैक में या उससे अनुकरण किया जाना चाहिए। इसके अतिरिक्त डाल्विक अपने स्वयं के 16-बिट कंप्यूटिंग समूह का उपयोग करता है जो सीधे स्थानीय चर पर काम करता है। स्थानीय चर को सामान्यतः 4-बिट कंप्यूटिंग रजिस्टर क्षेत्र द्वारा चुना जाता है। इससे डाल्विक के निर्देशों की संख्या कम हो जाती है और उसकी इंटरप्रेटर गति बढ़ जाती है।

इस प्रकार से गूगल के अनुसार, डाल्विक का डिज़ाइन उपकरण को वीएम के कई उदाहरणों को कुशलतापूर्वक चलाने की अनुमति देता है।[8]

अतः एंड्राइड फ्रोयो डाल्विक में ट्रेस-आधारित जस्ट-इन-टाइम (जेआईटी) संकलन लाया गया था, प्रत्येक बार चलने वाले अनुप्रयोग को निरंतर प्रोफाइल करके और उनके बाइटकोड के प्रायः निष्पादित छोटे खंडों को मशीन कोड में गतिशील रूप से संकलित करके अनुप्रयोगों के निष्पादन को अनुकूलित किया था। जबकि डाल्विक इंटरप्रेटर (कंप्यूटिंग) अनुप्रयोग के शेष बाइटकोड को, उन छोटे बाइटकोड परिखंड का मूल निष्पादन, जिन्हें ट्रेस कहा जाता है, महत्वपूर्ण निष्पादन सुधार प्रदान करता है।[9][10][11]

निष्पादन

एक डाल्विक-संचालित फ़ोन

इस प्रकार से स्टैक मशीनों बनाम रजिस्टर मशीन-आधारित दृष्टिकोणों की सापेक्ष विशेषताएं चल रही चर्चा का विषय हैं।[12]

सामान्यतः, स्टैक-आधारित मशीनों को स्टैक पर डेटा लोड करने और उस डेटा में अन्तःक्षेप करने के लिए निर्देश (कंप्यूटर विज्ञान) का उपयोग करना चाहिए, और इस प्रकार, समान उच्च-स्तरीय प्रोग्रामिंग लैंग्वेज को लागू करने के लिए रजिस्टर मशीनों की तुलना में अधिक निर्देशों की आवश्यकता होती है, परन्तु रजिस्टर मशीन में निर्देशों को स्रोत और गंतव्य रजिस्टरों को एन्कोड करना होगा और इसलिए, वे बड़े होते हैं। अतः यह अंतर वीएम इंटरप्रेटर के लिए महत्वपूर्ण है, जिसके लिए ओपकोड प्रेषण बहुमूल्य होता है, साथ ही समय-समय पर संकलन के लिए समान रूप से प्रासंगिक अन्य कारक भी होते हैं।

इस प्रकार से 2010 में ओरेकल निगम (जावा तकनीक के मुखिया) द्वारा मानक गैर-ग्राफिकल जावा बेंचमार्क के साथ एआरएम संरचना वर्ग 32-बिट संरचना उपकरणों पर किए गए परीक्षणों से ज्ञात हुआ कि एंबेडेड जावा जावा एसई का हॉटस्पॉट (वर्चुअल मशीन) वीएम 2-3 एम्बेडेड है। अतः एंड्राइड 2.2 (प्रारंभिक एंड्राइड रिलीज़ जिसमें जेआईटी कंपाइलर सम्मिलित था) के जेआईटी कंपाइलर-आधारित डाल्विक वीएम से कई गुना तीव्र था।[13] 2012 में, अकादमिक बेंचमार्क ने एक ही एंड्रॉइड बोर्ड पर हॉटस्पॉट (वर्चुअल मशीन) और डाल्विक के मध्य 3 के कारक की पुष्टि की, यह भी ध्यान दिया कि डाल्विक कोड हॉटस्पॉट से छोटा नहीं था।[14]

इस प्रकार से आगे, as of March 2014, एंड्रॉइड उपकरण पर किए गए बेंचमार्क अभी भी उसी एंड्रॉइड उपकरण पर मूल अनुप्रयोग और डाल्विक अनुप्रयोग के मध्य कारक 100 तक दिखाते हैं।[15] 2009 के प्रारंभिक इंटरप्रेटर का उपयोग करके बेंचमार्क चलाने पर, जावा नेटिव इंटरफ़ेस (जेएनआई) और नेटिव कोड दोनों ने तीव्रता का क्रम दिखाया।[16]

लाइसेंसिंग और पेटेंट

इस प्रकार से डाल्विक को अपाचे लाइसेंस 2.0 की प्रतिबन्धों के अंतर्गत प्रकाशित किया गया है।[17] कुछ[who?] कहते हैं कि डाल्विक मानक जावा अर्थगत के शीर्ष पर विकास के अतिरिक्त स्पष्ट कक्ष का डिज़ाइन कार्यान्वयन है, जिसका अर्थ यह होगा कि यह मानक-संस्करण या ओपन-सोर्स-संस्करण जावा अर्थगत से स्वत्वाधिकार-आधारित लाइसेंस प्रतिबंध प्राप्त नहीं करता है।[18] अतः ओरेकल निगम और कुछ समीक्षक इस पर तर्क करते हैं।[19]

इस प्रकार से 12 अगस्त 2010 को, ओरेकल निगम, जिसने अप्रैल 2009 में सन माइक्रोसिस्टम्स का अधिग्रहण किया था और इसलिए उसके निकट जावा के अधिकार हैं, उसने स्वत्वाधिकार और पेटेंट के कथित उल्लंघन पर गूगल पर प्रकरण दर्ज किया। अतः ओरेकल ने आरोप लगाया कि गूगल ने एंड्राइड विकसित करते समय विचार करके, प्रत्यक्षतः और बार-बार ओरेकल की जावा-संबंधित बौद्धिक संपदा का उल्लंघन किया।[20][21][22] मई 2012 में, इस स्थिति में जूरी ने पाया कि गूगल ने ओरेकल के पेटेंट का उल्लंघन नहीं किया है, और ट्रायल कोर्ट के न्यायाधीश ने निर्णय सुनाया कि गूगल द्वारा उपयोग की जाने वाली जावा एपीआई की संरचना स्वत्वाधिकार योग्य नहीं थी।[23][24] इस प्रकार से समूहों ने अनुकरण किए गए कोड की 9 पंक्तियों के लिए वैधानिक क्षति में शून्य डॉलर पर सहमत हुईं।[25][26]

यह भी देखें

अनुप्रयोग वर्चुअलाइजेशन सॉफ़्टवेयर की तुलना

संदर्भ

  1. "एआरटी कचरा संग्रहण डिबगिंग". Retrieved 6 October 2015. The Dalvik runtime is no longer maintained or available [in current versions of Android] and its byte-code format is now used by ART.
  2. Journal entry referencing the source of the name
  3. "Google Calling: Inside Android, the gPhone SDK". onlamp.com. Archived from the original on 2017-01-10. Retrieved 2008-02-05.
  4. Sean Buckley (2013-11-06). "'ART' experiment in Android KitKat improves battery life and speeds up apps". Engadget. Retrieved 2014-07-05.
  5. Daniel P. (2013-11-07). "Experimental Google ART runtime in Android KitKat can bring twice faster app executions". phonearena.com. Retrieved 2014-07-05.
  6. Bornstein, Dan (2008-05-29). "Presentation of Dalvik VM Internals" (PDF). p. 22. Retrieved 2010-08-16.
  7. Rose, John (2008-05-31). "with Android and Dalvik at Google I/O". Archived from the original on 2008-06-04. Retrieved 2008-06-08.
  8. Google (2009-04-13). "What is Android?". Archived from the original on 2009-06-27. Retrieved 2009-04-19.
  9. Ben Cheng; Bill Buzbee (May 2010). "A JIT Compiler for Android's Dalvik VM" (PDF). android-app-developer.co.uk. pp. 5–14. Archived from the original (PDF) on 2015-11-06. Retrieved March 18, 2015.
  10. Phil Nickinson (May 26, 2010). "Google Android developer explains more about Dalvik and the JIT in Froyo". androidcentral.com. Archived from the original on 2014-07-14. Retrieved July 8, 2014.
  11. "Nexus One Is Running Android 2.2 Froyo. How Fast Is It Compared To 2.1? Oh, Only About 450% Faster". 2010-05-13. Retrieved 2010-05-21.
  12. Shi, Yunhe; Gregg, David; Beatty, Andrew; Ertl, M. Anton (2005-06-11). "Virtual Machine Showdown: Stack Versus Registers" (PDF). Retrieved 2009-12-22.
  13. Vandette, Bob (2010-11-22). "Java SE Embedded Performance Versus Android 2.2". Oracle Corporation. Archived from the original on 2011-06-28. Retrieved 2011-09-04. The results show that although Androids new JIT is an improvement over its interpreter only implementation, Android is still lagging behind the performance of our Hotspot enabled Java SE Embedded. As you can see from the above results, Java SE Embedded can execute Java bytecodes from 2 to 3 times faster than Android 2.2.
  14. Hyeong-Seok Oh; Beom-Jun Kim; Hyung-Kyu Choi; Soo-Mook Moon (2012). Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES '12. Association for Computing Machinery. p. 115. doi:10.1145/2388936.2388956. ISBN 9781450316880. S2CID 36316611. In the JITC mode, however, Dakvik is slower than HotSpot by more than 2.9 times and its generated code size is not smaller than HotSpot's due to its worse code quality and trace-chaining code.
  15. "Top AndEBench Scores". www.eembc.org. Retrieved 2014-03-23.
  16. Batyuk, Leonid; Schmidt, Aubrey-Derrick; Schmidt, Hans-Gunther; Camtepe, Ahmet; Albayrak, Sahin (2009-04-29). Developing and Benchmarking Native Linux Applications on Android. pp. 381–392. Bibcode:2009mmos.book..381B. doi:10.1007/978-3-642-01802-2_28. ISBN 978-3-642-01801-5. S2CID 12131309. The results show that native C applications can be up to 30 times as fast as an identical algorithm running in Dalvik VM. Java applications can become a speed-up of up to 10 times if utilizing JNI. {{cite book}}: |journal= ignored (help)
  17. "सोर्स ट्री डाउनलोड करना - एंड्रॉइड ओपन सोर्स". Android.git.kernel.org. Archived from the original on 2009-04-17. Retrieved 2012-06-07.
  18. Garling, Caleb. "एंड्रॉइड के जावा मिमिक को लेकर गूगल और ओरेकल के 'विशेषज्ञ' आपस में भिड़ गए". Wired.
  19. Ed Bott (September 8, 2011). "The real history of Java and Android, as told by Google". ZDNet. Retrieved 2011-11-27. The definition of a "clean room" implementation is that the engineers writing the code have no direct exposure to the original, copyrighted material, including code, specifications, and other documentation. That's a problem for Google, as I noted in yesterday's post, because there is substantial evidence that the engineers working on the project had direct access to the copyrighted material.
  20. "Oracle Sues Google Over Java in Android Devices". digitaltrends.com. 2010-08-13. Retrieved 2011-08-08.
  21. James Niccolai (2010-08-12). "Oracle sues Google over Java use in Android". Computerworld. Retrieved 2010-08-13.
  22. Mark Hachman (2010-08-13). "Oracle Sues Google Over Android Java Use". PC Magazine. Ziff Davis.
  23. Josh Lowensohn (May 23, 2012). "जूरी ने Google को Oracle के पेटेंट के उल्लंघन से मुक्त कर दिया". ZDNet. Retrieved 2012-05-25.
  24. Joe Mullin (May 31, 2012). "Google wins crucial API ruling, Oracle's case decimated". Ars Technica. Retrieved 2012-06-01.
  25. Niccolai, James (June 20, 2012). "Oracle agrees to 'zero' damages in Google lawsuit, eyes appeal". Retrieved 2012-06-23.
  26. Adam Outler (May 16, 2012). "Oracle बनाम Google परीक्षण पर अद्यतन". Archived from the original on 2013-05-16. Retrieved 2013-01-18. Oracle के दावों का एक बड़ा हिस्सा Java.Util.Arrays.rangeCheck() में मौजूद कोड की 9 पंक्तियों पर आधारित है। यहाँ प्रश्न में कोड है:...

बाहरी संबंध