जावा के लिए जीएनयू कंपाइलर

जावा के लिए जीएनयू संकलक (जीसीजे) जावा (क्रमादेशन भाषा) के लिए एक स्थगित मुक्त सॉफ्टवेयर संकलक है। यह जीएनयू संकलक संग्रह का हिस्सा है। जीसीजे जावा स्रोत कूट को जावा वर्चुअल मशीन (जेवीएम) बाईट कूट या कई सीपीयू संरचना के लिए मशीन कूट में संकलित करता है। यह वर्ग (संचिका स्वरूप) और पूरे JAR (संचिका प्रारूप) को भी संकलित कर सकता है जिसमें मशीन कूट में बाईट कूट होता है।

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

2015 तक, जीसीजे की ओर से कोई नए विकास की घोषणा नहीं की गई थी और उत्पाद रखरखाव मोड में था, जिसमें मुक्त स्रोत जावा टूलचैन का विकास ज्यादातर ओपन जेडीके के अंदर हो रहा था। जीसीजे को 30 सितंबर, 2016 को जीसीसी ट्रंक (सॉफ्टवेयर) से हटा दिया गया था। इसके निष्कासन की घोषणा जीसीसी 7.1 की विमोचन के साथ की गई थी, जिसमें यह सम्मलित नहीं है। जीसीजे जीसीसी 6 का हिस्सा है।

निष्पादन
जावा कूट को मशीन कूट में संकलित करते समय जीसीजे में संकलन कार्य जेवीएम में शुभारंभ किए गए समतुल्य बाईट कूट की तुलना में प्रारंभन समय तेज़ होना चाहिए।

संकलित मूल अंतरफलक (CNI)
संकलित मूल अंतरफलक (CNI), जिसे पहले सिग्नस मूल अंतरफलक नाम दिया गया था, जीसीजे के लिए एक सॉफ्टवेयर प्राधार है जो जावा कूट को साइट पर कॉल करने की अनुमति देता है, और मूल एप्लिकेशन C++ में लिखी गई लाइब्रेरी(हार्डवेयर और संचालन प्रणाली प्लेटफॉर्म के लिए विशिष्ट क्रमादेश) और साइट द्वारा कॉल किया जाता है।

सीएनआई जावा मूल अंतरफलक (जावा मूल अंतरफलक) प्राधार के समान है जो विभिन्न जावा आभासी मशीनों के साथ एक मानक के रूप में आता है।

भाषा के प्रयोग की तुलना
जेएनआई पर सीएनआई के लेखक विभिन्न लाभों के लिए दावा करते हैं:

हम सीएनआई का उपयोग करते हैं क्योंकि हमें लगता है कि यह एक बेहतर समाधान है, विशेष रूप से एक जावा कार्यान्वयन के लिए जो इस विचार पर आधारित है कि जावा सिर्फ एक प्रोग्रामिंग भाषा है जिसे मानक संकलन तकनीकों का उपयोग करके लागू किया जा सकता है। यह देखते हुए, यह विचार किया कि जीसीसी का उपयोग करके लागू की जाने वाली भाषाएं संगत होनी चाहिए।जहां यह समझ में आता है, कि यह इस प्रकार है कि जावा कॉलिंग कन्वेंशन को अन्य भाषाओं के लिए उपयोग किए जाने वाले व्यावहारिक के रूप में समान होना चाहिए, विशेष रूप से C ++, क्योंकि हम जावा के बारे में सोच सकते हैं C ++ का उप-समूचय है। सीएनआई इस विचार पर निर्मित सहायक कार्यों और सम्मेलनों का एक सेट है। C ++ और जावा में * समान * कॉलिंग कन्वेंशन और ऑब्जेक्ट लेआउट है; वे बाइनरी संगत हैं। (यह एक सरलीकरण है, लेकिन काफी करीब है।)

सीएनआई C ++ वर्ग के रूप में प्रदर्शित होने वाली जावा वर्ग पर निर्भर करता है। उदाहरण के लिए, एक जावा वर्ग दिया गया है।

कोई इस प्रकार कक्षा का उपयोग कर सकता है:

यह भी देखें

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