2011-05-30 13 views
11

मुझे एक जेवीएम असेंबलर चाहिए जो सरल और सरल है। इसे The Java Virtual Machine Specification में वर्णित निमोनिक भाषा में लिखी गई एक टेक्स्ट फ़ाइल लेनी चाहिए और क्लास फाइलों का उत्पादन करना चाहिए, यानी बाइटकोड।क्या जेवीएम असेंबलर हैं?

स्पष्ट होने के लिए: मुझे ऐसी लाइब्रेरी नहीं चाहिए जो एपीआई के इनवोकेशन से क्लास फाइलें उत्पन्न कर सके।

जेवीएम असेंबलरों की वर्तमान स्थिति क्या हैं? क्या वे invokedynamic का समर्थन करते हैं (मेरे लिए अनिवार्य नहीं है, लेकिन एक फायदा)? मैं किस ऑपरेटिव सिस्टम का उपयोग कर सकता हूं? उनके व्यक्तिगत पेशेवर और विपक्ष क्या हैं?

+1

ध्यान दें कि JVM spec ** ** ** पूर्ण 'वर्ग' फ़ाइलों के निर्माण के लिए पूर्ण भाषा प्रदान नहीं करता है। इसमें बाइटकोड होता है, लेकिन आवश्यक "नलसाजी" नहीं है (उदाहरण के लिए विधियों की घोषणा कैसे की जाती है, "असेंबली" में लिखे गए वर्ग पदानुक्रम कैसे हैं ...)। तो किसी भी जेवीएम असेंबलर को "आविष्कार" करने की आवश्यकता होगी। –

+0

@ जोचिम यह एक अच्छा मुद्दा है। कोई भी रचनात्मक नलसाजी मेरे लिए ठीक है। –

उत्तर

7

Jasmin वास्तविक तथ्य है। हाल के संस्करण invokedynamic का समर्थन करते हैं। यह जावा में लिखा गया है, इसलिए यह पोर्टेबल है।

9

कुछ समय बीत चुका है, और अब Jasmin का विकल्प है जिसे Krakatau कहा जाता है।

README.txt से

:

Krakatau कोडांतरक जैस्मिन के लिए एक स्थानापन्न के रूप में करना है, और मूल रूप से जैस्मिन की सीमाओं के कारण लिखा गया था। यह जैस्मीन के वाक्यविन्यास के साथ अधिकतर संगत है, हालांकि जसमिन्स्ट में पेश किए गए एक्सटेंशन के साथ जरूरी नहीं है। हालांकि, क्राकाटो कई नई सुविधाएं प्रदान करता है, सबसे महत्वपूर्ण रूप से लगातार पूल संदर्भ निर्दिष्ट करने की क्षमता।

इस समय, ऐसा लगता है कि क्राकाटो को एक महीने पहले अपडेट किया गया था, और जैस्मीन को नौ साल पहले अपडेट किया गया था।

क्राकाटो invokedynamic का समर्थन करता है और जेवीएमएस में उपयोग किए जाने वाले समान निर्देश नामों का उपयोग करता है।

क्राकाटो को पायथन में कार्यान्वित किया गया है। निजी तौर पर, मुझे जावा में अपने जावा टूल्स को लागू करना पसंद है, लेकिन इस टूल की प्रकृति (गैर-जावा स्रोत से कक्षा फाइलों का निर्माण) और इस जगह में प्रतिस्पर्धा की कमी के कारण, मैं इसे एक मौका दूंगा।

+1

एफवाईआई, [यह प्रोजेक्ट] भी है (https://github.com/alexkasko/krakatau-java) जो जैकटन का उपयोग जावा डेवलपर्स के लिए अधिक फॉर्मेट करने योग्य रूप में क्राकाटो को प्रस्तुत करने के लिए करता है। – daveloyall

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