JVM और Java का WORA अन्य उच्च स्तरीय भाषाओं से कैसे भिन्न है?


12

जावा की दुनिया में, हम अक्सर जेवीएम के बारे में बात करते हैं, और जब जावा नया था तो इसमें "राइट वन्स, रन एनीवेयर" की कथित रूप से हत्यारा विशेषता थी।

जिस तरह से लोग बात करते हैं और लिखते हैं, यह उस तरह से अलग लगता है जैसे कि पायथन, उदाहरण के लिए, काम करता है। फिर भी मुझे इस बात की कोई जानकारी नहीं है कि पायथन कोड जो मैंने लिखा है वह किसी अन्य मशीन पर अलग तरह से काम करेगा। (हालांकि मैंने इतना अजगर नहीं लिखा है।)

तो मुझे क्या याद आ रही है? जेवीएम एक पायथन दुभाषिया से कैसे अलग है? क्या कोई रास्ता है कि पायथन में जावा की प्लेटफ़ॉर्म स्वतंत्रता का अभाव है? या यह सिर्फ एक सांस्कृतिक अंतर है?


1
प्राथमिक अंतर जेवीएम विनिर्देश की कठोरता है। यह बस बहुत अच्छी तरह से परिभाषित किया गया है कि यह कैसे होना चाहिए (व्यवहार नहीं करना चाहिए)।

जवाबों:


17

जावा आपको अंतर्निहित ओएस से अलग करने पर बहुत अच्छा काम करता है और आपको अधिकांश प्लेटफार्मों पर वही सटीक उपकरण देता है जो अंतर्निहित ओएस में चीजों पर बात करने के लिए काम करता है।

दूसरी ओर पायथन आपको अंतर्निहित ओएस से अलग करने में किसी काम का उतना अच्छा नहीं करता है, यह प्रक्रिया संचार के बीच हैंडलिंग का एक मानक तरीका नहीं है (sys मॉड्यूल और ओएस मॉड्यूल में एक खिड़कियों और * के बीच अंतर को देखें) उदाहरण के लिए पायथन का निक्स कार्यान्वयन।)

मैंने अजगर में कोड लिखा है जो केवल एक * NIX बॉक्स या विंडोज बॉक्स पर काम करेगा, जिसमें केवल Python उपलब्ध API कॉल का उपयोग किया जाता है, जहाँ Java में कोड लिखना बहुत मुश्किल होगा, जो कि केवल Java API है जो दोनों पर समान काम नहीं करेगा विंडोज बॉक्स या * NIX बॉक्स


1
जावा कोड लिखना बिल्कुल भी मुश्किल नहीं है जो केवल विंडोज पर काम करता है; बस हार्ड-कोड एक विंडोज फाइल पथ जैसे "C: \ MyApp \ data"
kevin cline

@kevincline हार्डकोडेड पथ किसी भी ऑपरेटिंग सिस्टम पर एक बुरा अभ्यास है। लेकिन जावा को आपको ऐसा करने की आवश्यकता नहीं है, क्योंकि यह उपयोगकर्ता-निर्देशिका या वर्तमान प्रोग्राम के इंस्टॉल पथ जैसे सामान्य निर्देशिकाओं को पुनः प्राप्त करने के लिए ओएस-स्वतंत्र तरीके प्रदान करता है।
फिलिप

3

शीर्ष और केवल भाषा रनटाइम से, थोड़ा अंतर होता है। विशेष रूप से JVM को न केवल एक दुभाषिया के रूप में, बल्कि एक रनटाइम कंपाइलर, कोड इंट्रेंस, एक इंस्ट्रूमेंटल वर्चुअलाइजेशन लेयर, जिसे गतिशील हुक लगाया जा सकता है, विभिन्न GC शब्दार्थक और वर्चुअलाइजेशन एर्गोनॉमिक्स का वर्णन करने की क्षमता के लिए डिज़ाइन किया गया है। अजगर एक जेवीएम में चल सकता है? क्या जावा पायथन इंटरप्रेटर में चल सकता है?

जैसा कि आप व्याख्या / संकलन / रन इंटरमीडिएट कोड जानते हैं, अधिकांश व्याख्याकार रनटाइम भाषा / टोकन दुभाषिए, जेवीएम (और अन्य) हैं। उदाहरण के लिए आईबीएम जावा के बाहर दशकों से ऐसा कर रहा है, यह कोई नई बात नहीं है। यहां तक ​​कि VB कुछ समय के लिए मध्यवर्ती कोड में मुझे विश्वास है कि भाग गया?

यह काम ज्यादातर अब निष्क्रिय हो गया है क्योंकि कई व्याख्या की गई भाषाएं केवल अपरिवर्तित हैं।


3

जब जावा नया था, तो WORA के बारे में गर्व करने के लिए कुछ था - विशेष रूप से, कि आप एक मंच पर संकलित कर सकते हैं और अन्य प्लेटफार्मों पर उस (संकलित बायटेकोड) को चला सकते हैं।

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


अपने आप में काम पर्याप्त नहीं है। वास्तव में महत्वपूर्ण बिट यह है कि यह बहुत अच्छी तरह से परिभाषित किया गया है कि यह हर जगह कैसे चलता है, इसे महत्वहीन बनाता है जहां इसे चलाया गया था।
थोरबजर्न रेवन एंडरसन

1

क्या पायथन में एक प्लेटफ़ॉर्म स्वतंत्र GUI है?

वैसे भी, WORA फ़ीचर था - फिर से - सी प्रोग्रामर्स को लुभाने के लिए, जैसा कि C ने अंतर्निहित प्लेटफ़ॉर्म को बारीकी से मॉडल करने के लिए ट्रेंड किया था, और जैसे ही प्लेटफ़ॉर्म अलग थे (शब्द का आकार? एंडियनस?) पूरी तरह से पोर्टेबल सी प्रोग्राम बनाने के लिए बहुत सावधानी और ध्यान देने की आवश्यकता थी।

जावा का वादा था कि यह सब थकाऊ नहीं होना चाहिए, क्योंकि मंच बहुत अच्छी तरह से परिभाषित है और आप जानते हैं कि एक चार्ट 16 बिट आदि है। इसके अलावा जावा में लिखा गया है और यह भी 100% पोर्टेबल है, जिसका अर्थ है कि आपका प्रोग्राम एक ऐसे कंप्यूटर पर चल सकता है जिसे आपने कभी नहीं सुना है और यहां तक ​​कि सही ढंग से नहीं चला है।


6
पायथन के पास कई प्लेटफ़ॉर्म स्वतंत्र GUI विकल्प हैं: docs.python.org/faq/…
Joonas

जावा GUI विभिन्न प्लेटफार्मों पर ठीक से प्रदर्शित नहीं करने के लिए कुख्यात हैं, इसलिए मैं उस पहलू के बारे में बिल्कुल घमंड नहीं करता। हालाँकि, मैं आपके शेष कथन से सहमत हूँ।
क्रोध

-4

सिवाय इसके कि जावा सशक्त रूप से काम नहीं कर रहा है । मैंने जावा सॉफ्टवेयर देखा है जो जावा को मामूली संस्करण संख्या में उच्च संस्करण में अपग्रेड करने के बाद टूट गया है । IMHO, WORA सिर्फ एक मार्केटिंग नौटंकी है।


1
यह वास्तव में सवाल का जवाब नहीं है।
एरिक विल्सन

-1 क्योंकि जावा सभी व्यावहारिक उद्देश्यों के लिए कार्य करता है। यह काम करेगा यदि आप सिस्टम-विशिष्ट हैक्स और स्पष्ट रूप से देशी सामान जैसे जेएनआई से बचते हैं। मेरे पास 50,000+ लाइन एप्लिकेशन हैं जो विंडोज, मैक और लिनक्स पर पूरी तरह से चलते हैं, पहली बार, एक ही संकलित .jar फ़ाइल के साथ कोई परिवर्तन नहीं। यदि आप शुद्ध जावा से चिपके रहते हैं तो यह सब काम करता है।
मिकेरा

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