2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
JVM (Java Virtual Machine) जावा मञ्चस्य मूलघटकेषु अन्यतमम् अस्ति यत् जावा कार्यक्रमानां यन्त्रसङ्केते अनुवादं कृत्वा तान् निष्पादयितुं उत्तरदायी अस्ति । अस्य भूमिका एकं वातावरणं प्रदातुं वर्तते येन जावा-कार्यक्रमाः भिन्न-भिन्न-प्रचालन-प्रणालीषु हार्डवेयर-इत्यत्र च चालयितुं शक्नुवन्ति, जावा-महोदयस्य "एकवारं लिखन्तु, कुत्रापि चालयन्तु" इति विशेषतां साक्षात्करोति ।
JVM इत्यस्य आर्किटेक्चर मूलतः मुख्यतया त्रयः भागाः विभक्ताः सन्ति : ClassLoader, Runtime Data Area, Execution Engine च । क्लास् लोडरः क्लास् सञ्चिकाः स्मृतौ लोड् कृत्वा तत्सम्बद्धान् क्लास् ऑब्जेक्ट्स् जनयितुं उत्तरदायी भवति । रनटाइम् डाटा एरिया मेथड् एरिया, हीप्, प्रोग्राम् काउण्टर् तथा वर्चुअल् मशीन् स्टैक् इति विभक्तं भवति, येषां उपयोगः क्रमशः क्लास मेटाडाटा, ऑब्जेक्ट् इन्स्टेंस, थ्रेड् प्रोग्राम काउण्टर्, मेथड् कॉल स्टैक्स् इत्यादीनां सूचनानां संग्रहणार्थं भवति निष्पादनइञ्जिनस्य उत्तरदायित्वं बाइटकोडानां व्याख्यानं निष्पादनं वा संकलनं निष्पादनं च भवति ।
JVM इत्यत्र जावा प्रोग्राम् चालयितुं प्रक्रिया मोटेन त्रयः चरणाः विभक्ताः सन्ति : संकलनम्, लोडिंग्, निष्पादनम् च । प्रथमं जावा स्रोतसङ्केतः जावा संकलकस्य (javac) माध्यमेन बाइटकोड् सञ्चिकायां (.class file) संकलितः भवति । ततः, JVM इत्यस्य क्लास् लोडरः बाइटकोड् सञ्चिकां स्मृतौ लोड् कृत्वा तत्सम्बद्धं क्लास् ऑब्जेक्ट् जनयति । अन्ते JVM इत्यस्य निष्पादन-इञ्जिन् जावा-प्रोग्रामस्य चालनं कार्यान्वितुं बाइटकोड्-इत्यस्य व्याख्यां कृत्वा निष्पादयति वा संकलयति वा निष्पादयति च ।
जावा बाइटकोड् एकः मध्यवर्ती कोडः अस्ति, यः जावा स्रोतसङ्केतस्य संकलनानन्तरं उत्पद्यमानः द्विचक्रीयसञ्चिका अस्ति । जावा बाइटकोड् इत्यस्य विशिष्टमञ्चात् स्वतन्त्रत्वस्य लक्षणं भवति तथा च JVM इत्यत्र व्याख्यां कृत्वा निष्पादितं वा संकलितं निष्पादनं वा कर्तुं शक्यते । जावा बाइटकोड् इत्यस्य एकं महत्त्वपूर्णं कार्यं जावा इत्यस्य "एकवारं लिखतु, कुत्रापि चालयन्तु" इति विशेषतां साक्षात्कर्तुं भवति, येन जावा कार्यक्रमाः भिन्न-भिन्न-मञ्चेषु चालयितुं शक्नुवन्ति ।
JVM इत्यस्य कचरासङ्ग्रहः स्वयमेव स्मृतिप्रबन्धनस्य महत्त्वपूर्णं कार्यम् अस्ति । अप्रयुक्तानि वस्तूनि ज्ञात्वा मुक्तं कृत्वा स्मृतिस्थानं पुनः प्राप्नोति, तस्मात् स्मृति-प्रवाहः, स्मृति-अतिप्रवाहः इत्यादयः समस्याः परिहृताः भवन्ति सामान्यकचरासंग्रहणस्य एल्गोरिदम् इत्यत्र मार्क-स्वीप् एल्गोरिदम्, प्रतिलिपि एल्गोरिदम्, मार्क-कॉम्पैक्ट् एल्गोरिदम् इत्यादयः सन्ति ।
JVM इत्यस्य क्लास् लोडिंग् मेकेनिज्म् क्लास् सञ्चिकाः स्मृतौ लोड् करणं तदनुरूपं क्लास् ऑब्जेक्ट्स् जनयितुं च प्रक्रियां निर्दिशति । वर्गभारतन्त्रं मुख्यतया लोडिंग्, लिङ्किंग्, आरम्भीकरणं च इति त्रयः चरणाः विभक्ताः सन्ति । लोडिंग् चरणः वर्गसञ्चिकानां अन्वेषणं लोडिंग् च कर्तुं उत्तरदायी भवति, लिङ्किंग् चरणः वर्गसञ्चिकानां सत्यापनस्य, सज्जीकरणस्य, विश्लेषणस्य च उत्तरदायी भवति, आरम्भीकरणचरणः च वर्गस्य स्थिरचरानाम्, स्थिरसङ्केतखण्डानां च आरम्भस्य उत्तरदायी भवति
JIT (Just-In-Time) कम्पाइलरः JVM इत्यस्य संकलनविधिः अस्ति यत् एतत् प्रोग्रामस्य निष्पादनवेगं सुधारयितुम् वास्तविकसमये स्थानीययन्त्रसङ्केते बाइटकोड् संकलयति । JIT कम्पैलरस्य JVM इत्यस्य च सम्बन्धः अस्ति यत् JIT कम्पैलरः JVM इत्यस्मिन् महत्त्वपूर्णः घटकः अस्ति यत् प्रोग्रामस्य निष्पादनदक्षतां अनुकूलितुं स्थानीययन्त्रसङ्केते हॉट् कोड् (कोडः यः बहुधा निष्पादितः भवति) संकलनस्य उत्तरदायी भवति
JVM प्रदर्शन-ट्यूनिङ्ग्-करणाय स्मृति-प्रबन्धनम्, कचरा-सङ्ग्रहः, थ्रेड्-समवर्तीता, कोड-अनुकूलनम् इत्यादयः अनेकेषु पक्षेषु ध्यानस्य आवश्यकता भवति । ट्यूनिङ्ग-प्रक्रियायाः समये, ढेर-आकारं समायोजयित्वा, कचरा-सङ्ग्रह-मापदण्डान् समायोजयित्वा, थ्रेड्-पूल्-इत्यस्य उपयोगेन इत्यादिभिः कार्यक्रमस्य कार्यक्षमतायाः उन्नतिः कर्तुं शक्यते
JVM इत्यस्य थ्रेडिंग् मॉडल् जावा थ्रेड् तथा ऑपरेटिंग् सिस्टम् थ्रेड् इत्येतयोः मध्ये मैपिंग सम्बन्धस्य माध्यमेन कार्यान्वितं भवति । जावा थ्रेड् JVM वर्चुअल् मशीन् स्टैक्, स्थानीय मेथड् स्टैक्, प्रोग्राम् काउण्टर् इत्यादिभिः आँकडासंरचनैः निर्मितः भवति । जावा थ्रेड् तथा ऑपरेटिंग् सिस्टम् थ्रेड् इत्येतयोः मध्ये मैपिंग सम्बन्धः एक-एकः अथवा बहु-एक-सम्बन्धः भवति ।
JVM कृते सामान्यानि अनुकूलन-तकनीकाः साधनानि च सन्ति यथा कोड-अनुकूलनम्, कचरा-संग्रहण-ट्यूनिङ्ग्, समवर्ती-प्रोग्रामिंग्, स्मृति-विश्लेषण-उपकरणम् इत्यादयः । प्रोग्रामस्य निष्पादनदक्षतां अनुकूलितुं कम्पाइलर अनुकूलनं, JIT कम्पैलर, थ्रेड् पूल इत्यादीनां उपयोगः कर्तुं शक्यते ।
JVM stack overflow तथा heap overflow इति द्वयोः स्मृति-अतिप्रवाहस्य स्थितिः अस्ति । स्टैक् ओवरफ्लो इत्यस्य अर्थः अस्ति यत् JVM स्टैक् स्पेस अपर्याप्तः अस्ति तथा च नूतनानि स्टैक् फ्रेम्स् आवंटयितुं न शक्नोति, यस्य परिणामः स्टैक् ओवरफ्लो भवति । Heap overflow इत्यस्य अर्थः अस्ति यत् JVM heap space अपर्याप्तं भवति तथा च नूतनानि वस्तूनि आवंटयितुं न शक्यन्ते, यस्य परिणामः heap overflow भवति । स्टैक् अथवा हीप् इत्यस्य आकारं वर्धयित्वा, रिकर्सिव् कॉल् इत्यस्य अनुकूलनं कृत्वा इत्यादिभिः स्टैक् ओवरफ्लो, हीप् ओवरफ्लो च निवारयितुं शक्यते ।
JVM इत्यस्य स्मृतिप्रतिरूपं जावाप्रोग्रामेषु स्मृतिप्रवेशनियमान् निर्दिशति । जावा मेमोरी मॉडल् (JMM) जावा थ्रेड् कृते साझास्मृतिं प्राप्तुं परिवर्तनं च कर्तुं नियमाः निर्धारयति, बहु-थ्रेड् प्रोग्राम् इत्यस्य दृश्यता, क्रमबद्धता, परमाणुता च सुनिश्चितं करोति
JVM त्रुटिनिवारणसाधनानाम् अन्तर्गतं jdb (जावा डिबगर्), jstack (थ्रेड् स्टैक सूचना), jmap (स्मृति मैपिंग सूचना), jstat (कचरासंग्रहणस्य आँकडा) इत्यादयः सन्ति । जावा-प्रोग्राम्-सम्बद्धानां समस्यानां स्थानं ज्ञातुं, समाधानार्थं च एतानि साधनानि उपयोक्तुं शक्नुवन्ति ।
जावा सुरक्षाप्रबन्धकः JVM इत्यस्य सुरक्षातन्त्रम् अस्ति यत् एतत् सुरक्षानीतिसञ्चिकाः, अनुमतिप्रबन्धनम् इत्यादीनि प्रदातुं जावा कार्यक्रमानां सुरक्षाप्रवेशं नियन्त्रयति । जावा सुरक्षाप्रबन्धकः कार्यक्रमस्य अभिगमनअधिकारं सञ्चिकासु, संजालेषु, प्रणालीसंसाधनेषु इत्यादिषु सीमितं कर्तुं शक्नोति, कार्यक्रमस्य सुरक्षां च सुधारयितुं शक्नोति ।
JVM इत्यस्य मूल-अन्तरफलकं (JNI) जावा-इत्यस्य अन्येषां प्रोग्रामिंग-भाषाणां च मध्ये सेतुः अस्ति यत् एतत् मानक-अन्तरफलकानां समुच्चयं प्रदाति येन जावा-प्रोग्रामाः स्थानीयभाषासु लिखितानि कार्यपुस्तकालयानि आह्वयितुं शक्नुवन्ति । JNI जावादेशीयविधिं परिभाषयित्वा जावा अन्येषां प्रोग्रामिंगभाषाणां मध्ये अन्तरक्रियां सक्षमं करोति ।
JVM प्रदर्शननिरीक्षणसाधनं प्रौद्योगिकी च JMX (Java Management Extensions), VisualVM, Java Mission Control इत्यादयः सन्ति । एते साधनानि कार्यक्रमस्य कार्यप्रदर्शनसूचकाः, स्मृतिप्रयोगः, कचरासंग्रहणम् इत्यादीनां वास्तविकसमये निरीक्षणं कर्तुं शक्नुवन्ति येन कार्यक्रमस्य कार्यक्षमतायाः अनुकूलनार्थं सहायता भवति
इनलाइन अनुकूलनं अनुकूलनप्रौद्योगिकीं निर्दिशति यत् संकलनप्रक्रियायाः समये प्रत्यक्षतया विधिकॉलस्य स्थाने विधिशरीराणि स्थापयति । JVM मेथड् कॉल् इत्यस्य आवृत्तिः सन्दर्भः इत्यादीनां सूचनानां विश्लेषणं कृत्वा इनलाइन् अनुकूलनं कर्तव्यं वा इति निर्धारयति । इनलाइन् अनुकूलनं कार्यक्रमस्य निष्पादनदक्षतां सुधारयितुम् अर्हति तथा च विधि-आह्वानस्य व्ययस्य न्यूनीकरणं कर्तुं शक्नोति ।
JVM वर्गसञ्चिकानां लोड् कर्तुं बहुविधवर्गलोडरस्य उपयोगं कर्तुं शक्नोति, तथा च प्रत्येकं वर्गलोडरः विशिष्टवर्गसञ्चिकानां लोडीकरणस्य उत्तरदायी भवति । बहुविधवर्गलोडराः अधिकं लचीलं वर्गभारतन्त्रं प्रदातुं तथा जटिलअनुप्रयोगपरिदृश्येषु वर्गलोडिंगं पृथक्करणं च उत्तमं समर्थनं कर्तुं डिजाइनं कृतम् अस्ति
JVM इत्यस्य बाइटकोड् निष्पादनइञ्जिन् तस्य मुख्यविधिरूपेण व्याख्याकारानाम्, जस्ट-इन्-टाइम-कम्पाइलर्-इत्यस्य च उपयोगं करोति । व्याख्याकारः एकैकं बाइटकोड् व्याख्यायते निष्पादयति च, जस्ट्-इन्-टाइम् कम्पैलरः च हॉट् कोड् स्थानीययन्त्रसङ्केते संकलयित्वा निष्पादयति । व्याख्याकाराः मन्दतरं कार्यं कुर्वन्ति परन्तु तेषां पोर्टेबिलिटी अधिका भवति, यदा तु जस्ट्-इन्-टाइम् संकलकाः द्रुततरं कार्यं कुर्वन्ति परन्तु तेषां संकलनस्य अधिकभारः भवति ।
JVM इत्यस्य सुरक्षा सुरक्षाप्रबन्धकः, वर्गलोडरः, अभिगमनियन्त्रणम् इत्यादिभिः तन्त्रैः सुनिश्चितं भवति । सुरक्षाप्रबन्धकः जावा कार्यक्रमस्य प्रणालीसंसाधनानाम् अभिगमनं नियन्त्रयति, वर्गलोडरः वर्गपृथक्करणं सुरक्षितप्रवेशं च कार्यान्वयति, अभिगमनियन्त्रणतन्त्रं च संवेदनशीलसूचनासु कार्यक्रमस्य पठनलेखनक्रियाः सीमितं करोति, तस्मात् JVM इत्यस्य सुरक्षासुधारः भवति