2010-10-08 10 views
5

जावा के साथ एक बड़ी जावा प्रोजेक्ट पर जोड़ने के लिए सबसे अच्छी गतिशील भाषा क्या है?जावा प्रोजेक्ट पर जावा के साथ युग्मित करने के लिए सर्वश्रेष्ठ गतिशील भाषा

हम परीक्षण, नियंत्रक, सेवाओं के लिए गतिशील भाषा का उपयोग करने पर विचार कर रहे हैं। कुछ विकल्प ग्रोवी, जेआरबी या ज्योथन हैं। इसके लिए प्रत्येक के पेशेवर और विपक्ष क्या हैं? आदर्श रूप में हम जावा को गतिशील भाषा से कॉल करने के साथ-साथ जावा से गतिशील भाषा को कॉल करने में सक्षम होंगे।

संपादित करें: यदि यह मदद करता है, तो हम पिकोकॉन्टेनर और वेबवर्क के साथ हाइबरनेट का उपयोग कर रहे हैं।

धन्यवाद, एलेक्स

उत्तर

9

वास्तव में तीन गतिशील भाषाएं हैं जो जावा - स्कैला, ग्रोवी और क्लोजर के साथ एक बहुत ही सहज इंटरऑप प्रदान करती हैं। वहां से, मैं आपकी टीम से पूछूंगा कि वे किस भाषा में काम करेंगे या उन्हें प्रत्येक भाषा में प्रोटोटाइप आज़माएं और देखें कि वे क्या सोचते हैं।

तो टीम दक्षता शुरुआत में महत्वपूर्ण नहीं है, क्या समस्या प्रत्येक भाषा के हल करने का प्रयास करने के लिए लग रही है:

  • ग्रूवी बहुत ढीला है, लेकिन अनुभवी जावा डेवलपर्स के लिए प्राकृतिक होने जा रहा है और तेजी से प्रोटोटाइप विकास की अनुमति देता है इसके बतख टाइपिंग के कारण।
  • स्कैला आपको डीएसएल लिखने में सक्षम बनाता है जो इसे फ्रेमवर्क और टूल के लिए अच्छा बनाता है जहां आप किसी भाषा में समस्या को हल करना चाहते हैं, इस तरह आप समस्या का वर्णन कैसे करेंगे।
  • Clojure तुतलाना के कार्यात्मक प्रोग्रामिंग और अपरिवर्तनीय राज्य अवधारणाओं को लागू करने के लिए जा रहा है और आदि, ऐ, प्राकृतिक भाषा संसाधन में समस्याओं के लिए एक बहुत ही स्वाभाविक रूप से फिट हो सकता है

अंत में, मैं देख के रास्ते नीचे चले गए हैं परियोजनाओं के आधार पर सही भाषा के लिए और पाया है कि कोई आदर्श भाषा नहीं है। मैंने ऊपर दी गई सभी भाषाओं को मूल जेवीएम बाइट कोड में संकलित किया है और काफी ठोस हैं। कभी-कभी आपको केवल ऐसी भाषा चुननी होती है जो दूसरों के जितना ठंडा न हो, लेकिन आपको अपनी समस्या को हल करने के रास्ते पर पहुंच जाए।

+5

स्कैला गतिशील नहीं है, यह एक स्थिर रूप से टाइप की गई भाषा है, लेकिन संकलक द्वारा टाइप अनुमान प्रदान करता है जो इसे गतिशील भाषा की तरह दिखता है और महसूस करता है। इसमें स्ट्रक्चरल-टाइपिंग भी है जो "स्थिर रूप से चेक" बतख टाइपिंग है। – oluies

+1

+1 "(i) ने पाया है कि कोई परिपूर्ण भाषा नहीं है" – msharp

+0

आप कोटलिन का उपयोग कर सकते हैं जो अपेक्षाकृत नया है: https://kotlinlang.org/docs/reference/java-interop.html –

1

Clojure शायद नियंत्रकों और सेवाओं के लिए सबसे अच्छा गतिशील भाषा है। ("सेवाओं" के साथ आपका क्या मतलब है इसके आधार पर।

स्कैला और ग्रोवी ++ में सबसे अच्छा जावा इंटरऑप है, लेकिन वे गतिशील नहीं हैं (अच्छी तरह से ग्रोवी ++ में आप स्वयं को तय करते हैं कि टाइप किया गया है।)। स्कैला का स्वरूप और अनुभव है एक गतिशील भाषा। स्काला अच्छा परीक्षण है http://www.scalatest.org/ रूपरेखा और चश्मा और AKKA सेवाओं के लिए बहुत mature है और यह भी जावा APIs

2

जवाब निश्चित रूप से, है, स्वाद और लचीलापन के मामलों पर कुछ हद तक निर्भर करने के लिए जा रहा है। वहाँ लोक हैं जिनके पास रूबी या पायथन के साथ अनुभव नहीं है, तो ग्रोवी के पास जावा के बहुत करीब एक वाक्यविन्यास होगा (वास्तव में यह जावा का सुपरसैट है), और इसके परिणामस्वरूप एक बहुत ही आसान बिक्री हो सकती है।

मैं वास्तव में जेआरबीई से बात नहीं कर सकता क्योंकि मैंने इसका उपयोग नहीं किया है।

ग्रोवी आपको सूचीबद्ध तीनों के जावा के साथ शायद सबसे आसान इंटरऑप देता है। इसमें EasyB में बहुत अच्छी बीडीडी लाइब्रेरी भी है जो मुझे बहुत पसंद है। नकारात्मक पक्ष पर मुझे नहीं लगता कि ग्रोवी की विशेषताओं या वाक्यविन्यास वास्तव में बहुत अच्छी तरह से लटका हुआ है। यह जावा में अलग एक्सटेंशन के पूरे समूह की तरह महसूस कर सकता है।

ज्योथन निश्चित रूप से पायथन है इसलिए वाक्यविन्यास अलग है, लेकिन इसमें पाइथन की सभी स्थिरता भी है। इंटरऑप स्क्रिप्ट स्तर पर बहुत अच्छा है लेकिन कम से कम थोड़ा अजीब होता था अगर आप जेथॉन में पूर्व-संकलित कक्षाएं लिखना चाहते थे जिसे आप जावा से कॉल करते हैं। मेरे लिए ग्रोवी पर अन्य मुख्य समर्थक यह है कि जावा प्रोजेक्ट के साथ बातचीत करने के लिए आपके पास वास्तविक आरपीएल है।

मैं क्लोजर का भी उल्लेख करता हूं, वाक्यविन्यास और भी अलग है लेकिन जावा इंटरऑप उत्कृष्ट है, शायद सबसे अच्छा है, और फिर आपके पास एक आरईपीएल है। नीचे की ओर यदि लोगों को रूबी या पायथन सिंटैक्स को समायोजित करने में परेशानी होती है तो एक लिस्प शायद सही है।

4

मैं Groovy की अनुशंसा करता हूं, मुख्य रूप से क्योंकि यह जावा के साथ सहजता से इंटरऑपरेट करता है, और जावा का लगभग एक सुपरसेट है, जावा डेवलपर के लिए सीखना बहुत आसान है। मेरे पास इसका समर्थन करने के लिए बिल्कुल कोई सबूत नहीं है, लेकिन सुनवाई, अनुमान, और व्यक्तिगत अनुभव के आधार पर, मुझे संदेह है कि ग्रोवी समुदाय या तो JRuby या Jython की तुलना में काफी बड़ा है।

संयोग से, Groovy++ मेरी राय में उत्पादन उपयोग के लिए विचार करने के लिए बहुत अपरिपक्व तरीका है।

1

मैं Jython के साथ जाने का सुझाव दूंगा। वाक्यविन्यास साफ है, और आपको पाइथन आपको जो भी अतिरिक्त शक्ति/सुविधा मिलती है, आपको मिलती है।

उदाहरण के लिए, यदि आप ग्रोवी के साथ जाना चाहते हैं, तो आप मूल रूप से केवल जावा तक ही सीमित होंगे। ज्योथन भी पाइथन की शक्तियों को जोड़ देगा।

यदि यह किसी की सहायता करता है, तो मैंने ज्योथन को हाइबरनेट, एसओएपी, कॉर्बा और ईजेबी के साथ उपयोग किया है और यह केवल सादे जावा के साथ ऐसा करने से कहीं अधिक आसान है।

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