चूंकि एंड्रॉइड एप्लिकेशन एक जेवीएम (डाल्विक वीएम) पर चलते हैं जो मूल रूप से एक वर्चुअल प्रोसेसर है, और प्रत्येक आभासी निर्देश को अंतर्निहित चिपसेट के मूल निर्देश के साथ मैप करना पड़ता है, क्या इस मैपिंग के परिणामस्वरूप इस मैपिंग के ओवरहेड के कारण अधिक बिजली की खपत होती है?
इस प्रश्न को जावा में बढ़ाया जा सकता है और इसे "जहाँ अनुप्रयोग अधिक शक्ति का उपयोग करते हैं?" क्या अन्य प्लेटफार्मों / फोन की तुलना में एंड्रॉइड फोन में ऐसी भयावह बैटरी रहती है?
संपादित करें : उत्तर के आधार पर मैंने कुछ बिंदुओं को स्पष्ट किया है क्योंकि मैंने गलत तरीके से JVM और Dalvik के बारे में बात की थी। इस बिट में मैं जावा के बारे में केवल यह पूछने के लिए बात कर रहा हूं कि क्या यह अधिक शक्ति का उपयोग करता है और यदि हां, तो क्या यह वैचारिक रूप से एंड्रॉइड पर भी लागू होता है और क्या इसका परिणाम बैटरी जीवन में कमी है।
संदर्भ : विकिपीडिया से उद्धृत:
- जावा बाइटकोड सी कोड के लिए विधानसभा भाषा के अनुरूप है।
- एक कंपाइलर के दृष्टिकोण से, जावा वर्चुअल मशीन एक निर्देश सेट, जावा बाइटकोड के साथ सिर्फ एक और प्रोसेसर है, जिसके लिए कोड उत्पन्न किया जा सकता है।
- जेवीएम में एक स्टैक आर्किटेक्चर है। Dalvik एक प्रक्रिया वर्चुअल मशीन है जो JVM के समान वर्चुअलाइजेशन नहीं है और इसमें एक रजिस्टर आर्किटेक्चर है।
चूँकि जावा प्रोग्रामिंग लैंग्वेज को बायटेकोड (असेंबली-लाइक) से संकलित किया जाता है और यह वर्चुअल प्रोसेसर पर चलता है, यह सही सॉफ्टवेयर कोड पोर्टेबिलिटी प्रदान करता है। इसके अलावा, चूंकि लिनक्स के लिए एक जेवीएम है और लिनक्स को खुले हार्डवेयर पर पोर्ट किया गया है, इसलिए संयोजन पूरे स्टैक पर सही एप्लिकेशन पोर्टेबिलिटी प्रदान कर सकता है।
पावर : यह प्रश्न अनिवार्य रूप से इस पर उबलता है - आपके सॉफ़्टवेयर कोड या एप्लिकेशन की कार्यक्षमता के समान सेट के लिए, आपके CPU घड़ी चक्रों के कितने प्रतिशत को रन टाइम वातावरण के लिए जिम्मेदार ठहराया जाता है। यह आधुनिक जेवीएम के जस्ट-इन-टाइम संकलन वातावरण के साथ है जहां अगर बायोटकोड को अंतर्निहित चिपसेट के मूल निर्देश के लिए संकलित किया जाता है, तो रन-टाइम केवल जेट संकलन के दौरान सक्रिय होना चाहिए। तो सीपीयू घड़ी चक्रों का उपयोग रन-टाइम वातावरण में करने के लिए कितना किया जाता है जिसके परिणामस्वरूप बिजली की खपत ओवरहेड होने की उम्मीद है। मैं केवल बिजली की खपत के पहलू में दिलचस्पी रखता हूं, न कि सांख्यिकीय रूप से टाइप की गई और निर्मित भाषाओं की तुलना में सापेक्ष प्रदर्शन और जावा के फायदों को समझता हूं। उप-प्रश्न जो संबंधित हो सकते हैं:
- जावा रन टाइम कार्यक्षमता के लिए libc का उपयोग करता है?
- क्या इनमें से कोई भी बिजली की खपत से संबंधित बिंदु Dalvik VM और Android में अनुवाद करते हैं?
- स्क्रीन और वायरलेस चिपसेट के बारे में बात किए बिना एंड्रॉइड की खराब बैटरी खपत को सामान्य करने के बजाय - आइए बात करते हैं कि कैसे iPhone 5 में 1440 एमएएच की बैटरी है जो आधुनिक नेक्सस फोन की तुलना में छोटी है। विचार की यह पूरी ट्रेन (जावा, वर्चुअल प्रोसेसर, इंस्ट्रक्शन मैपिंग, एंड्रॉइड) उत्पन्न हुई क्योंकि एक iphone-वफादार मित्र ने दावा किया कि यह उसके iphone के लिए मेरे (भयानक) सांठगांठ से बेहतर बैटरी जीवन का संभावित कारण हो सकता है।
किसी भी मामले में, नीचे दिए गए उत्तर के लिए धन्यवाद।