2009-05-01 15 views
8

मेरे पास एक खुला स्रोत जावा डेटाबेस माइग्रेशन टूल (http://www.liquibase.org) है जिसे मैं .NET पर पोर्ट करने पर विचार कर रहा हूं।जेवीएम/सीएलआर स्रोत-संगत भाषा विकल्प

अधिकांश टूल (कम से कम एक जटिलता पक्ष से) तर्क के आसपास है "यदि आप प्राथमिक कुंजी जोड़ रहे हैं और डेटाबेस ओरेकल इस SQL ​​का उपयोग करता है। यदि डेटाबेस MySQL इस SQL ​​का उपयोग करता है। यदि प्राथमिक कुंजी नाम दिया गया है और डेटाबेस पोस्टग्रेस इस एसक्यूएल का उपयोग करता है "।

मैं जावा कोडेबेस को फोर्क कर सकता हूं और इसे मैन्युअल रूप से और/या स्वचालित रूप से गुप्त कर सकता हूं, लेकिन उपर्युक्त तर्क के अपडेट और बग फिक्स के रूप में मैं इसे दोनों संस्करणों पर लागू नहीं करना चाहता हूं। मैं जो करना चाहता हूं वह उस तर्क को एक रूप में ले जाया गया है जिसे संकलित और जावा और नेट दोनों संस्करणों द्वारा बेकार किया जा सकता है।

जो कोड मैं कनवर्ट करना चाहता हूं उसमें कोई उन्नत लाइब्रेरी उपयोग (जेडीबीसी, सिस्टम.आउट, आदि) शामिल नहीं है जो जावा से .NET में महत्वपूर्ण रूप से भिन्न होगा, इसलिए मुझे नहीं लगता कि यह एक मुद्दा होगा सबसे खराब इसे चारों ओर डिजाइन किया जा सकता है)।

तो क्या मैं देख रहा हूँ है:

  • जिसमें मैं में मेरे ऐप्लिकेशन के आम भागों कोड और प्रयोग करने योग्य वर्गों में यह संकलन "मानक" भाषाओं से लक्ष्य मंच पर कर सकते हैं एक भाषा
  • प्रणाली
  • कुछ भी नहीं तो अजीब है कि यह दूर डराता है के लिए किसी भी क्रम आवश्यकताओं नहीं जोड़ करता है संभावित योगदानकर्ताओं

मैं के.एन. ओवी पायथन और रूबी दोनों में जेवीएम और सीएलआर के लिए कार्यान्वयन है। वे मेरी आवश्यकताओं को कितनी अच्छी तरह फिट करते हैं? क्रॉस-प्लेटफ़ॉर्म अनुप्रयोगों के लिए इस तकनीक का उपयोग करके कोई भी सफल (या असफल) रहा है? क्या कोई गॉचाचा है जिसके बारे में मुझे चिंता करने की ज़रूरत है?

उत्तर

5

Fantom programming language देखें। इसकी अपनी जावा-जैसी/सी #-जैसी वाक्यविन्यास है लेकिन जावा वीएम या .NET CLR को लक्षित कर सकती है।

उनके "Why Fantom" पृष्ठ एक वीएम पर चल रही गतिशील भाषाओं बनाम पोर्टेबिलिटी के दृष्टिकोण के उच्च स्तर का अवलोकन देता है।

+0

मुझे लगता है कि फैन सबसे अच्छा विकल्प प्रतीत होता है। जावा पर ज्योथन ऐसा लगता है कि यह थोड़ी देर के लिए काम नहीं किया गया है, जबकि सीएलआर पर आयरनरुबी संस्करण 0.3 पर है। मुझे यह जानने के लिए और अधिक जानना होगा कि क्या मैं वास्तव में करना चाहता हूं या अगर केवल कांटा करना आसान है। –

+0

जेथॉन की नवीनतम रिलीज नवंबर में थी, और यह काफी सक्रिय प्रतीत होती है, हालांकि मैं मानता हूं कि इस मामले में फंताम बेहतर फिट है। – Yishai

1

आपके पास IKVM.NET का उपयोग करके कुछ भाग्य हो सकता है। मुझे इसकी सटीक स्थिति पर यकीन नहीं है, लेकिन यदि आप .NET Framework पर जावा कोड चलाने पर जोर देते हैं तो यह प्रयास करने योग्य है। इसमें जावा बेस क्लास लाइब्रेरी का .NET कार्यान्वयन शामिल है, इसलिए यह उचित रूप से पूर्ण लगता है।

एकमात्र अन्य विकल्प जो मैं सुझाव दे सकता हूं वह कोड को J# भाषा में भेज रहा है, एक पूर्ण .NET भाषा (हालांकि इस अर्थ में पहली श्रेणी नहीं है कि सी # या वीबी.नेट है)। भाषा डिजाइन की गई थी ताकि जावा के साथ अंतर कम से कम थे।

+0

मैंने उन दोनों विकल्पों के बारे में सोचा था, लेकिन आईकेवीएम के साथ मेरी चिंता एक निर्भरता जोड़ रही थी, और जे # के साथ मेरी चिंता को नेट डेवलपर्स द्वारा मजाक किया जा रहा था ... –

+0

@ नाथन: काफी समझ में आता है ...हालांकि मुझे नहीं लगता कि आपको मुख्यधारा की प्रौद्योगिकियों के भीतर जिस तरह से आप चाहते हैं उसमें "आदर्श" समाधान ढूंढने जा रहे हैं। अधिकांश प्रोजेक्ट रखरखाव पूरे कोड बेस को दूसरी भाषा (शायद दूसरों की मदद से) पर पोर्ट करेंगे और सभी बंदरगाहों में समानांतर कोड में कोई भी बदलाव/फिक्सेस करेंगे। मुझे व्यक्तिगत रूप से लगता है कि आप जेवीएम/सीएलआर संस्करणों के लिए एक ही कोड बेस का उपयोग करने के प्रयास में लायक होने की तुलना में अधिक समस्याओं में भागने जा रहे हैं - एक अलग बंदरगाह बनाए रखना अधिक प्रयास है, लेकिन मेरे दिमाग में इसके लायक है। – Noldorin

0

यदि आप किसी विद्रोही दृष्टिकोण के बारे में सोच रहे हैं, तो आप लुआ को देख सकते हैं।

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