डिस्क्लेमर: मैं पक्षपाती हूं क्योंकि मैं JVM (शमलेस प्लग !! - वेल-ग्राउंडेड जावा डेवलपर) पर पॉलीग्लॉट प्रोग्रामिंग पर एक किताब लिख रहा हूं :)
सबसे पहले, आपको केवल उस बदलाव को पेश करना चाहिए जहां यह वास्तव में वारंट है!
शुरुआत करने के लिए एक अच्छी जगह ओला बीनी की प्रोग्रामिंग भाषा पिरामिड पर विचार करना है। ओला स्थिर, गतिशील और डोमेन विशिष्ट भाषाओं के बारे में बात करता है।
जावा एक स्थिर भाषा है (सांख्यिकीय रूप से टाइप और प्रबंधित) और विभिन्न कारणों से (मैं बाद में जा सकता हूं यदि लोग रुचि रखते हैं) गतिशील परत परियोजनाओं (जैसे रैपिड वेब डेवलपमेंट) या डोमेन विशिष्ट परत परियोजनाओं (जैसे मॉडलिंग) के लिए एक आदर्श विकल्प नहीं है एंटरप्राइज़ इंटीग्रेशन पैटर्न डोमेन)। यदि आपके पास एक ऐसी परियोजना है जो उन परतों में से एक में फिट होती है तो वह शुरू करने के लिए एक अच्छी जगह हो सकती है।
यदि आप एक मूलभूत सुविधा है जो वैकल्पिक भाषा प्रदान करता है, तो जावा को बदलने के लिए स्थिर परत पर एक नई भाषा शुरू करने पर विचार कर सकते हैं। उदाहरण के लिए, Scala बस संक्षिप्त रूप में जावा से अधिक सुरक्षित और अधिक प्राकृतिक तरीके से काम करता है।
जैसा कि अनुरोध किया गया है, इस पर कुछ और। WRT जावा:
- पुनर्नवीनीकरण श्रमसाध्य है
- स्टेटिक टाइपिंग अनम्य हो सकती है और लंबे समय तक रिफैक्टरिंग समय तक ले जा सकती है
- तैनाती एक भारी वजन प्रक्रिया है
- DSL के उत्पादन के लिए जावा का सिंटैक्स प्राकृतिक रूप से फिट नहीं है
इस बिंदु पर, आप अपने आप से पूछ सकते हैं: “इन परतों के अंदर किस प्रकार की प्रोग्रामिंग चुनौतियाँ हैं? मुझे कौन सी भाषा चुननी चाहिए? ”, याद रखें कि कोई चांदी की गोली नहीं है, लेकिन मेरे पास कुछ मापदंड हैं जिन्हें आप अपनी पसंद का मूल्यांकन करते समय विचार कर सकते हैं।
डोमेन-विशिष्ट
- निर्माण / सतत एकीकरण / सतत तैनाती
- देव-ऑप्स
- एंटरप्राइज इंटीग्रेशन पैटर्न मॉडलिंग
- बिजनेस रूल्स मॉडलिंग
गतिशील
- तीव्र वेब विकास
- प्रोटोटाइप
- इंटरैक्टिव प्रशासनिक / उपयोगकर्ता कंसोल
- स्क्रिप्टिंग
- टेस्ट ड्रिवेन डेवलपमेंट / बिहेवियर ड्रिवेन डेवलपमेंट
स्थिर
- समवर्ती कोड
- अनुप्रयोग कंटेनर
- मुख्य व्यवसाय की कार्यक्षमता
एक छोटे से कम जोखिम वाले मॉड्यूल से शुरू करें (याद रखें, ये JVM भाषाएँ अक्सर मौजूदा जावा कोड को खूबसूरती से इंटरैक्ट करती हैं) या प्रोजेक्ट। यह स्पष्ट करें कि यह एक फेक प्रोटोटाइप होगा।
सुनिश्चित करें कि आपने उस भाषा के लिए प्रोग्रामिंग जीवनचक्र और टूलिंग पहलुओं की जांच की है। आप यह सुनिश्चित करना चाहेंगे कि आप टीडीडी बना सकते हैं, बिल्ड टूल्स और कंटीन्यूअस इंटीग्रेशन चला सकते हैं, शक्तिशाली आईडीई सपोर्ट और उन सभी अन्य कारकों को अपना सकते हैं। कुछ भाषाओं के लिए आपको बस यह स्वीकार करना होगा कि कुछ टूलींग नहीं है, या बहुत बुनियादी है। डेवलपर की ताकत और टूलिंग समर्थन एक भाषा की ताकत को पछाड़ सकता है।
सुनिश्चित करें कि एक जीवंत समुदाय है जो आपकी टीम की मदद कर सकता है जब वे फंस जाते हैं। स्थानीय उपयोगकर्ता समूह इसके लिए और भी बेहतर हैं।
सुनिश्चित करें कि डेवलपर्स को प्रारंभिक भाषा प्रशिक्षण मिलता है, खासकर यदि भाषा एक ओओ शैली की भाषा नहीं है (क्लोजर तक जाना गैर-तुच्छ है)।
इसके बारे में मुझे लगता है। मैंने व्यक्तिगत रूप से अपने विकास में जावा, एक्सएमएल प्रसंस्करण, त्वरित वेब साइटों के निर्माण और कुछ डेटा क्रंचिंग जैसे कार्यों के लिए जावा के साथ ग्रूवी, स्काला और क्लोजर का सफलतापूर्वक उपयोग किया है।