क्या Android के विकास के लिए Google Guava लाइब्रेरी का उपयोग करना अच्छा है?


122

मैं एंड्रॉइड एप्लिकेशन के विकास में शामिल हूं जो वेब सेवा के लिए "मोटी" मोबाइल क्लाइंट है। यह सर्वर के साथ भारी संचार करता है लेकिन इसमें बहुत से आंतरिक तर्क भी हैं। इसलिए, मैंने Google Guavaविकास प्रक्रिया को सरल बनाने के लिए पुस्तकालय की कुछ विशेषताओं का उपयोग करने का निर्णय लिया । यहाँ उन विशेषताओं की एक सूची दी गई है जिनमें मुझे बहुत दिलचस्पी है: अपरिवर्तनीय संग्रह, आधार बर्तन, संग्रह एक्सटेंशन, कार्यात्मक प्रोग्रामिंग चीनी और मुहावरे ( common.collectऔर common.base), आदिम उपयोगिताओं ( common.primitives), हैशिंग उपयोगिताएँ ( common.hash), समवर्ती बर्तन (वायदा और AsyncFunction)। वे चीजें जो मैं एंड्रॉइड में उपयोग नहीं करना चाहता हूं : common.cache(नीचे दिए गए प्रश्न देखें), common.eventbus(हमारे पास इसके लिए बेहतर एंड्रॉइड विशिष्ट कार्य हैं, जैसे ओटो ), common.io(हम okio का उपयोग कर सकते हैं ) अभी Android के लिए)।

मैंने पढ़ा कि एंड्रॉइड के लिए अमरूद का उपयोग संकलन प्रक्रिया को धीमा कर सकता है और पूरे रनटाइम प्रदर्शन को भी कम कर सकता है: एंड्रॉइड पर अमरूद कैश के साथ खराब प्रदर्शन (इस मामले में यह उचित है और एंड्रॉइड के लिए अमरूद के कैश का उपयोग करने की आवश्यकता नहीं है) और Google को जोड़ना अमरूद टू एंड्रॉइड प्रोजेक्ट - बिल्ड को काफी धीमा कर देता है

तो, क्या यह एंड्रॉइड प्रोजेक्ट में अमरूद लाइब्रेरी का उपयोग करने के लिए कुशल है या इस लाइब्रेरी को केवल सर्वर-साइड विकास के लिए उपयोग करने के लिए डिज़ाइन किया गया है , और मुझे मानक समाधानों के साथ जाना चाहिए? किसी भी स्पष्टीकरण बहुत सराहना की जाएगी।


2
" लेकिन मैंने सुना है कि [...] " आपके स्रोत क्या हैं?
jlordo

3
@ ज्लॉर्डो ओके मेरे संपादन देखें
ओलेकेंड्रा काराबेरोव

2
यह उपयोग करने के लिए सुरक्षित है, लेकिन निश्चित रूप से: आपको लाइब्रेरी के प्रत्येक वर्ग के लिए जाँच करने की आवश्यकता है कि क्या यह आपकी आवश्यकताओं के अनुरूप है। अमरूद कैश को सर्वर साइड (जो डॉक्स में लिखा गया है) के लिए लागू किया गया था, इसलिए इसे एंड्रॉइड पर उपयोग न करें। बिल्ड टाइम आमतौर पर वास्तव में समस्या नहीं है, रन टाइम अधिक महत्वपूर्ण है।
जॉन स्मिथ

4
appbrain.com/stats/lbooks/details/guava/google-guava इंगित करता है कि अमरूद का उपयोग बहुत सारे एंड्रॉइड ऐप में किया जाता है ।
लुई वासरमैन

3
शर्म की बात है कि नए उत्तर पोस्ट नहीं किए जा सकते हैं (मैं फिर से खोलने के लिए मतदान किया)। 65k विधि सीमा से संबंधित कुछ वास्तविक और दिलचस्प मुद्दे हैं जो ध्यान देने योग्य हैं।
जोनीक

जवाबों:


117

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

इसके अलावा, अमरूद का उपयोग करने वाले कई एंड्रॉइड ऐप हैं - न केवल छोटे लोग, यानी Google सर्च और Youtube, जो सीधे Google से आते हैं।

(आपको संगतता नोट भी देखना चाहिए ।)


105
मैं अमरूद और एपीके के आकार के बारे में उत्सुक था । सरल परीक्षण से निम्नलिखित पता चला: "हैलो वर्ल्ड" और बहुत कुछ नहीं (डीबग): 27KB ; अमरूद (15.0) निर्भरता और मामूली अमरूद उपयोग (डिबग) के साथ "हैलो वर्ल्ड": 705 केबी ; वही, रिलीज़ बिल्ड, प्रोगार्ड के साथ अनुकूलित: 22KB । इस परीक्षण ने, एक बड़ी वास्तविक दुनिया के ऐप को विकसित करते हुए अमरूद का उपयोग करने के साथ मिलकर, मेरे विश्वास की पुष्टि की कि अमरूद एंड्रॉइड पर भी पूरी तरह से ठीक है!
जोनिक

2
इसके अलावा, यदि आप अमरूद की निर्भरता के साथ काम करने के लिए ProGuard में आने वाली समस्याओं में भाग लेते हैं, तो यह उत्तर देखें कि मैंने अभी पोस्ट किया है।
जोनीक

2
अमरूद का उपयोग करने वाले शीर्ष ऐप्स के लिंक पर सिर्फ एक अवलोकन। मैं फेसबुक, Spotify, Google Translate का भारी उपयोगकर्ता हूं और वे सबसे तेज़ ऐप नहीं हैं जो वहां चल रहे हैं? वास्तव में वे बुरे हैं। FB मुझे आपको बताने की आवश्यकता नहीं है, नवीनतम अपडेट के साथ Spotify ने मुझे प्रीमियम से ग्रूवशार्क तक जाने दिया। फेसबुक और मोबाइल पर उपयोगकर्ता के अनुभव के साथ वास्तव में संघर्ष, और उत्सुकता से मुझे लगता है कि Google अनुवाद इस तरह के एक साधारण काम के लिए बहुत धीमा हो गया है। अब मैंने अमरूद की कोशिश नहीं की है। लेकिन मैं ऐसा करने से पहले दो बार सोचूंगा। यह लिंक है: appbrain.com/stats/lbooks/details/guava/google-guava
albertpeiro

7
अमरूद के बारे में कुछ पता होना चाहिए कि यह एंड्रॉइड 65k विधि की सीमा है, क्योंकि अमरूद में 13k से अधिक विधियां शामिल हैं। सीमा तक पहुंचना एक समस्या नहीं होनी चाहिए क्योंकि आप मल्टीडेक्स जा सकते हैं (लेकिन मुझे इसका कोई पहला अनुभव नहीं है)। फ्यूचुराइस Android सर्वोत्तम प्रथाओं गाइड पर संबंधित चर्चा देखें ।
जोनीक

3
@ जोंक मुझे नहीं पता कि मैं अधिक लोगों का उल्लेख क्यों नहीं देख रहा हूं। यकीन है कि आप की रक्षा है, लेकिन क्या यह वास्तव में इसके लायक है? डिबग बिल्ड के बारे में क्या है, आपको उन पर भी गार्ड चलाना होगा। मैं बहु-समाधान को एक समाधान भी नहीं मानता। यह ऐप में आसानी से 2-5 सेकंड लोड करने का समय जोड़ता है। वास्तव में बड़ी परियोजनाओं में 65k की सीमा को हिट करना उतना मुश्किल नहीं है। इमो गुवा एक ऐसा मोनोलिथ है जिसका मैं वास्तव में प्रशंसक नहीं हूं। मैं कार्यक्षमता के एक विशिष्ट सेट में लाने वाले छोटे, केंद्रित पुस्तकालयों का उपयोग करना चाहता हूं।
जोआओ सूसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.