enter link description here जावा कंपाइलर इंटर-क्लास संदर्भों को इतनी तेज़ी से कैसे हल करता है, यदि आपके पास कक्षाओं का एक गुच्छा है जो सभी एक दूसरे को संदर्भित करते हैं और एक-दूसरे के तरीकों का उपयोग करते हैं?कंपाइलर्स + इंटर-क्लास संदर्भ: जेएवीएसी जल्दी से क्या करता है सी ++ कंपाइलर धीरे-धीरे क्या करते हैं?
मुझे पता है कि सी ++ कंपाइलर्स इस संबंध में कैसे काम करते हैं: प्रत्येक .cpp फ़ाइल को अलग से संकलित किया जाता है, और वे वर्ग फ़ील्ड/विधियों को घोषित करने के लिए उन भयानक .h फ़ाइलों का उपयोग करते हैं, ताकि प्रत्येक बार फ़ाइलों का एक ही सेट फिर से विश्लेषण किया जा सके और/या कंपाइलर्स को पूर्व-संकलित शीर्षलेखों का समर्थन करना होता है।
लेकिन जावा ऐसा नहीं करता है और क्लास इंटरफेस/कार्यान्वयन के प्रोग्राम स्रोत में टर्बो पास्कल को अलग करने के तरीके में कोई अलगाव नहीं है।
मैं देख सकता हूं कि यदि आपके पास कक्षा फू है और यह कक्षा बार, बाज़, क्वाक्स को संदर्भित करता है जो सभी अलग barbazquux.jar फ़ाइल में हैं, तो चीजें सीधी होंगी: .jar फ़ाइल पहले ही संकलित हो चुकी है, इसलिए जब Foo.java संकलित हो जाता है तो यह barbazquux.jar में .class फ़ाइलों को देख सकता है।
लेकिन यदि आपके पास चक्रीय वर्ग संदर्भ हैं, और कक्षा फू क्लास बार संदर्भित करता है जो क्लास फू का संदर्भ देता है, तो यह संभवतः बार.जावा को संकलित किए बिना Foo.java को कैसे संकलित करता है और फिर निर्णय लेता है कि इसे Foo.java संकलित करना है और एक पाश में फंस जाओ?
जावा कंपाइलर इंटर-क्लास संदर्भों को संभालने के लिए क्या करता है?
संपादित करें: येर बताते जवाब है कि थोड़ा बहु compilers उल्लेख के साथ another question। ठीक है, तो कई पास हैं। प्रत्येक पास वास्तव में क्या होता है और जावा इतनी जल्दी संकलित करने का प्रबंधन कैसे करता है? क्या इसे प्रत्येक पास प्रत्येक फ़ाइल पर दोबारा पार्स करना पड़ता है, या क्या यह समय बचाने के लिए अमूर्त सिंटैक्स पेड़ को स्टोर करता है, या क्या?
... और इस अवधारणा को क्या कहा जाता है, इसलिए यदि मैं कुछ कंपाइलर पुस्तकों को देखना चुनता हूं तो मैं इसके बारे में अधिक जान सकता हूं? –
डुप्लिकेट प्रश्न की तरह दिखता है जिसका उत्तर दिया गया है। [यहां] देखें (http://stackoverflow.com/questions/3032874/how-does-compiling-circular- निर्भरता- कार्य)। – yair
मुझे लगता है, लेकिन उस प्रश्न में वास्तव में ऐसे उत्तर नहीं हैं जो बहुत अधिक कहते हैं। –