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

From Vigyanwiki
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 पंक्तियों पर आधारित है। यहाँ प्रश्न में कोड है:...

बाहरी संबंध