Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Android पर चलने वाले Java प्रोग्राम मानक Java API और वर्चुअल मशीन का उपयोग क्यों नहीं करते?


मानक Java API और वर्चुअल मशीन मुख्य रूप से डेस्कटॉप और सर्वर सिस्टम के लिए डिज़ाइन किए गए हैं। वे मोबाइल उपकरणों के साथ उतने संगत नहीं हैं। इस कारण से, Google ने मोबाइल उपकरणों के लिए एक अलग API और वर्चुअल मशीन बनाई। इसे Dalvik Virtual Machine (DVM) के नाम से जाना जाता है।

Dalvik वर्चुअल मशीन Android रनटाइम का एक प्रमुख घटक है और JVM (Java Virtual Machine) का एक हिस्सा है जिसे विशेष रूप से Android के लिए विकसित किया गया है। Dalvik वर्चुअल मशीन Java की उन विशेषताओं का उपयोग करती है जो काफी महत्वपूर्ण हैं जैसे मेमोरी मैनेजमेंट, मल्टी-थ्रेडिंग आदि। Java में प्रोग्राम पहले JVM बाइटकोड में परिवर्तित होते हैं और फिर DVM बाइटकोड में इंटरप्रेट किए जाते हैं।

Java Virtual Machine (JVM)

Java Virtual Machine एक एप्लिकेशन है जो Java बाइटकोड को निष्पादित करने के लिए रनटाइम वातावरण प्रदान करती है। यह बाइटकोड को मशीन कोड में परिवर्तित करती है। JVM कई ऑपरेशन कर सकती है जैसे कोड लोड करना, कोड वेरिफाई करना, कोड निष्पादित करना, रनटाइम वातावरण प्रदान करना आदि।

Android पर चलने वाले Java प्रोग्राम मानक Java API और वर्चुअल मशीन का उपयोग क्यों नहीं करते?

Dalvik Virtual Machine (DVM)

Dalvik Virtual Machine, Java Virtual Machine का एक संस्करण है जो कम शक्ति वाले हैंडहेल्ड उपकरणों यानी मोबाइल उपकरणों के लिए अनुकूलित है। DVM मोबाइल सिस्टम को बैटरी लाइफ, मेमोरी और सामान्य प्रदर्शन के लिए अनुकूलित करता है।

Android के लिए अभिप्रेत प्रोग्राम पहले Java में लिखे जाते हैं और फिर JVM के लिए बाइटकोड में कंपाइल किए जाते हैं। उसके बाद, इस बाइटकोड को Dalvik बाइटकोड में अनुवादित किया जाता है और .dex और .odex फाइलों में स्टोर किया जाता है। ये क्रमशः Dalvik एक्जीक्यूटेबल और ऑप्टिमाइज़्ड Dalvik एक्जीक्यूटेबल फाइलें हैं।

Android पर चलने वाले Java प्रोग्राम मानक Java API और वर्चुअल मशीन का उपयोग क्यों नहीं करते?

JVM vs DVM - विस्तृत तुलना

विशेषताJVM (Standard)DVM (Dalvik)
लक्ष्य प्लेटफॉर्मडेस्कटॉप, सर्वर, एम्बेडेडमोबाइल (Android)
बाइटकोड फॉर्मेट.class फाइल्स (स्टैक-आधारित).dex फाइल्स (रजिस्टर-आधारित)
रजिस्टर vs स्टैकस्टैक-आधारित आर्किटेक्चररजिस्टर-आधारित आर्किटेक्चर
मेमोरी फुटप्रिंटबड़ाछोटा, अनुकूलित
बैटरी ऑप्टिमाइजेशननहींहां (मोबाइल के लिए महत्वपूर्ण)
कंपाइलेशनJIT (रनटाइम)AOT (इंस्टॉल टाइम) + JIT
प्रोसेस आइसोलेशनप्रत्येक ऐप अलग JVM (भारी)प्रत्येक ऐप अलग DVM प्रोसेस (हल्का)
गार्बेज कलेक्शनजनरेशनल, एडवांस्डसरल, कॉम्पैक्टिंग

बाइटकोड रूपांतरण प्रक्रिया

Java Source (.java)
       │
       ▼ javac
Java Bytecode (.class) ──► dx tool ──► Dalvik Bytecode (.dex)
       │                              │
       │                              ▼
       │                         .odex (Optimized)
       │                              │
       ▼                              ▼
   Standard JVM                  DVM/ART

Android Runtime Evolution

ART (Android Runtime) - DVM का उत्तराधिकारी

  • AOT (Ahead-of-Time) कंपाइलेशन: ऐप इंस्टॉलेशन पर .dex → मशीन कोड
  • बेहतर प्रदर्शन: रनटाइम पर इंटरप्रेटेशन कम
  • बेहतर GC: जनरेशनल, कॉम्पैक्टिंग, कम पॉज
  • डीबगिंग सपोर्ट: बेहतर प्रोफाइलिंग, सैंपलिंग

Android के लिए Java कोड लिखना

// मानक Java जैसा दिखता है लेकिन Android API उपयोग करता है
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Android-विशिष्ट API: Context, View, Activity, Intent, आदि
    }
}

निष्कर्ष: Android मानक JVM के बजाय DVM/ART का उपयोग करता है क्योंकि मोबाइल उपकरणों में सीमित मेमोरी, बैटरी, CPU होती है। DVM/ART रजिस्टर-आधारित बाइटकोड, AOT कंपाइलेशन और मेमोरी ऑप्टिमाइजेशन के माध्यम से इन बाधाओं के लिए अनुकूलित है। डेवलपर्स Java/Kotlin में लिखते हैं, लेकिन रनटाइम Android-विशिष्ट है।

  1. Android विजिबिलिटी लिसनर्स में मास्टरी: व्यू विजिबिलिटी ट्रैक करने का तरीका और कारण Android विजिबिलिटी लिसनर्स में मास्टरी: व्यू विजिबिलिटी ट्रैक करने का तरीका और कारण

    Android UI व्यूज़ से बना होता है, और एक सामान्य ऐप्लिकेशन में आमतौर पर कई व्यूज़ होते हैं। यह जानने के लिए कि यूज़र वर्तमान में किस व्यू को देख रहा है, आपको विजिबिलिटी लिसनर्स इंस्टॉल करने होंगे।व्यू के विजिबिलिटी स्टेटस की पहचान करने के लिए आपके पास मौजूद विभिन्न विकल्पों के बारे में जानने के लिए आ

  1. Android Camera2 API मास्टर करें: फोटो और वीडियो कैप्चर करने के लिए चरण-दर-चरण मार्गदर्शिका Android Camera2 API मास्टर करें: फोटो और वीडियो कैप्चर करने के लिए चरण-दर-चरण मार्गदर्शिका

    हम सभी अपने फोन पर कैमरे का उपयोग करते हैं और हम इसका बहुत उपयोग करते हैं। यहां तक कि कुछ एप्लिकेशन भी हैं जिन्होंने कैमरे को एक सुविधा के रूप में एकीकृत किया है। एक छोर पर, कैमरे के साथ इंटरैक्ट करने का एक मानक तरीका है। दूसरे छोर पर, कैमरे के साथ अपनी बातचीत को अनुकूलित करने का एक तरीका है। यह अंत

  1. जावा एप्लिकेशन में  Could Not Create the Java Virtual Machine  त्रुटि को हल करें जावा एप्लिकेशन में 'Could Not Create the Java Virtual Machine' त्रुटि को हल करें

    जावा गेम और एप्लिकेशन और सर्वर-साइड प्रोग्राम बनाने के लिए सबसे अच्छे विकास उपकरणों में से एक है। जावा में लिखे गए गेम या ऐप्स को चलाने के लिए जावा वर्चुअल मशीन वातावरण की आवश्यकता होती है। जावा के साथ विकसित गेम या एप्लिकेशन अप्रत्याशित रूप से क्रैश हो सकते हैं या विभिन्न कारणों से खुलने में विफल ह

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
Android वर्जनरनटाइमविवरण
Android 1.0 - 4.4 (KitKat)Dalvik (DVM)JIT कंपाइलेशन, इंटरप्रेटर
Android 4.4 (KitKat)ART (विकल्प)AOT कंपाइलेशन पेश किया गया
Android 5.0 (Lollipop) - 6.0ARTडिफ़ॉल्ट रनटाइम, AOT कंपाइलेशन
Android 7.0 (Nougat)+ARTJIT + AOT हाइब्रिड, प्रोफाइल-गाइडेड
Android 10+ARTऔर अनुकूलन, मॉड्यूलर