Android geliştirme için Google Guava kitaplığını kullanmak iyi bir fikir mi?


122

Bir Web servisi için oldukça "kalın" bir mobil istemci olan Android uygulamasının geliştirilmesinde yer alıyorum. Sunucu ile yoğun bir şekilde iletişim kurar, ancak aynı zamanda çok fazla iç mantığa da sahiptir. Bu yüzden, Google Guavageliştirme sürecini basitleştirmek için kütüphanenin bazı özelliklerini kullanmaya karar verdim . İşte çok ilgilendiğim özelliklerin bir listesi: değişmez koleksiyonlar, temel araçlar , koleksiyon uzantıları, işlevsel programlama şekeri ve deyimler ( common.collectve common.base), ilkel araçlar ( common.primitives), karma araçlar ( common.hash), eşzamanlı araçlar (vadeli işlemler ve AsyncFunction). Android'de kullanmak istemediğim şeyler : common.cache(aşağıdaki soruya bakın), common.eventbus(bunun için Otto gibi daha iyi Android'e özgü kitaplıklarımız var ), common.io( okio kullanabiliriz şimdi Android için).

Android için Guava kullanmanın derleme sürecini önemli ölçüde yavaşlatabileceğini ve ayrıca tüm çalışma zamanı performansını azaltabileceğini okudum: Android'de Guava Cache ile kötü performans (bu durumda makul ve Guava'nın Android için önbelleğini kullanmaya gerek yok) ve Google Ekleme Guava'dan Android'e projesi - derlemeyi önemli ölçüde yavaşlatır

Peki, Guava kitaplığını Android projesinde kullanmak verimli mi yoksa bu kitaplık yalnızca sunucu tarafı geliştirme için kullanılmak üzere tasarlandı ve standart çözümlerle gitmeli miyim? Herhangi bir açıklama çok takdir edilecektir.


2
" Ama bunu duydum [...] " kaynaklarınız nelerdir?
jlordo

3
@jlordo Tamam düzenlemelerimi gör
Oleksandr Karaberov

2
Kullanımı güvenlidir, ancak elbette: İhtiyaçlarınıza uygun olup olmadığını kütüphanenin her bir sınıfını kontrol etmeniz gerekir. Guava Önbelleği, Sunucu tarafı için uygulandı (muhtemelen belgelerde yazılmıştır), bu nedenle onu android üzerinde kullanmayın. Oluşturma süresi genellikle gerçekten bir sorun değildir, çalışma süresi daha önemlidir.
John Smith

4
appbrain.com/stats/libraries/details/guava/google-guava , Guava'nın birçok Android uygulamasında kullanıldığını belirtir .
Louis Wasserman

3
Yeni cevapların gönderilemeyeceği için utanç verici (ben yeniden açılmasına oy verdim). Dikkat edilmesi gereken 65k yöntem sınırı ile ilgili bazı gerçek ve ilginç sorunlar vardır .
Jonik

Yanıtlar:


117

(Yorum yapmak için çok büyük, bu yüzden bir cevap gönderiyorum.) Şahsen, her Java projesinde ve önemli ve düzgün profillenmiş performans sorunlarım olmadığında tüm Guava kitaplığını kullanıyorum . Örneğin, Android ortamında olduğu gibi bellek endişeleriniz varsa, ProGuard'ı Guava'nın yalnızca gerçekten ihtiyacınız olan bu kısımlarını almak için kullanabilirsiniz .

Dahası, Guava'yı kullanan pek çok Android uygulaması var - sadece küçük olanlar değil, yani doğrudan Google'dan gelen Google Arama ve Youtube.

( Uyumluluk notunu da görmelisiniz .)


105
Guava & APK boyutunu merak ediyordum . Basit testler şunu ortaya çıkardı: "Merhaba dünya" & başka bir şey değil (hata ayıklama): 27KB ; Guava (15.0) bağımlılığı ve küçük Guava kullanımı (hata ayıklama) ile "Merhaba dünya": 705KB ; aynı, sürüm yapısı, ProGuard ile optimize edilmiş: 22KB . Bu test, büyük bir gerçek dünya uygulaması geliştirirken Guava'yı kullanmakla birlikte, Guava'nın Android'de de tamamen iyi olduğuna olan inancımı doğruladı!
Jonik

2
Ayrıca, ProGuard'ın Guava bağımlılığıyla çalışmasını sağlarken sorunlarla karşılaşırsanız, az önce yayınladığım bu yanıta bakın .
Jonik

2
Guava kullanan en iyi uygulamalar için bağlantıyla ilgili bir gözlem. Facebook, Spotify, Google Translate'in yoğun bir kullanıcısıyım ve orada çalışan en hızlı uygulamalar değiller değil mi? Aslında kötüler. FB Size söylememe gerek yok, en son güncellemelerle Spotify, Premium'dan Grooveshark'a gitmemi sağladı. Facebook ve Spotify, mobil cihazlarda kullanıcı deneyimiyle gerçekten mücadele ediyor ve merakla, Google Translate'in yaptığı bu kadar basit bir şey için çok yavaşladığını görüyorum. Şimdi Guava'yı denemedim. Ama yapmadan önce iki kez düşüneceğim. Bu bağlantı: appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro

7
Guava lib 13k'den fazla yöntem içerdiğinden, Guava ile dikkat edilmesi gereken bir şey Android 65k yöntem sınırıdır. Sınıra ulaşmak olmamalıdır gidebilirsin olarak bir sorun Multidex (ama Bundan hiç ilk elden tecrübe). Futurice Android en iyi uygulamalar kılavuzundaki ilgili tartışmaya bakın .
Jonik

3
@Jonik Neden daha fazla insanın bundan bahsettiğini görmüyorum bilmiyorum. Elbette bir koruyucunuz var, ama gerçekten buna değer mi? Ya hata ayıklama yapıları, bunlarda da proguard çalıştırmanız gerekecek. Ben de multidexing'i bir çözüm olarak görmüyorum. Uygulamaya kolayca 2-5 saniye yükleme süresi ekler. Gerçekten büyük projelerde 65.000 sınırına ulaşmak o kadar da zor değil. Imo Guava öyle bir monolit ki ben gerçekten hayran değilim. Belirli bir işlevsellik kümesi getiren daha küçük, odaklanmış kitaplıklar kullanmayı tercih ederim.
Joao Sousa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.