Czy warto używać biblioteki Google Guava do tworzenia aplikacji na Androida?

122

Zajmuję się tworzeniem aplikacji na Androida, która jest raczej „grubym” klientem mobilnym dla usługi WWW. Bardzo dobrze komunikuje się z serwerem, ale ma też dużo wewnętrznej logiki. Postanowiłem więc skorzystać z niektórych funkcji Google Guavabiblioteki, aby uprościć proces programowania. Oto lista funkcji, które bardzo mnie interesują: niezmienne kolekcje, narzędzia podstawowe, rozszerzenia kolekcji, cukier i idiomy programowania funkcjonalnego ( common.collecti common.base), narzędzia prymitywne ( common.primitives), narzędzia haszujące ( common.hash), narzędzia współbieżne (futures i AsyncFunction). Czego nie chcę używać w Androidzie: common.cache(patrz pytanie poniżej), common.eventbus(mamy do tego lepsze biblioteki dla Androida, takie jak Otto ), common.io(możemy użyć okio dla Androida teraz).

Czytałem, że używanie Guava na Androida może znacznie spowolnić proces kompilacji, a także obniżyć wydajność całego środowiska uruchomieniowego: Zła wydajność z Guava Cache na Androidzie (w tym przypadku jest to rozsądne i nie ma potrzeby używania pamięci podręcznej Guava dla Androida) i Dodanie Google Projekt Guava to Android - znacznie spowalnia kompilację

Czy więc efektywne jest korzystanie z biblioteki Guava w projekcie na Androida, czy też ta biblioteka jest przeznaczona tylko do programowania po stronie serwera i powinienem korzystać ze standardowych rozwiązań? Wszelkie wyjaśnienia będą bardzo mile widziane.

Oleksandr Karaberov
źródło
2
" Ale słyszałem, że [...] " jakie są twoje źródła?
jlordo
3
@jlordo Ok, zobacz moje zmiany
Oleksandr Karaberov,
2
Jest bezpieczny w użyciu, ale oczywiście: musisz sprawdzić, czy każda klasa w bibliotece odpowiada Twoim potrzebom. Guava Cache został zaimplementowany po stronie serwera (co jest prawdopodobnie napisane w dokumentacji), więc nie używaj go na Androidzie. Czas budowy zwykle nie stanowi problemu, ważniejszy jest czas wykonywania.
John Smith,
4
appbrain.com/stats/libraries/details/guava/google-guava wskazuje, że Guava jest używany w wielu aplikacjach na Androida.
Louis Wasserman,
3
Szkoda, że ​​nie można opublikować nowych odpowiedzi (ja za jednym głosowałem za ponownym otwarciem). Jest kilka realnych i interesujących kwestii, np. Związanych z limitem metody 65k, które zasługują na uwagę.
Jonik

Odpowiedzi:

117

(Za duży na komentarz, więc zamieszczam odpowiedź). Osobiście używam całej biblioteki Guava w każdym projekcie Java i kiedy nie mam znaczących i odpowiednio sprofilowanych problemów z wydajnością. Jeśli masz na przykład problemy z pamięcią, jak w środowisku Android, możesz użyć ProGuard, aby uzyskać tylko te części guawy, których naprawdę potrzebujesz.

Co więcej, istnieje wiele aplikacji na Androida korzystających z Guavy - nie tylko tych małych, np. Google Search i Youtube, które pochodzą bezpośrednio od Google.

(Powinieneś również zapoznać się z uwagą dotyczącą zgodności .)

Xaerxess
źródło
105
Byłem ciekawy rozmiaru Guava i APK . Proste testy wykazały, że: „Witaj, świecie” i niewiele więcej (debugowanie): 27 KB ; „Witaj świecie” z zależnością guawy (15.0) i mniejszym użyciem guawy (debugowanie): 705 KB ; ta sama kompilacja do wydania, zoptymalizowana za pomocą ProGuard: 22 KB . Ten test, wraz z używaniem guawy podczas tworzenia dużej aplikacji w świecie rzeczywistym, potwierdził moje przekonanie, że guawa działa również na Androida!
Jonik
2
Ponadto, jeśli napotkasz problemy z uruchomieniem ProGuard do pracy z zależnością Guava, zobacz tę odpowiedź, którą właśnie opublikowałem.
Jonik
2
Tylko obserwacja linku do najlepszych aplikacji używających guawy. Jestem ciężkim użytkownikiem Facebooka, Spotify, Tłumacza Google i nie są to najszybsze dostępne aplikacje, prawda? W rzeczywistości są złe. FB Nie muszę ci mówić, Spotify z najnowszymi aktualizacjami sprawił, że przeszedłem z Premium do Grooveshark. Facebook i Spotify naprawdę zmagają się z wrażeniami użytkownika na urządzeniach mobilnych i, co ciekawe, Tłumacz Google znacznie zwolnił z powodu tak prostej rzeczy. Teraz nie próbowałem guawy. Ale pomyślę dwa razy, zanim to zrobię. To jest link: appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro
7
Coś, o czym należy pamiętać w przypadku Guava, to limit metod dla Androida 65k, ponieważ biblioteka Guava zawiera ponad 13k metod. Osiągnięcie limitu nie powinno stanowić problemu, ponieważ możesz przejść do Multidex (ale nie mam tego z pierwszej ręki). Zobacz powiązaną dyskusję w przewodniku po sprawdzonych metodach Futurice na Androida.
Jonik
3
@Jonik Nie wiem, dlaczego nie widzę, aby więcej osób o tym wspominało. Na pewno masz proguarda, ale czy naprawdę warto? A co z kompilacjami do debugowania, będziesz musiał również na nich uruchomić program proguard. Nie uważam też multidexingu za rozwiązanie. Z łatwością wydłuża czas ładowania aplikacji o 2-5 sekund. W naprawdę dużych projektach osiągnięcie limitu 65 000 nie jest trudne. Imo Guava to taki monolit, że nie jestem jego fanem. Wolałbym raczej używać mniejszych, skoncentrowanych bibliotek, które oferują określony zestaw funkcji.
Joao Sousa