2008-09-05 21 views
6

क्या जावा स्रोत में स्वचालित रूप से गैर-जावा स्रोत कोड को परिवर्तित करने के लिए कोई अच्छा उपकरण है?गैर-जावा को जावा स्रोत में बदलने के लिए उपकरण

मुझे कुछ सही उम्मीद नहीं है, बस रास्ते से बाहर निकलने का सबसे बुरा काम पाने के लिए।

मुझे लगता है कि कठिनाई का एक स्लाइडिंग पैमाने है। सी # अपेक्षाकृत आसान होना चाहिए (जब तक आप सभी पुस्तकालयों को अनदेखा करते हैं)। (अच्छी तरह से लिखा) सी ++ इतना बुरा नहीं है। सी को थोड़ा ओओ बनाने की आवश्यकता है। (सांख्यिकीय रूप से) कार्यात्मक भाषाओं को ग्रोक करना आसान हो सकता है। गतिशील ओओ भाषाओं को गैर-स्थानीय विश्लेषण की आवश्यकता हो सकती है।

उत्तर

6

एक चीज जिसे आप कोशिश कर सकते हैं, उस भाषा के लिए जावा बाइटकोड कंपाइलर ढूंढ रहा है जिसके बारे में आप बात कर रहे हैं (सभी प्रकार की भाषाओं के लिए जेवीएम कंपाइलर्स हैं) और फिर जैड जैसे डीकंपलर का उपयोग करके बाइटकोड को जावा में वापस ले जाएं।

यह खतरे से भरा हुआ है। पुनर्जन्म कोड चूस जाएगा और शायद अपठनीय होगा।

3

गूगल: ANTLR

+0

अच्छा बिंदु, लेकिन स्रोत भाषा के आधार पर यह करना एक बड़ी बात होगी। – user181750

-1

जावा के लिए एडीए एक ढूंढें और की जगह के साथ किया जा सकता है!

+0

रिवर्स के बारे में कैसे? मैं एक जावा लड़का हूं जो एडीए – WolfmanDragon

+0

सीखना चाहता है एडीए बहुत अलग नहीं है, टेम्पलेट्स हर समान हैं, पैकेज जावा स्टेटिक क्लास की तरह हैं, एडीए क्लासेस जावा की तरह हैं। मानक आईओ एडीए में सामान्य है। केवल अजीब बात पैकेज एक्सटेंशन है, और फाइलें पेड़ और पैकेज नाम 1: 1 को लाइन में नहीं करते हैं जैसे वे जावा में करते हैं। तो सी ++ की तरह :) –

0

यदि आप कुछ विरासत सी/पास्कल कोड का उपयोग करना चाहते हैं, तो आप जावा से इसे कॉल करने के लिए जेएनआई का भी उपयोग कर सकते हैं।

यदि आप इसे जावा एप्लेट या इसी तरह के बाधित वातावरण में चलाने के लिए चाहते हैं, और इसे बहुत ही कुशल नहीं होना है, तो आप NestedVM (जो कि जावा बाइटकोड कनवर्टर के लिए एक एमआईपीएस है) का उपयोग कर सकते हैं, जीसीसी क्रॉस- कंपाइलर जो एमआईपीएस को संकलित करता है)। लेकिन उस से जावा कोड को पढ़ने की उम्मीद न करें।

+0

NestedVM टूलचेन बल्कि भारी और पुराना है। मूल रूप से आप जावा बाइट कोड में एमआईपीएस निर्देशों को परिवर्तित करते हैं (एमआईपीएस 32 को जेवीएम के सबसे नज़दीकी होने के लिए चुना गया था) –

1

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

0

इनमें से कोई भी टूल केवल तभी मदद कर सकता है जब आपका गैर जावा कोड पर्याप्त नहीं है।

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

यदि यह इतना बड़ा कोड नहीं है, तो जावा में फिर से लिखना बेहतर होगा, क्योंकि इसमें बॉक्स से बाहर कई एपीआई पैकेज हैं, यह शायद बड़ा सौदा नहीं हो सकता है, इसके लिए कुछ इंटर्न किराए पर भी मदद मिल सकती है।

5

स्रोत-से-स्रोत माइग्रेशन Program Transformation की छतरी के नीचे आते हैं। कार्यक्रम- Transformation.org bunch of tools ट्रैक करता है जो भाषा पहचान, विश्लेषण और परिवर्तन के लिए उपयोगी हैं। यहां कुछ ऐसे हैं जो स्रोत-से-स्रोत माइग्रेशन में सक्षम हैं:

आप खुला स्रोत उपकरणों में से एक के साथ किसी भी समय खर्च करते हैं, तो आप देखेंगे कि भले ही वे स्रोत-टू शामिल एक सुविधा के रूप में स्रोत माइग्रेशन, कामकाजी उदाहरणों को ढूंढना मुश्किल है। मुझे कल्पना है कि ऐसा इसलिए है क्योंकि एक आकार-फिट-सभी माइग्रेशन जैसी कोई चीज़ नहीं है। प्रत्येक परियोजना/टीम एक भाषा का अनूठा उपयोग करती है और उपयोग की जाने वाली पुस्तकालयों, जटिलता, मुहावरे, शैली इत्यादि टाइप कर सकती है। प्रति माइग्रेशन में कुछ परिवर्तनों को परिभाषित करना समझ में आता है। इसका मतलब यह है कि स्वत: माइग्रेशन प्रयास के लायक होने से पहले एक परियोजना को कुछ महत्वपूर्ण द्रव्यमान तक पहुंचना चाहिए।

कुछ संबंधित दस्तावेज़ों:

का उपयोग करता है
संबंधित मुद्दे