2010-03-28 19 views
12

मैं एक सहज ज्ञान युक्त एपीआई के साथ एक अच्छी तरह से बनाए रखा जावा बाइटकोड मैनिपुलेशन लाइब्रेरी की तलाश में हूं। वहां बहुत सारे लगते हैं। किसी भी सुझाव पर किस पर कोशिश करने के लिए?जावा बाइटकोड मैनिपुलेशन लाइब्रेरी सुझाव

उत्तर

6

आपके प्रश्न का सबसे अच्छा जवाब आपकी विशिष्ट आवश्यकताओं और उद्देश्यों द्वारा शासित होगा; यदि आप जो कुछ हासिल करने की कोशिश कर रहे हैं उस पर विस्तार कर सकते हैं, तो मैं शायद अधिक अनुकूल प्रतिक्रिया प्रदान कर सकता हूं।

कि के एवज हालांकि, में, मेरे अनुभव में, ASM शायद परिपक्वता, लचीलापन का सबसे अच्छा संयोजन प्रदान करता है, और आसानी से उपयोग:

  • यह अपेक्षाकृत सक्रिय विकास के अंतर्गत है: यहां तक ​​कि नवीनतम रिलीज हालांकि जून 200 9 से, डेवलपर्स नियमित रूप से अपने वीसीएस में काम कर रहे हैं।
  • यह पहले से ही प्रमुख जावा उत्पादों जैसे कि एस्पेक्टजे, ग्रोवी, कोबर्टुरा और कई अन्य लोगों में व्यापक उपयोग में है, जो व्यापक उपयोगकर्ता-आधार का वादा करता है और इस प्रकार समर्थन के लिए एक व्यापक समुदाय है।
  • यह काफी अच्छी तरह से प्रलेखित है, और OW2 Consortium और समुदाय दोनों में उपलब्ध कई ट्यूटोरियल, उपयोगकर्ता गाइड और संदर्भ दस्तावेज़ हैं।

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

+0

प्रश्न में विशिष्टताओं की कमी के बारे में खेद है। मैं जो कुछ भी कर रहा हूं उसके बारे में बताता हूं, लेकिन आपका जवाब काफी उपयोगी था। धन्यवाद। मुझे लगता है कि मैं एएसएम का उपयोग कर समाप्त हो जाऊंगा। – Daniel

+1

इस उत्तर को देखते हुए मैंने एएसएम की कोशिश की और यह (4.0) या तो एक बग या वास्तव में अजीब व्यवहार है। मैं ट्री एपीआई का उपयोग कर रहा हूं और विधि के निर्देशों पर पुन: प्रयास कर रहा हूं। अब, पहला पुनरावृत्ति एक परिणाम देता है और पहले के बाद एक और समान पुनरावृत्ति एक और परिणाम देता है - एक निर्देश डुप्लिकेट हो जाता है और सूची के शीर्ष पर डाल दिया जाता है। कोई संशोधन कोड बिल्कुल नहीं, केवल दो पुनरावृत्तियों एक-एक करके। जावासिस्ट में स्विचिंग। –

+0

@YuriUshakov: यह ऐसी स्थिति नहीं है जिसे मैंने व्यक्तिगत रूप से अनुभव किया है। सर उठाने के लिए धन्यवाद! – RTBarnard

4

यह वास्तव में इस बात पर निर्भर करता है कि आप सहज ज्ञान युक्त परिभाषित करते हैं ;-) मैंने अपने वर्तमान प्रोजेक्ट पर एक निश्चित कार्य के लिए दो सप्ताह पहले ASM का उपयोग करना शुरू किया और यह एक आकर्षण की तरह काम करता था। इसे समझने में मुझे केवल कुछ घंटे लगे और इसका उपयोग करने में सक्षम हो गए, लेकिन मैं वास्तव में एपीआई सहज नहीं कहूंगा। लेकिन यदि आप जावा बाइटकोड के बारे में कुछ जानते हैं और आगंतुक पैटर्न से परिचित हैं, तो सीखने की अवस्था बहुत अधिक नहीं है, आईएमओ।

एएसएम का एक अन्य लाभ यह है कि यह कम से कम सूर्य जेडीके में मानक एपीआई के साथ बंडल किया गया है, हालांकि एक अलग पैकेज (com.sun.xml.internal.ws.org.objectweb.asm और उप-पैकेज) में।

+0

आप सही हैं: वहां कुछ अजीब एपीआई द्वारा निर्णय लेते हुए, अंतर्ज्ञानी लोगों की परिभाषा व्यापक रूप से भिन्न होती है;)। मैंने बस एएसएम को देखने में थोडा समय बिताया है, और मैं अपेक्षा से बहुत कम डर गया हूं! मुझे लगता है कि मैं इसके साथ रहूंगा। आपके उत्तर के लिए धन्यवाद। – Daniel

+0

कृपया कार्यान्वयन पैकेज का उपयोग न करें ... –

+1

हाँ, ठीक है, कार्यान्वयन पैकेज का उपयोग न करें। और बाइटकोड में हेरफेर न करें, जब तक कि आपको वास्तव में नहीं करना चाहिए ;-) –

3

इस लेख पर एक नज़र डालें: http://www.pabrantes.net/blog/space/start/2008-03-24/1

एक छोटी सी पुरानी है लेकिन अभी भी प्रासंगिक है।

एएसएम और जावसिस्ट अब सबसे अधिक उपयोग किए जाने वाले हैं। बीसेल मर रहा है।

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