È una buona idea utilizzare la libreria Google Guava per lo sviluppo Android?


122

Sono coinvolto nello sviluppo di un'applicazione Android che è un client mobile piuttosto "spesso" per un servizio Web. Comunica pesantemente con il server ma ha anche molta logica interna. Quindi, ho deciso di utilizzare alcune funzionalità della Google Guavalibreria per semplificare il processo di sviluppo. Ecco un elenco di funzionalità che mi interessano molto: raccolte immutabili , utilità di base, estensioni di raccolta, zucchero e idiomi di programmazione funzionale ( common.collecte common.base), utilità primitive ( common.primitives), utilità di hashing ( common.hash), utilità concorrenti (futures e AsyncFunction). Cose che non voglio usare in Android: common.cache(vedi domanda sotto), common.eventbus(abbiamo librerie specifiche per Android migliori per questo, come Otto ), common.io(possiamo usare okio per Android ora).

Ho letto che l'utilizzo di Guava per Android può rallentare notevolmente il processo di compilazione e anche diminuire le prestazioni dell'intero runtime: Cattive prestazioni con Guava Cache su Android (in questo caso è ragionevole e non è necessario utilizzare la cache di Guava per Android) e Aggiunta di Google Progetto da Guava ad Android: rallenta notevolmente la compilazione

Quindi, è efficiente utilizzare la libreria Guava nel progetto Android o questa libreria è progettata per essere utilizzata solo per lo sviluppo lato server e dovrei optare per soluzioni standard? Eventuali spiegazioni saranno molto apprezzate.


2
" Ma ho sentito che [...] " quali sono le tue fonti?
jlordo

3
@jlordo Ok guarda le mie modifiche
Oleksandr Karaberov

2
È sicuro da usare, ma ovviamente: è necessario verificare per ogni classe della libreria se si adatta alle proprie esigenze. Guava Cache è stato implementato per il lato Server (che è probabilmente scritto nei documenti), quindi non usarlo su Android. Il tempo di costruzione di solito non è un vero problema, il tempo di esecuzione è più importante.
John Smith,

4
appbrain.com/stats/libraries/details/guava/google-guava indica che Guava è utilizzato in molte app Android.
Louis Wasserman

3
Peccato che non si possano pubblicare nuove risposte (io per primo ho votato per la riapertura). Ci sono alcune questioni reali e interessanti, ad esempio relative al limite del metodo 65k, che meritano attenzione.
Jonik

Risposte:


117

(Troppo grande per un commento, quindi posto una risposta.) Personalmente utilizzo l'intera libreria Guava in ogni progetto Java e quando non ho problemi di prestazioni significativi e adeguatamente profilati . Se hai, ad esempio, problemi di memoria come nell'ambiente Android, puoi utilizzare ProGuard per ottenere solo queste parti di Guava di cui hai veramente bisogno.

Inoltre, ci sono molte app Android che utilizzano Guava , non solo quelle piccole, ovvero Ricerca Google e Youtube, che provengono direttamente da Google.

(Dovresti anche vedere la nota sulla compatibilità .)


105
Ero curioso delle dimensioni di Guava e APK . Un semplice test ha rivelato quanto segue: "Hello world" e non molto altro (debug): 27KB ; "Hello world" con dipendenza Guava (15.0) e utilizzo minore di Guava (debug): 705KB ; lo stesso, build di rilascio, ottimizzato con ProGuard: 22KB . Questo test, insieme all'aver utilizzato Guava durante lo sviluppo di una grande app del mondo reale, ha confermato la mia convinzione che Guava va benissimo anche su Android!
Jonik

2
Inoltre, se riscontri problemi nel far funzionare ProGuard con la dipendenza Guava, vedi questa risposta che ho appena pubblicato.
Jonik

2
Solo un'osservazione sul collegamento per le migliori app che utilizzano Guava. Sono un utente pesante di Facebook, Spotify, Google Translate e non sono le app più veloci in circolazione, giusto? In effetti sono cattivi. FB Non ho bisogno di dirtelo, Spotify con gli ultimi aggiornamenti mi ha fatto passare da Premium a Grooveshark. Facebook e Spotify sono davvero in difficoltà con l'esperienza utente sui dispositivi mobili e, curiosamente, trovo che Google Translate abbia rallentato molto per una cosa così semplice. Ora non ho provato Guava. Ma ci penserò due volte prima di farlo. Questo è il link: appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro

7
Qualcosa di cui essere consapevoli con Guava è il limite del metodo Android 65k, poiché Guava lib contiene oltre 13k metodi. Raggiungere il limite non dovrebbe essere un problema in quanto puoi passare a Multidex (ma non ne ho esperienza di prima mano). Vedere la discussione correlata nella guida alle best practice Android di Futurice.
Jonik

3
@ Jonik Non so perché non vedo più persone che lo menzionano. Certo che hai dei progressi, ma ne vale davvero la pena? Per quanto riguarda le build di debug, dovrai eseguire proguard anche su quelle. Non considero nemmeno il multidex una soluzione. Aggiunge facilmente 2-5 secondi di tempo di caricamento all'app. In progetti davvero grandi non è così difficile raggiungere il limite di 65k. Imo Guava è un tale monolite che non sono un vero fan. Preferisco usare librerie più piccole e mirate che apportano un insieme specifico di funzionalità.
Joao Sousa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.