Beranda / Android / Gradle – Pilih mana api atau implementation?

Gradle – Pilih mana api atau implementation?

Pagi ini aku cek facebook dan dapat pertanyaan dari mas Pratama Nur Wijayayang berhubungan dengan gradle di android studio 3.0.

Sedikit aku penasaran kenapa ada api dan juga implementation? Apa beda nya dan apa kelebihan masing — masing dari keduanya.

Setelah sedikit pencarian aku mendapatkan dua artikel yang cukup jelas untuk pembahasan dari ke dua hal ini.

Intinya yang aku tangkap adalah seperti ini :

Better approach is to replace all compile dependencies with implementation dependencies. And only where you leak a module’s interface, you should use api. hat should cause a lot less recompilation.

Akan tetapi saya memiliki sedikit pandangan berbeda setelah melakukan beberapa percobaan dibawah ini.

Percobaan Petama

Dalam percobaan pertama ini saya menggunakan implementation untuk mengcompile dependency pada project saya dan hasilnya seperti ini.

Pertama kali compile

Total build time nya 1 menit 1.08 detik.

Dan untuk compile ke dua kalinya

Dan ternyata cuman 3 detik saja build time nya.

Percobaan Kedua

Pada percobaan pertama hasilnya adalah build time nya hanya pada saat pertama kali compile saja.

Dan sekarang lanjut ke percobaan kedua dimana kita mengganti implementation dengan api.

Yups kok hasilnya sama ini?

Percobaan Ketiga

Ok bagaimana kalau aku coba buat library local dan di tambahkan ke project kita ini. Dan seperti inilah kira — kira build.gradle nya :

Saya masih penasaran sekarang saya masuk ke percobaan ketiga dimana yang saya lakukan adalah melakukan sedikit mengubah beberapa baris code dari library filem-parsing.

Dan hasilnya seperti ini :

Hasil dari menggunakan api dan implementation

Selanjutnya saya mencoba lagi ternyata hasil nya sama saja. Sampai disini saya masih belum mendapatkan apa beda antara implementation dan api.

Sampai disini agak sedikit terfikir mungkin bukanlah build time nya yang menjadi permasalahan. Sekarang saya coba membuat dua library yaitu filem dan juga filem parsing.

Sekarang saya melakukan percobaan menambahkan library filem akan tetapi saya menambahkan ke library filem-parsing.

Selanjutnya library yang akan kita gunakan di project saya adalah filem-parsing.

Pada main app saya menambahkan library filem-parsing dengan implementation.

Dan pada library filem-parsing saya menambahkan library filem juga dengan implementation.

Dan hasilnya saya mengalami error seperti ini :

Jadi saya tidak bisa akses class Filem dan terjadi kebocoran library. Nah solusi nya adalah dengan menggunakan api untuk menambahkan library filem pada library filem-parsing.

Sekarang saya coba melakukan perubahan pada library filem-parsing yang menggunakan api.

Hasil dengan api

Dan sekarang saya menggunakan implementation :

Hasil menggunakan implementation

Kesimpulan

Kesimpulanya adalah ternyata implementation ini berfungsi untuk mengcompile library itu saja, jadi jika ada library lain di dalamnya maka tidak di compile oleh implementation sedangkan api akan mengcompile sebuah library secara utuh dimana kita bisa mengakses library yang ada di dalam nya dari luar.

Kelebihan dari implementation adalah build time nya lebih cepat jika sebuah library ada perubahan, sedangkan jika menggunakan api lebih lambat secara build time karena akan melakukan recompile satu library itu secara utuh.

Berikut ini adalah rekomendasi dari google dalam migration guide mereka.

Using implementation dependency configuration instead of api or compile can result in significant build time improvements because it reduces the amount of projects that the build system needs to recompile.

Tetapi itu semua tergantung pilihan intinya jika dengan implementationmengalami error kemungkinan ada library dalan library yang di akses dari luar jadi gunakan api.

Update

Setelah melakukan percobaan di main project saya, akhirnya merasakan efek dari build time proses dari implementation dan api.

Ini pakai hasil pakai api

menggunakan api

Dan yang ini hasil dari implementation

menggunakan implementation

Dan berikut ini dependency yang saya coba test :

 

Dan satu lagi insight dari mas Esa Firman tentang keuntungan menggunakan implementation.

Ternyata untuk implementation ini tidak terasa efeknya jika di gunakan di project dengan dependency yang sedikit.

Sumber : https://medium.com/@ocittwo/pilih-mana-api-atau-implementation-7ad865c6310

View story at Medium.com

Tentang gookkis

Cuma tukang ketik di Gookkis.com, semoga tulisan jelek ini bermanfaat.

Baca Juga

Dasar Java – Interface Dalam Java

Interface merupakan kumpulan method – method abstrak. Sebuah kelas yang menigmplementasikan interface, mewarisi method – …

Kotlin 3 – Tipe Data dan Variable

Halo selamat malam, kali ini saya akan berbagi tentang tipe data dan variable pada bahasa …

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.