2010-06-07 6 views
49

क्या जावा से स्टैंडअलोन (या लाइब्रेरी) मशीन कोड को JVM की आवश्यकता के बिना संकलित करने का कोई तरीका है?क्या मैं जावा को देशी कोड में संकलित कर सकता हूं?

+2

"संकलन" वह शब्द है जिसे आप ढूंढ रहे हैं ("compilate" के बजाय)। –

+4

यदि आपकी रुचि तेज है, तो परेशान न करें जब तक कि आप ऐसे प्लेटफ़ॉर्म को नहीं देख रहे हैं जो HotSpot (Sun's JVM) का समर्थन नहीं करता है। हॉटस्पॉट फ्लाई पर मूल कोड पर बाइटकोड संकलित करता है जहां निष्पादन पथ (कुछ जो बहुत अधिक चलाता है) का "हॉटस्पॉट" दिखाता है, और यह बहुत अच्छा है। लेकिन यदि आप एक JVM की आवश्यकता से बचने के लिए देख रहे हैं, तो, जीसीजे जेम्स को देखें, आपको इंगित किया। –

+1

फिर भी एक और कारण जावा decompilers के खिलाफ सुरक्षा है। हॉटस्पॉट बनाम देशी कंपाइलर के रूप में (बनाम जेआरॉकिट बनाम आईबीएम बनाम जीसीसी बनाम दृश्य सी ++ बनाम हाथ-लेखन-सीपीयू-निर्देश-इन-हेक्स) प्रदर्शन, यह एप्लिकेशन पर निर्भर करता है, इसलिए वाईएमएमवी। –

उत्तर

33

जीसीजे नामक एक उपकरण होता था जो जीसीसी का हिस्सा था, लेकिन यह been removed है। अब, जीसीसी साइट के सभी लिंक अपने गैर-जीसीजे समकक्षों को फिर से निर्देशित करते हैं।

एनबी: टिप्पणियां सभी ने मेरे मूल उत्तर में कहा कि आप जावा को जीसीजे के साथ देशी कोड में संकलित कर सकते हैं।

+2

+1, अच्छा, मुझे इसके बारे में पता नहीं था! – FrustratedWithFormsDesigner

+2

हाँ, जीसीजे सबसे प्रसिद्ध व्यक्ति है। @ isola009: ध्यान रखें कि देशी कोड को संकलित करते समय, आप संभवतः * पुस्तकालयों * के एक सबसेट (संभवतः नाटकीय रूप से छोटे सबसेट) के साथ काम करेंगे, जो सामान्य रूप से जावा डिफ़ॉल्ट रूप से होता है। सभी खातों द्वारा जीएनयू बहुत अच्छा है, लेकिन वर्तमान जेडीके के पीछे है। –

+0

1.2 * से शुरू होने वाले सभी * जेडीकेएस के पीछे यह ठीक है। मुझे जावा के बजाए गलती से जीएनयू क्लासपाथ चलाने वाले लोगों के साथ कई समर्थन समस्याओं का सामना करना पड़ा है, और वे सभी इसे अनइंस्टॉल करके और सूर्य जेडीके का उपयोग करके अपवाद के बिना थे। – EJP

6

हां, जेवीएम में जेआईटी वास्तव में आपके लिए है।

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

जेवीएम हमेशा शामिल होता है भले ही बहुत उच्च प्रतिशत देशी कोड में संकलित किया गया हो क्योंकि आप बाइट कोड को गतिशील रूप से लोड और चला सकते हैं।

+10

हां, आप सही हैं कि जेआईटी करता है और यह बहुत अच्छा करता है। यह स्टैंडअलोन निष्पादन योग्य नहीं बनाता है, लेकिन तब ओपी उस बारे में नहीं पूछ रहा था .... –

+2

आपको लगता है कि केवल जेआईटी प्लेटफार्म-विशिष्ट अनुकूलन कर सकता है। मुझे लगता है कि जब भी आप बाइटकोड शिपिंग कर रहे हों तो यह संभव है। एआरटी स्थापना पर मूल कोड के लिए बाइटकोड संकलित करता है, और यह एक जेआईटी नहीं है। पीटर, क्या आपके पास इस पर कोई टिप्पणी है? –

+0

@ जेनस ट्रॉल्सन क्या आपके पास इस कंपाइलर का लिंक है? क्या इसका व्यापक रूप से उपयोग किया जाता है? क्या यह पिछले 5 सालों में जोड़ा गया था? जेआईटी के बिना आप गतिशील संकलन नहीं कर सकते हैं जो अधिक महत्वपूर्ण होने की संभावना है। –

14

Excelsior JET देशी कोड कंपाइलर के लिए एक वाणिज्यिक जावा है।

+3

के माध्यम से चला जाता दिखा सकते हैं, वहाँ गैर-वाणिज्यिक परियोजनाओं के लिए मुफ्त लाइसेंस हैं। –

+1

यह RoboVM से तुलना कैसे करता है? –

संबंधित मुद्दे

 संबंधित मुद्दे