2012-03-26 26 views
13

में कनवर्ट करें मेरे पास स्कैला में लिखा गया एक ऐप है और मेरे कुछ टीम के सदस्य इसका जावा संस्करण चाहते हैं। यह स्कैला में लिखे गए एक और एपीआई का उपयोग करने के लिए एक डेमो ऐप है, और वे ऐप का जावा संस्करण जावा से एपीआई का उपयोग करने में सक्षम होना चाहते हैं। हालांकि, ऐप कुछ हद तक बड़ा है और मैं जावा में मैन्युअल रूप से रीवाइट नहीं करना चाहता (और वे स्कैला सीखना नहीं चाहते हैं)। क्या कोई ऐसा टूल है जो स्कैला कोड से जावा कोड स्वचालित रूप से उत्पन्न (पठनीय) करेगा?स्वचालित रूप से स्कैला कोड को जावा कोड

+1

हो सकता है कि अपने सहकर्मियों स्काला उदाहरण को पढ़ने के लिए कोशिश कर सकते हैं, वहाँ अच्छा मौका है कि वे "एस पता करने के लिए नहीं है कैला "कोड प्राप्त करने के बारे में एक विचार प्राप्त करने के लिए। – gerferra

+1

मैंने [प्रोलॉग में एक प्रमाण-अवधारणा लिखी है] (https://gist.github.com/jarble/d4325e5a1a700129a8db20bde0b2c410) जो जावा में स्कैला के सबसेट का अनुवाद करता है। यह मेरे [सार्वभौमिक-पारदर्शी] (https://github.com/jarble/universal-transpiler) लाइब्रेरी पर आधारित है। –

उत्तर

11

वे एप्लिकेशन का Java संस्करण जावा

से एपीआई का उपयोग करने

स्काला वर्गों जावा से प्रयोग करने योग्य हैं (क्योंकि यह अंत में सभी JVM बाईटकोड है) सक्षम होना चाहते हैं। क्या आप अपने वर्गों के साथ उपयोग करने के लिए सिर्फ एक जार पैकेज कर सकते हैं?

+0

मैंने ऐसा किया लेकिन वे एपीआई से थोड़ी अधिक चाहते हैं (यानी कार्यक्षमता, जिसके लिए कुछ जटिल उदाहरणों की आवश्यकता होती है)। – Jus12

+5

हो सकता है कि आप उन्हें एपीआई और कुछ जावा उदाहरणों का उपयोग कैसे करें? – JohnnyK

+0

मुझे लगता है कि मैं ऐसा करूँगा। डीकंपलर विकल्प वास्तव में उपयोग करने योग्य जावा कोड उत्पन्न नहीं करता है। – Jus12

7

मुझे नहीं लगता कि स्कैला से मानक जावा तक कनवर्ट करना संभव है क्योंकि स्कैला कुछ बहुत कम स्तर के बाइट-कोड मैनिपुलेशन करता है। मुझे 9 0% यकीन है कि वे कुछ चीजें करते हैं जिन्हें सामान्य जावा कोड में बिल्कुल अनुवादित नहीं किया जा सकता है।

+1

पर काम नहीं करेगा किसी भी स्कैला कोड को, सिद्धांत रूप में, जावा के रूप में फिर से लिखा जा सकता है (आखिरकार, वे दोनों ट्यूरिंग-पूर्ण हैं); यह बस अच्छा नहीं होगा। और किसी भी स्वचालित स्कैला-टू-जावा अनुवाद का परिणाम शायद कुछ सुंदर घृणित कोड में होगा। – dhg

+2

क्या आप इसके बारे में निश्चित हैं?मुझे विश्वास नहीं है कि सभी वैध जावा बाइटकोड दृश्य वास्तव में कुछ संकलन कार्यक्रम द्वारा उत्पन्न किए जा सकते हैं ... –

+3

सच है, वे दोनों ट्यूरिंग-पूर्ण हैं। मेरा मतलब था कि मुझे नहीं लगता कि आप जावा कोड का उत्पादन कर सकते हैं जो स्केल के समान बाइट कोड में संकलित होगा। आप प्रत्यक्ष अनुवाद नहीं कर सके। – JohnnyK

5

नहीं, ऐसा कोई उपकरण नहीं है।
किसी अर्थ में स्कैला जावा की एक कॉपीराइट है। देखें कि कैसे कॉपीराइट सूची में सभी फंकी कक्षाएं translated जावास्क्रिप्ट में हैं। वही * स्कैला के साथ होगा।
मुझे नहीं लगता कि ऐसी कई विशेषताएं हैं जिन्हें जावा में किसी भी तरह से अनुवादित नहीं किया जा सकता है, लेकिन अधिकांश सुविधाओं का अनुवाद बेहद अव्यवस्थित कोड में किया जाएगा, भले ही मानव उस काम को करेगा।

लेकिन java to scala translators है।

* सचमुच कक्षाएं

+0

जावा को स्कैला लिंक पर एक नज़र डालें। ऐसा लगता है कि जल्द ही मेरी टीम के सदस्य एक ही सवाल पूछेंगे :) – Jus12

2

सुनिश्चित नहीं हैं कि अगर यह काम करेगा के बारे में नहीं कह, लेकिन आप एक जावा Decompiler के माध्यम से वर्ग फ़ाइलों चला सकते हैं।

यदि यह सभी परिणामों पर काम करता है तो नरक के रूप में बदसूरत होना चाहिए।

2

आप जावा स्रोत फ़ाइलों को .class फ़ाइलों डिकंपाइल करने के लिए, सावधान रहना है कि स्केला कई और अधिक .class फ़ाइलों

पैदा करता है

आप ओरेकल से javap उपयोग कर सकते हैं SDK या jad decompiler

के लिए में शामिल विस्तृत विवरण निम्न लेख पढ़ें:

Link scala class to java source

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

  • कोई संबंधित समस्या नहीं^_^