/ / JAR फ़ाइल आकार - जावा, जार, htmlunit को कम करने के लिए उपयोग की जाने वाली लाइब्रेरी का निर्धारण करें

इस्तेमाल किया पुस्तकालयों को कम करने के लिए निर्धारित जार फ़ाइल आकार-जावा, जार, htmlunit

मैं कुछ कार्यक्रमों में और मैं हमेशा HtmlUnit का उपयोग कर रहा हूंसमस्या यह है कि जब भी मैं इसका उपयोग करता हूं, मुझे HtmlUnit वेबसाइट से डाउनलोड की गई सभी फाइलों (पुस्तकालयों) को जोड़ना पड़ता है, इसलिए मुझे मिलने वाली जार फ़ाइल हमेशा 10 mb होती है।

ये वे फाइलें हैं जिन्हें मैं जोड़ता हूं:

वैकल्पिक शब्द

लेकिन मेरे अधिकांश कार्यक्रमों में मैं केवल इसे शामिल करता हूं:

import com.gargoylesoftware.htmlunit.Page;
import com.gargoylesoftware.htmlunit.RefreshHandler;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.*;

मैं आमतौर पर केवल WebClient और HtmlElements (HtmlForm, HtmlTable, आदि) का उपयोग करता हूं, इसलिए मुझे यह अजीब लगता है कि मुझे उन सभी की आवश्यकता है।

मेरा प्रश्न यह है कि अगर मैं शामिल पुस्तकालयों की संख्या को कम कर सकता हूं, या शायद बेहतर है, तो मैं यह कैसे निर्धारित कर सकता हूं कि जिन पुस्तकालयों को मैं शामिल करता हूं, उनका उपयोग बिल्कुल नहीं किया जा रहा है।

उत्तर:

जवाब के लिए 3 № 1

क्या आप वास्तव में सभी अतिरिक्त पुस्तकालयों के सभी वर्गों की जांच करना चाहते हैं कि क्या उन्हें ज़रूरत है या नहीं?

IMHO यह कार्यक्रम के लिए एक नौकरी है। ऐसा करने के लिए एक लोकप्रिय ओपन सोर्स प्रोग्राम है ProGuard.

आम तौर पर प्रोगुर्ड को ओफ़्फ़्यूसकेटर (नाम बदलने) के रूप में जाना जाता हैवर्ग फ़ाइलों में सब कुछ ताकि विघटित वर्गों को समझना मुश्किल हो) लेकिन इसे मापदंडों का उपयोग करते समय बिना किसी बाधा के इस्तेमाल किया जा सकता है -dontobfuscate। इसके अतिरिक्त मैं आपको सुझाव देता हूं कि आप इसका उपयोग करें -dontoptimize के रूप में अच्छी तरह से पैरामीटर ।

यदि आप आप बड़े मोटे JAR पर ProGuard चलाते हैं तो आपको बहुत छोटा मिलेगा।

यदि आप रुचि रखते हैं, तो मैं एक चींटी बिल्ड फ़ाइल का एक छोटा सा हिस्सा पोस्ट कर सकता हूं जो दिखाता है कि ProGuard को कॉन्फ़िगर और कॉल कैसे करें।


उत्तर № 2 के लिए 1

आपको इस बात पर ध्यान देना होगा कि न केवल आप जिस वर्ग का उपयोग करते हैं, बल्कि उनकी सभी निर्भरता भी। आपको यह पता लगाने के लिए पूरे ऑब्जेक्ट ग्राफ का पीछा करना होगा कि क्या नहीं कहा जाता है।


उत्तर № 3 के लिए 1

मुझे इसके बारे में मालूम है JBoss टाटलेट, लेकिन मैंने इसे खुद नहीं आजमाया।

ध्यान रखें कि एक पुस्तकालय कोड के कुछ रनों के दौरान ही एक्सेस किया जा सकता है (जैसे इनपुट के आधार पर), इसलिए यह निश्चित होना बहुत मुश्किल है कि क्या लाइब्रेरी की आवश्यकता हो सकती है।

यदि आप कुछ पुस्तकालयों से छुटकारा पा लेते हैं, तो आपकेअनुप्रयोग अब काम कर सकता है, लेकिन किसी भिन्न इनपुट पर विफल रहता है, या जब आप अपनी अगली रिलीज़ में HtmlUnit का उपयोग अलग-अलग तरीके से करने लगते हैं, तो विफल हो जाते हैं। 10 एमबी isn "आजकल इतना नहीं है, इसलिए शायद कुछ जार से छुटकारा पाने के लिए परेशानी के लायक नहीं है।