मेरे पास एक छोटा प्रोग्राम है जहां उपयोगकर्ता टेक्स्ट क्षेत्र में "असली" जावा कोड का स्निपेट दर्ज कर सकता है, और फिर कुछ सरल सिस्टम परीक्षण करने के लिए कोड निष्पादित कर सकता है। यह कार्यक्रम उम्र पहले बनाया गया था, और अब मैं उत्सुक हूं कि जावा प्लेटफ़ॉर्म का उपयोग करने के लिए कुछ नए फैंसी तरीके हैं, ताकि एक ही चीज़ प्राप्त करने के लिए (उदाहरण के लिए उपयोगकर्ता टेक्स्ट क्षेत्र में ग्रोवी में प्रवेश कर रहा हो या शायद कई स्क्रिप्ट का समर्थन कर रहा हो भाषाओं)। जब मैं जावा 7 को अपनी वर्चुअल मशीन में गतिशील रूप से टाइप की गई स्क्रिप्ट के लिए समर्थन रखने के बारे में पढ़ता हूं तो मुझे उत्सुकता मिली।जावा में स्क्रिप्टिंग का समर्थन करने के लिए अब क्या शानदार तरीके हैं?
उत्तर
आप जावा 6: Creating meta language with Java से अंतर्निहित जावास्क्रिप्ट समर्थन का उपयोग कर सकते हैं, ScriptEngineFactory
भी देखें।
इसके अलावा वसंत ढांचे में Dynamic language support है।
ध्यान दें कि JVM 7 गतिशील भाषा समर्थन (invokedynamic
के माध्यम से) यहां अप्रासंगिक है। यह मुख्य रूप से जेवीएम बाइटकोड (जैसे जेआरबी या ग्रोवी) में संकलित गतिशील भाषाओं को लक्षित किया जाता है।
ScriptEngineManager
जावा 1.6 में पेश किया गया था। यह सूर्य पुरानी जकार्ता बीएसएफ परियोजना का संस्करण है जो अभी भी मौजूद है। ग्रोवी समेत दोनों अलग-अलग स्क्रिप्टिंग भाषाओं का समर्थन करते हैं। अंतर्निहित ScriptEngineManager
केवल जावास्क्रिप्ट का समर्थन करता है लेकिन मेरा मानना है कि आप ग्रोवी दुभाषिया भी जोड़ सकते हैं।
जावा के नए संस्करणों में जोड़े गए स्क्रिप्टिंग समर्थन के अलावा आपके पास Bean Shell का उपयोग करने का विकल्प है, जिसका उपयोग पुराने जावा संस्करणों जैसे 1.5 के साथ भी किया जा सकता है। Bean Shell
का उपयोग करते हुए आप बस कर सकते हैं:
// assuming you have Java code in a string called script, you can do
Object result = new bsh.Interpreter().eval(script);
// now result object will have the result of your Java code contained in string script
Bean Shell
है पूरी तरह से मूल्यांकन कर स्क्रिप्ट के लिए जावा संगत स्क्रिप्टिंग इंजन है और उनके कई उत्पादों में अपाचे, सूर्य, BEA द्वारा प्रयोग किया जाता है।
ध्यान दें कि जावास्क्रिप्ट के साथ सभी जावा 6 जेवीएम का जहाज नहीं - बस आईबीएम-एक में भाग गया जो नहीं था। –