क्या JVM की आवश्यकता के बिना जावा से स्टैंडअलोन (या लाइब्रेरी) मशीन कोड को संकलित करने का कोई तरीका है?
क्या JVM की आवश्यकता के बिना जावा से स्टैंडअलोन (या लाइब्रेरी) मशीन कोड को संकलित करने का कोई तरीका है?
जवाबों:
जीसीजे नामक एक उपकरण हुआ करता था जो जीसीसी का हिस्सा था, लेकिन इसे हटा दिया गया । अब, जीसीसी साइट के सभी लिंक अपने गैर-जीसीजे समकक्षों को फिर से निर्देशित करते हैं।
नायब: सभी टिप्पणियों ने मेरे मूल उत्तर का हवाला देते हुए कहा कि आप जावा को मूल कोड में जीसीजे के साथ संकलित कर सकते हैं।
हाँ!
Oracle, GraalVm पर काम कर रहा है, जो मूल छवियों का समर्थन करता है। यहां देखें: https://www.graalvm.org/
मूल छवि : GraalVM SDK के साथ मूल छवि सुविधा जावा अनुप्रयोगों के स्टार्टअप समय को बेहतर बनाने में मदद करती है और उन्हें एक छोटा पदचिह्न प्रदान करती है। प्रभावी रूप से, यह एक विशिष्ट ओएस / प्लेटफॉर्म के लिए देशी कोड के लिए जेवीएम (किसी भी मंच पर) पर चलने वाले बायटेकोड को परिवर्तित कर रहा है - जो कि प्रदर्शन से आता है। यह अच्छा प्रदर्शन प्राप्त करने के लिए आक्रामक फॉर-टाइम (एओटी) अनुकूलन का उपयोग कर रहा है।
और देखें:
सारांश
https://www.graalvm.org/docs/getting-started/#native-images
डेमो: तेजी से स्टार्टअप के लिए देशी चित्र
https://www.graalvm.org/docs/examples/native-list-dir/
विस्तृत: 'आगे के समय का संकलन'
https://www.graalvm.org/docs/reference-manual/aot-compilation/
Windowsकेवल खिलौना कार्यक्रमों पर काम होता है, लेकिन कुछ और अधिक उन्नत और / या जब GUIतक अभी तक काफी उपयोग नहीं होता है। Twitterशायद Linuxबिना किसी का उपयोग करता है, GUIलेकिन वे शायद व्यावसायिक संस्करण का उपयोग करते हैं, जबकि मैंने केवल एक समुदाय की कोशिश की। यह कुछ उपयोग के मामलों के लिए काम कर सकता है लेकिन जावा Windowsडेस्कटॉप एप्लिकेशन उनमें से एक नहीं है जो अभी भी परियोजना को थोड़ा निराशाजनक बनाता है। Excelsior JETयह मज़बूती से कर सकता था लेकिन अब इसे बंद कर दिया गया है।
एक्सेलसियर JET देशी कोड कंपाइलर के लिए एक वाणिज्यिक जावा है। हालांकि, मई 2019 में इसे बंद कर दिया गया था।
हां, JVM में JIT आपके लिए ठीक यही करता है।
वास्तव में यह कोड को पहले से संकलित करने की तुलना में तेजी से कोड का उत्पादन कर सकता है क्योंकि यह उस विशिष्ट प्लेटफॉर्म के लिए अनुकूलित कोड उत्पन्न कर सकता है जो कोड रनटाइम में कैसे उपयोग किया जाता है।
JVM हमेशा शामिल होता है, भले ही बहुत उच्च प्रतिशत मूल कोड के लिए संकलित हो, क्योंकि आप बाइट कोड को गतिशील रूप से लोड और चला सकते हैं।
एक और संभावना होगी RoboVM। हालांकि, यह केवल काम करने के लिए लगता है Linux, iOSऔर Mac OS X।
आज तक, परियोजना अभी भी कुछ पदों के विपरीत कुछ जीवित लगती है ऑनलाइन परियोजना को मृत होने का दावा करती है ।