कचरा संग्राहक को छोड़कर, जावा वास्तविक समय की प्रोग्रामिंग भाषा को और क्या बनाता है


28

कचरा संग्राहक को छोड़कर, जावा में कुछ अन्य विशेषताएं क्या हैं जो इसे वास्तविक समय प्रोग्रामिंग के लिए अनुपयुक्त बनाती हैं? नेट पर, जब भी जावा बनाम सी ++ पर वास्तविक समय प्रोग्रामिंग के संबंध में चर्चा की जाती है, तो यह हमेशा कचरा कलेक्टर होता है जिसका उल्लेख किया गया है। क्या कुछ और है?


4
यहां तक ​​कि कचरा संग्रह भी एक मुद्दा नहीं है - कई कठिन वास्तविक समय कचरा संग्रहकर्ता उपलब्ध हैं। जो लोग वास्तविक समय के लिए शो स्टॉपर के रूप में जीसी का उल्लेख करते हैं वे बस अक्षम हैं।
एसके-तर्क

2
@ एसके-तर्क एस / अक्षम / बिना सूचना / जी
स्कॉट व्हिटलॉक

@ScottWhitlock, सहमत हैं, उनमें से ज्यादातर हैं। लेकिन कुछ (सबसे मुखर) ठीक से सूचित होने के बाद भी जोर देते रहते हैं। मैं इस मानवशास्त्रीय घटना के लिए किसी भी तर्कसंगत स्पष्टीकरण से अवगत नहीं हूं।
SK- तर्क

जवाबों:


36

दो अतिरिक्त आइटम हैं जिन्हें मैं हाथ से याद रख सकता हूं:

  1. JIT संकलन
  2. थ्रेडिंग कार्यान्वयन

वास्तविक समय की अवधि में, प्रदर्शन की भविष्यवाणी संभवतः सबसे महत्वपूर्ण कारक है; यही कारण है कि एक अप्रत्याशित जीसी चक्र वास्तविक समय के लिए जावा को अनुपयुक्त बनाता है।

JIT बेहतर प्रदर्शन प्रदान करता है, लेकिन कार्यक्रम चलने के बाद कुछ बिंदु पर किक करता है, कुछ संसाधन लेता है, और सिस्टम की निष्पादन गति को बदलता है। यह बाद के चरण में भी हो सकता है, अगर वीएम का मानना ​​है कि यह उस समय "बेहतर" काम कर सकता है।

जहाँ तक सूत्रण: मैं इस बिंदु पर बहुत याद नहीं करता अगर यह भाषा डिजाइन का हिस्सा है, या सिर्फ एक बहुत ही सामान्य कार्यान्वयन है, लेकिन जावा आमतौर पर थ्रेड निष्पादन को ठीक करने के लिए कोई उपकरण प्रदान नहीं करता है; उदाहरण के लिए, जबकि थ्रेड्स के लिए निर्दिष्ट 10 "प्राथमिकताएं" हैं, कोई आवश्यकता नहीं है कि वीएम वास्तव में इन प्राथमिकताओं पर विचार करता है। थ्रेड्स को रोकने और स्विच करने के लिए ऑपरेटर्स को भी या तो सिस्टम द्वारा परिभाषित नहीं किया जाता है, या सख्ती से पालन नहीं किया जाता है।

JSR 1 के कई कार्यान्वयन हैं : जावा के लिए वास्तविक समय विशिष्टता - एक युक्ति जिसे 1998 में अनुमोदित किया गया है। यह कल्पना यथासंभव उन मुद्दों को संबोधित करती है जो वास्तविक समय के लिए मानक जावा को अनुपयुक्त बनाता है।

शायद 5 साल पहले, सन (अब ओरेकल) के पास आरटीएसजे वीएम था (जिसका नाम एएफएआईके कभी नहीं था); आईबीएम के पास वेबस्फीयर रियल टाइम था; और जमैकावीएम एक स्वतंत्र (?), मंच-स्वतंत्र समाधान था। आज उन लोगों को देखने से बहुत कुछ नहीं होता।


एक और मुद्दा, तुलनात्मक रूप से छोटा, यह है कि एक वर्ग केवल तभी लोड किया जाता है जब इसका उपयोग होने वाला हो।
टी-बुल

5
जावा विनिर्देश में कुछ भी नहीं है जो एओटी या शुद्ध व्याख्या के बजाय जेआईटी को लागू करेगा। शुद्ध हरे धागे पूरी तरह से अनुमानित हैं, इसलिए वे एक वास्तविक समय बाधा भी नहीं बन सकते हैं।
SK-तर्क

websphere वास्तविक समय कम से कम अभी भी समर्थित प्रतीत होता है (जावा 7.0 समर्थन का दावा करता है और आप इसे खरीदने के लिए एक पृष्ठ पर पहुंच सकते हैं)
jk।

@ एसके-तर्क - सही, अच्छी बात!
अवनि

33

ऑपरेटिंग सिस्टम

जब तक जावा यूनिक्स या विंडोज या किसी अन्य "नियमित" ओएस के शीर्ष पर चलता है, रियलटाइम की गारंटी नहीं है।

रीयल टाइम एप्लिकेशन चलाने के लिए एक वास्तविक समय ओएस अनिवार्य है।


13
@ जियोर्जियो: कठिन realtime गारंटी के लिए? हाँ।
जोकिम सॉर

5
इसके अतिरिक्त, उपलब्ध ऑपरेटिंग सिस्टम हैं जो शुरू से ही रियल टाइम के लिए डिज़ाइन किए गए हैं, जैसे फ्रीट्रॉस।
मदिव

4
हालांकि यह सामान्य रूप से कठिन वास्तविक समय के लिए एक बहुत ही महत्वपूर्ण बिंदु है, यह मामूली रूप से जावा विशिष्ट प्रतीत नहीं होता है। क्या मैं कुछ भूल रहा हूँ?

3
@delnan बिंदु है, भले ही आप जावा (VM) का वास्तविक समय का उपयोग करते हों, यदि OS आपको वास्तविक समय की गारंटी नहीं दे सकता है तो यह बहुत मदद नहीं करता है।
शिंगल

3
@delnan - प्रश्न के झूठे आधार हैं, यह सुझाव देता है कि C ++ एक वास्तविक समय की प्रोग्रामिंग भाषा है।
मौविसील

7

तकनीकी रूप से वास्तविक समय जावा (एसके-तर्क की टिप्पणियों के अनुसार) संभव है। हालाँकि यह कई गैर-तकनीकी कारणों से सामान्य नहीं है:

पुराने मानक

इसके लिए एक संदर्भ खोजने में परेशानी हो रही है लेकिन मुझे यकीन है कि मैंने सुरक्षा मानकों, या सुरक्षा मानक अनुरूपता सलाह को देखा है, जावा पर कंबल प्रतिबंध लगा दिया है। सही या गलत तरीके से यदि आपको किसी ऐसी चीज के अनुरूप होना है जो कहती है कि जावा वर्बोटेन है तो जावा वर्बोटेन है।

पुराने सुरक्षा इंजीनियर

यहां तक ​​कि अगर मानकों को आपको जावा पर प्रतिबंध लगाने के लिए काम करने की आवश्यकता है, तो जावा के अनुभव के बिना सुरक्षा / गुणवत्ता लेखा परीक्षकों के साथ काम करने का बहुत मतलब होगा कि आप कम से कम प्रतिरोध के मार्ग का अनुसरण नहीं कर रहे हैं। कुछ भी जो ऑडिटर के लिए सामान्य से बाहर है, संभवतः बहुत सारे प्रश्नों को आकर्षित करेगा जो बदले में आपके विकल्पों को सही ठहराने के लिए बहुत सारे काम करते हैं।

समुदाय

यानी बहुत अधिक मार्ग निर्भरता है, वर्तमान वास्तविक समय के अधिकांश विशेषज्ञ C ++, C या ADA को जानते हैं, इसलिए नए कार्य करना एक स्वाभाविक पसंद है।

(ध्यान दें: मैंने कुछ हद तक उपरोक्त में वास्तविक समय और सुरक्षा को जब्त कर लिया है, जो एक अन्य मुद्दे की तरह है, यहां तक ​​कि सुरक्षा मानक भी अक्सर दो को भ्रमित करते हैं)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.