Apakah ide yang bagus menggunakan pustaka Google Guava untuk pengembangan Android?

122

Saya terlibat dalam pengembangan aplikasi Android yang merupakan klien seluler yang agak "tebal" untuk layanan Web. Ini sangat berkomunikasi dengan server tetapi juga memiliki banyak logika batin juga. Jadi, saya memutuskan untuk menggunakan beberapa fitur Google Guavalibrary untuk menyederhanakan proses pengembangan. Berikut adalah daftar fitur yang sangat saya minati: koleksi yang tidak dapat diubah, utilitas dasar, ekstensi koleksi, pemrograman fungsional gula dan idiom ( common.collectdan common.base), utilitas primitif ( common.primitives), utilitas hashing ( common.hash), utilitas bersamaan (masa depan dan AsyncFunction). Hal- hal yang tidak ingin saya gunakan di Android: common.cache(lihat pertanyaan di bawah), common.eventbus(kami memiliki lib khusus Android yang lebih baik untuk ini, seperti Otto ), common.io(kami dapat menggunakan okio untuk Android sekarang).

Saya membaca bahwa menggunakan Guava untuk Android dapat memperlambat proses kompilasi secara signifikan dan juga menurunkan kinerja runtime secara keseluruhan: Performa buruk dengan Guava Cache di Android (dalam hal ini masuk akal dan tidak perlu menggunakan cache Guava untuk Android) dan Menambahkan Google Proyek Guava ke Android - memperlambat proses build secara signifikan

Jadi, apakah efisien menggunakan pustaka Guava di proyek Android atau pustaka ini dirancang untuk digunakan hanya untuk pengembangan sisi server, dan saya harus menggunakan solusi standar? Penjelasan apa pun akan sangat dihargai.

Oleksandr Karaberov
sumber
2
" Tapi saya dengar [...] " apa sumber Anda?
jlordo
3
@jlordo Ok lihat suntingan saya
Oleksandr Karaberov
2
Aman digunakan, tetapi tentu saja: Anda perlu memeriksa setiap kelas perpustakaan jika sesuai dengan kebutuhan Anda. Guava Cache diimplementasikan untuk sisi Server (yang seharusnya ditulis di dokumen), jadi jangan gunakan di android. Waktu pembuatan biasanya tidak terlalu menjadi masalah, waktu proses lebih penting.
John Smith
4
appbrain.com/stats/libraries/details/guava/google-guava menunjukkan bahwa Jambu biji digunakan di banyak aplikasi Android.
Louis Wasserman
3
Malu karena jawaban baru tidak dapat diposting (I untuk satu memilih untuk membuka kembali). Ada beberapa isu yang nyata dan menarik misalnya terkait dengan method limit 65k yang perlu mendapat perhatian.
Jonik

Jawaban:

117

(Terlalu besar untuk berkomentar, jadi saya memposting jawaban.) Secara pribadi saya menggunakan seluruh perpustakaan Guava di setiap proyek Java dan ketika saya tidak memiliki masalah kinerja yang signifikan dan diprofilkan dengan benar . Jika Anda memiliki, misalnya, masalah memori seperti di lingkungan Android, Anda dapat menggunakan ProGuard untuk hanya mendapatkan bagian Jambu ini yang benar-benar Anda butuhkan.

Apalagi banyak aplikasi Android yang menggunakan Guava - tidak hanya yang kecil-kecil saja yaitu Google Search dan Youtube yang langsung dari Google.

(Anda juga harus melihat catatan kompatibilitas .)

Xaerxess
sumber
105
Saya penasaran dengan ukuran Jambu & APK . Pengujian sederhana mengungkapkan yang berikut: "Halo dunia" & tidak banyak lagi (debug): 27KB ; "Halo dunia" dengan ketergantungan Guava (15.0) dan penggunaan Guava minor (debug): 705KB ; sama, rilis build, dioptimalkan dengan ProGuard : 22KB . Tes ini, bersama dengan penggunaan Guava saat mengembangkan aplikasi dunia nyata yang besar, menegaskan keyakinan saya bahwa Guava juga baik-baik saja di Android!
Jonik
2
Selain itu, jika Anda mengalami masalah saat membuat ProGuard bekerja dengan ketergantungan Guava, lihat jawaban yang baru saja saya posting ini.
Jonik
2
Hanya pengamatan di tautan untuk aplikasi teratas menggunakan Jambu Biji. Saya adalah pengguna berat Facebook, Spotify, Google Terjemahan dan mereka bukan aplikasi tercepat yang berjalan di luar sana, bukan? Faktanya mereka buruk. FB Saya tidak perlu memberi tahu Anda, Spotify dengan pembaruan terbaru membuat saya beralih dari Premium ke Grooveshark. Facebook dan Spotify benar-benar kesulitan dengan pengalaman pengguna di seluler, dan anehnya saya menemukan Google Terjemahan telah sangat melambat untuk hal sederhana yang dilakukannya. Sekarang saya belum mencoba Jambu Biji. Tapi saya akan berpikir dua kali sebelum saya melakukannya. Ini adalah tautannya: appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro
7
Sesuatu yang harus diperhatikan dengan Guava adalah batasan metode Android 65k, karena Guava lib berisi lebih dari 13k metode. Mencapai batas seharusnya tidak menjadi masalah karena Anda dapat menggunakan Multidex (tetapi saya tidak memiliki pengalaman langsung tentang itu). Lihat diskusi terkait di panduan praktik terbaik Android Futurice.
Jonik
3
@Jonik Saya tidak tahu mengapa saya tidak melihat lebih banyak orang menyebutkan itu. Anda yakin memiliki proguard, tetapi apakah itu benar-benar berharga? Bagaimana dengan build debug, Anda juga harus menjalankan proguard pada build tersebut. Saya juga tidak menganggap multidexing sebagai solusi. Ini menambahkan waktu pemuatan 2-5 detik dengan mudah ke aplikasi. Dalam proyek yang sangat besar, tidak sulit untuk mencapai batas 65k. Imo Guava adalah monolit seperti itu sehingga saya sebenarnya bukan penggemar. Saya lebih suka menggunakan pustaka yang lebih kecil dan terfokus yang menghadirkan serangkaian fungsionalitas tertentu.
Joao Sousa