डाल्विक (सॉफ्टवेयर)
डाल्विक एंड्रॉइड (ऑपरेटिंग सिस्टम) में बंद प्रक्रिया वर्चुअल मशीन#प्रोसेस_वर्चुअल_मशीन (वीएम) है जो एंड्रॉइड के लिए लिखे गए एप्लिकेशन को निष्पादित करता है।[1] (Dalvik बाइटकोड प्रारूप अभी भी वितरण प्रारूप के रूप में उपयोग किया जाता है, लेकिन अब नए एंड्रॉइड संस्करणों में रनटाइम पर नहीं है।) एंड्रॉइड संस्करण इतिहास (अब असमर्थित) एंड्रॉइड किटकैट|4.4 किटकैट और इससे पहले, डेल्विक एंड्रॉइड सॉफ़्टवेयर स्टैक का अभिन्न अंग था। जो आमतौर पर मोबाइल उपकरणों जैसे चल दूरभाष और टैबलेट कंप्यूटर और कुछ उपकरणों जैसे स्मार्ट टीवी और पहनने योग्य उपकरणों में उपयोग किए जाते थे। डाल्विक खुला स्रोत सॉफ्टवेयर है, जो मूल रूप से डैन बोर्नस्टीन द्वारा लिखा गया है, जिन्होंने इसका नाम आइसलैंड के आईजफजोरिदुर में मछली पकड़ने वाले गांव डाल्विक के नाम पर रखा था।[2][3]
एंड्रॉइड के लिए कंप्यूटर प्रोग्राम आमतौर पर जावा प्रोग्रामिंग भाषा में लिखे जाते हैं और जावा वर्चुअल मशीन के लिए बाईटकोड में संकलित किए जाते हैं, जिसे बाद में डाल्विक बाइटकोड में अनुवादित किया जाता है और संग्रहीत किया जाता है। .dex
(Dalvik EXecutable) और .odex
(अनुकूलित डाल्विक निष्पादन योग्य) फ़ाइलें; संबंधित शब्द ओडेक्स और डी-ओडेक्स संबंधित बाइटकोड रूपांतरणों से जुड़े हैं। कॉम्पैक्ट डेल्विक एक्ज़ीक्यूटेबल प्रारूप उन सिस्टमों के लिए डिज़ाइन किया गया है जो रैंडम एक्सेस मेमोरी और सेंट्रल प्रोसेसिंग यूनिट स्पीड के मामले में बाधित हैं।
डाल्विक का उत्तराधिकारी एंड्रॉइड रनटाइम (एआरटी) है, जो समान बाइटकोड और .dex फ़ाइलों (लेकिन .odex फ़ाइलों का नहीं) का उपयोग करता है, उत्तराधिकार का लक्ष्य प्रदर्शन में सुधार करना है। नए रनटाइम वातावरण को पहली बार एंड्रॉइड 4.4 किटकैट में तकनीकी पूर्वावलोकन के रूप में शामिल किया गया था,[4][5] और बाद के संस्करणों में डाल्विक को पूरी तरह से बदल दिया; एंड्रॉइड लॉलीपॉप|एंड्रॉइड 5.0 लॉलीपॉप पहला संस्करण है जिसमें एआरटी एकमात्र रनटाइम शामिल है।
वास्तुकला
जावा वर्चुअल मशीनों के विपरीत, जो स्टैक मशीनें हैं, डेल्विक वीएम मशीन रजिस्टर करें | रजिस्टर-आधारित आर्किटेक्चर का उपयोग करता है जिसके लिए कम, आमतौर पर अधिक जटिल, वर्चुअल मशीन निर्देशों की आवश्यकता होती है। डाल्विक प्रोग्राम एंड्रॉइड अप्लिकेशन प्रोग्रामिंग अंतरफलक (एपीआई) का उपयोग करके जावा में लिखे गए हैं, जावा बाइटकोड में संकलित किए गए हैं, और आवश्यकतानुसार डाल्विक निर्देशों में परिवर्तित किए गए हैं।
एक उपकरण कहा जाता है dx
जावा क्लास (फ़ाइल प्रारूप)|क्लास फ़ाइलों को .dex प्रारूप में परिवर्तित करने के लिए उपयोग किया जाता है। ही .dex फ़ाइल में एकाधिक कक्षाएँ (कंप्यूटर विज्ञान) शामिल हैं। डुप्लिकेट स्ट्रिंग (कंप्यूटर विज्ञान) और कई क्लास फ़ाइलों में उपयोग किए जाने वाले अन्य स्थिरांक को स्थान बचाने के लिए .dex आउटपुट में केवल बार शामिल किया जाता है। जावा बाइटकोड को डेल्विक वीएम द्वारा उपयोग किए जाने वाले वैकल्पिक निर्देश सेट में भी परिवर्तित किया जाता है। असम्पीडित .dex फ़ाइल आम तौर पर समान .class फ़ाइलों से प्राप्त डेटा संपीड़न JAR (फ़ाइल प्रारूप) (JAR) की तुलना में आकार में कुछ प्रतिशत छोटी होती है।[6]
मोबाइल डिवाइस पर इंस्टॉल होने पर डेल्विक निष्पादनयोग्य को फिर से संशोधित किया जा सकता है। अधिक अनुकूलन (कंप्यूटर विज्ञान) प्राप्त करने के लिए, कुछ डेटा, सरल डेटा संरचनाओं और फ़ंक्शन (कंप्यूटर विज्ञान) में endianness की अदला-बदली की जा सकती है, लाइब्रेरी (कंप्यूटिंग) लिंकर (कंप्यूटिंग) इनलाइन फ़ंक्शन हो सकती है, और खाली क्लास ऑब्जेक्ट शॉर्ट-सर्किट हो सकते हैं। , उदाहरण के लिए।
कम मेमोरी आवश्यकताओं के लिए अनुकूलित होने के कारण, डाल्विक में कुछ विशिष्ट विशेषताएं हैं जो इसे अन्य मानक वीएम से अलग करती हैं:[7]
- कम जगह का उपयोग करने के लिए वीएम को पतला कर दिया गया था।
- क्लास (फ़ाइल प्रारूप)# दुभाषिया (कंप्यूटिंग) को सरल बनाने के लिए केवल 32-बिट कंप्यूटिंग|32-बिट इंडेक्स का उपयोग करने के लिए निरंतर पूल को संशोधित किया गया है।
- मानक जावा बाइटकोड 8-बिट कंप्यूटिंग|8-बिट स्टैक निर्देशों को निष्पादित करता है। स्थानीय चर को अलग-अलग निर्देशों द्वारा ऑपरेंड स्टैक में या उससे कॉपी किया जाना चाहिए। इसके बजाय डेल्विक अपने स्वयं के 16-बिट कंप्यूटिंग|16-बिट अनुदेश सेट का उपयोग करता है जो सीधे स्थानीय चर पर काम करता है। स्थानीय चर को आमतौर पर 4-बिट कंप्यूटिंग|4-बिट वर्चुअल रजिस्टर फ़ील्ड द्वारा चुना जाता है। इससे डेल्विक के निर्देशों की संख्या कम हो जाती है और उसकी दुभाषिया गति बढ़ जाती है।
Google के अनुसार, डाल्विक का डिज़ाइन डिवाइस को VM के कई उदाहरणों को कुशलतापूर्वक चलाने की अनुमति देता है।[8] Android Froyo|Android 2.2 Froyo दलविक में समय-समय पर संकलन का पता लगाना लाया। (कंप्यूटिंग) अक्सर उनके बाइटकोड के छोटे खंडों को मूल मशीन कोड में निष्पादित करता है। जबकि डाल्विक इंटरप्रेटर (कंप्यूटिंग) एप्लिकेशन के बाकी बाइटकोड को, उन छोटे बाइटकोड सेगमेंट का मूल निष्पादन, जिन्हें ट्रेस कहा जाता है, महत्वपूर्ण प्रदर्शन सुधार प्रदान करता है।[9][10][11]
प्रदर्शन
स्टैक मशीनों बनाम रजिस्टर मशीन-आधारित दृष्टिकोणों की सापेक्ष खूबियाँ चल रही बहस का विषय हैं।[12]
आम तौर पर, स्टैक-आधारित मशीनों को स्टैक पर डेटा लोड करने और उस डेटा में हेरफेर करने के लिए निर्देश (कंप्यूटर विज्ञान) का उपयोग करना चाहिए, और इस प्रकार, समान उच्च-स्तरीय प्रोग्रामिंग भाषा | उच्च-स्तरीय कोड को लागू करने के लिए रजिस्टर मशीनों की तुलना में अधिक निर्देशों की आवश्यकता होती है, लेकिन रजिस्टर मशीन में निर्देशों को स्रोत और गंतव्य रजिस्टरों को एन्कोड करना होगा और इसलिए, वे बड़े होते हैं। यह अंतर वीएम दुभाषियों के लिए महत्वपूर्ण है, जिसके लिए opcode प्रेषण महंगा होता है, साथ ही समय-समय पर संकलन के लिए समान रूप से प्रासंगिक अन्य कारक भी होते हैं।
2010 में ओरेकल कॉर्पोरेशन (जावा तकनीक के मालिक) द्वारा मानक गैर-ग्राफिकल जावा बेंचमार्क के साथ एआरएम आर्किटेक्चर परिवार # 32-बिट_आर्किटेक्चर उपकरणों पर किए गए परीक्षणों से पता चला कि एंबेडेड जावा # जावा एसई का हॉटस्पॉट (वर्चुअल मशीन) वीएम 2-3 एम्बेडेड है। Android Froyo|Android 2.2 (प्रारंभिक Android रिलीज़ जिसमें JIT कंपाइलर शामिल था) के JIT कंपाइलर-आधारित डाल्विक VM से कई गुना तेज़।[13] 2012 में, अकादमिक बेंचमार्क ने ही एंड्रॉइड बोर्ड पर हॉटस्पॉट (वर्चुअल मशीन) और डाल्विक के बीच 3 के कारक की पुष्टि की, यह भी ध्यान दिया कि डाल्विक कोड हॉटस्पॉट से छोटा नहीं था।[14] आगे, as of March 2014[update], एंड्रॉइड डिवाइस पर किए गए बेंचमार्क अभी भी उसी एंड्रॉइड डिवाइस पर मूल एप्लिकेशन और डाल्विक एप्लिकेशन के बीच कारक 100 तक दिखाते हैं।[15][original research?][improper synthesis?] 2009 के प्रारंभिक दुभाषिया का उपयोग करके बेंचमार्क चलाने पर, जावा नेटिव इंटरफ़ेस (जेएनआई) और नेटिव कोड दोनों ने तीव्रता का क्रम दिखाया।[16]
लाइसेंसिंग और पेटेंट
डाल्विक को अपाचे लाइसेंस 2.0 की शर्तों के तहत प्रकाशित किया गया है।[17] कुछ[who?] कहते हैं कि डाल्विक मानक जावा रनटाइम के शीर्ष पर विकास के बजाय साफ़ कमरे का डिज़ाइन|क्लीन-रूम कार्यान्वयन है, जिसका अर्थ यह होगा कि यह मानक-संस्करण या ओपन-सोर्स-संस्करण से कॉपीराइट-आधारित लाइसेंस प्रतिबंध प्राप्त नहीं करता है। जावा रनटाइम.[18] Oracle Corporation और कुछ समीक्षक इस पर विवाद करते हैं।[19] 12 अगस्त 2010 को, ओरेकल कॉर्पोरेशन, जिसने अप्रैल 2009 में सन माइक्रोसिस्टम्स का अधिग्रहण किया था और इसलिए उसके पास जावा के अधिकार हैं, ने कॉपीराइट और पेटेंट के कथित उल्लंघन पर Google पर मुकदमा दायर किया। Oracle ने आरोप लगाया कि Google ने Android विकसित करते समय जानबूझकर, सीधे और बार-बार Oracle की जावा-संबंधित बौद्धिक संपदा का उल्लंघन किया।[20][21][22] मई 2012 में, इस मामले में जूरी ने पाया कि Google ने Oracle के पेटेंट का उल्लंघन नहीं किया है, और ट्रायल जज ने फैसला सुनाया कि Google द्वारा उपयोग की जाने वाली Java API की संरचना कॉपीराइट योग्य नहीं थी।[23][24] पार्टियां कॉपी किए गए कोड की 9 पंक्तियों के लिए वैधानिक क्षति में शून्य डॉलर पर सहमत हुईं।[25][26]
यह भी देखें
- एंड्रॉइड रनटाइम
- एंड्रॉइड सॉफ्टवेयर विकास
- अनुप्रयोग वर्चुअलाइजेशन
एप्लिकेशन वर्चुअलाइजेशन सॉफ़्टवेयर की तुलना तुलना
- जावा और एंड्रॉइड एपीआई की तुलना
- जेईबी डिकंपाइलर - डाल्विक (डीईएक्स और एपीके) डिकंपाइलर
- डाल्विक टर्बो वर्चुअल मशीन - मालिकाना वैकल्पिक दल्विक कार्यान्वयन
संदर्भ
- ↑ "एआरटी कचरा संग्रहण डिबगिंग". 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.
- ↑ Journal entry referencing the source of the name
- ↑ "Google Calling: Inside Android, the gPhone SDK". onlamp.com. Archived from the original on 2017-01-10. Retrieved 2008-02-05.
- ↑ Sean Buckley (2013-11-06). "'ART' experiment in Android KitKat improves battery life and speeds up apps". Engadget. Retrieved 2014-07-05.
- ↑ Daniel P. (2013-11-07). "Experimental Google ART runtime in Android KitKat can bring twice faster app executions". phonearena.com. Retrieved 2014-07-05.
- ↑ Bornstein, Dan (2008-05-29). "Presentation of Dalvik VM Internals" (PDF). p. 22. Retrieved 2010-08-16.
- ↑ 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.
- ↑ Google (2009-04-13). "What is Android?". Archived from the original on 2009-06-27. Retrieved 2009-04-19.
- ↑ 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.
- ↑ 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.
- ↑ "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.
- ↑ Shi, Yunhe; Gregg, David; Beatty, Andrew; Ertl, M. Anton (2005-06-11). "Virtual Machine Showdown: Stack Versus Registers" (PDF). Retrieved 2009-12-22.
- ↑ 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.
- ↑ 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.
- ↑ "Top AndEBench Scores". www.eembc.org. Retrieved 2014-03-23.
- ↑ 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) - ↑ "सोर्स ट्री डाउनलोड करना - एंड्रॉइड ओपन सोर्स". Android.git.kernel.org. Archived from the original on 2009-04-17. Retrieved 2012-06-07.
- ↑ Garling, Caleb. "एंड्रॉइड के जावा मिमिक को लेकर गूगल और ओरेकल के 'विशेषज्ञ' आपस में भिड़ गए". Wired.
- ↑ 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.
- ↑ "Oracle Sues Google Over Java in Android Devices". digitaltrends.com. 2010-08-13. Retrieved 2011-08-08.
- ↑ James Niccolai (2010-08-12). "Oracle sues Google over Java use in Android". Computerworld. Retrieved 2010-08-13.
- ↑ Mark Hachman (2010-08-13). "Oracle Sues Google Over Android Java Use". PC Magazine. Ziff Davis.
- ↑ Josh Lowensohn (May 23, 2012). "जूरी ने Google को Oracle के पेटेंट के उल्लंघन से मुक्त कर दिया". ZDNet. Retrieved 2012-05-25.
- ↑ Joe Mullin (May 31, 2012). "Google wins crucial API ruling, Oracle's case decimated". Ars Technica. Retrieved 2012-06-01.
- ↑ Niccolai, James (June 20, 2012). "Oracle agrees to 'zero' damages in Google lawsuit, eyes appeal". Retrieved 2012-06-23.
- ↑
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 पंक्तियों पर आधारित है। यहाँ प्रश्न में कोड है:...
बाहरी संबंध
- Dalvik bytecode – official Android documentation of the instruction set
- Dex Executable format – official Android documentation
- A JIT Compiler for Android's Dalvik VM on YouTube, Google I/O 2010, by Ben Cheng and Bill Buzbee
- Dalvik VM Internals, Google I/O 2008, by Dan Bornstein
- The $800 Million Dollar Question: What’s the Difference Between Trademark and Copyright?