Android’de sık kullanılan 8 kütüphane

Android projelerinde farklı işler için kodların daha efektif ve performanslı olmasını sağlayan açık kaynak kodlu kütüphaneler bazen bizler için hayat kurtarıcıdır. Onlarca satırlık kodu çok basite indirgerler ve kullanımlarıda kolaydır.
Ancak önümüze gelen her kütüphaneyide kullanmak doğru bir davranış değildir. Örneğin kütüphanenin Github’daki star sayısı, açılan issue karşılık verilen cevaplar ve çözümleri, contributor sayısı gibi etkenleri göz önünde bulundurmanız gerekmektedir.
Bu yazı genelinde Android geliştiriciler tarafından sıklıkla kullanılan benimde projelerimde tercih ettiğim kütüphaneleri çok detaya girmeden anlatmaya çalışacağım.

ButterKnife

Android geliştirmeye ilk başladığımda findViewById kullanarak view bind işlemi yapmak belli bir zaman sonra işkence haline gelmeye başlamıştı. Kodlar göze çok kalabalık geliyor, proje büyüdükçe bu kısımda giderek artıyordu. ButterKnife kullanmaya başladıktan sonra bir nebze olsun kodlar daha az yer kaplamaya başladı.
findViewById kullanarak alttaki gibi yazdığımız kodu ;

ButterKnife ile bu şekilde yazıyoruz.

Burada ButterKnife.bind(this) yazmayı unutmuyoruz.

Yine ButterKnife ile uzun uzun yazdığımız listener metodlarını alttaki gibi yazabiliriz.

ButterKnife olmadan;

ButterKnife ile;

Glide

Androidde resimler ile ilgili bir iş yapacaksanız Glide ile tanışmanızda fayda var. Ana amacı networkteki bir resmi indirip imageView’de göstermenize yarayan bu kütüphanenin bunun yanında indirilen görseli önbelleğe alma, boyutlandırma, herhangi bir hata durumunda çıkacak olan görseli belirleme, görseli döndürme, sadece network üzerinden değil cihaz içersinde bulunan bir görselide gösterebilme gibi özelliklere sahip. Tüm bu işlemleri Glide kullanmadan da yapabilirsiniz ancak AsyncTask ve Bitmap işlemleriyle uğraşmak zorunda kalacaksınız ve büyük ihtimalle Glide ve benzeri kütüphanelerin performansına erişemeyeceksiniz, kod kalabalığıda işin cabası.

Tüm bu işlemleri Glide basitçe halledebilirsiniz. Örneğin network üzerinden resmi indirip, ortadan kırpalım, resim gelmediğinde gösterilecek olan görseli belirleyelim.

Glide alternatif olarak Picasso, Universal Image Loader ve Frescokütüphaneleri bulunmaktadır. Benim tercihim Glide kullanmaktan yana. Hepsinin birbirine göre artıları ve eksileri bulunmakta.

Picasso ve Glide karşılaştırmasını yapan güzel bir makale mevcut isterseniz buradan okuyabilirsiniz.

Retrofit

REST API’leri Java interfacelerine dönüştürmeye yarayan, sıkıcı AsyncTask bloklarından kurtaran, GET, POST gibi işlemlerinizi annotation larla kolaylıkla halledebilen bir kütüphanedir.

Daha detaylı bilgi için Retrofit’in dökümantasyonunu okuyabilirsiniz.

EventBus

EventBus, uygulamanızın farklı bölümleri arasındaki iletişimi basitleştiren bir kütüphanedir. Örneğin, bir Activity içerisindeki bir veriyi fragmenta yada fragmenttaki veriyi bir diğer fragmenta yada bir servise kolayca gönderebilirsiniz.

EventBus publish/subscribe mantığıyla çalışır. Her olay için ayrı bir event tanımlanır ve oluşturulan eventlere subscribe olunarak veri akışı sağlanabilir.

Ayrıntılı bilgi ve örnekler için EventBus dökümantasyonuna göz atabilirsiniz.

GSON

GSON, Java nesnelerini JSON’dan serialize ve deserialize etmek için kullanılan bir Java kütüphanesidir. API’lerle iletişim kurarken Retrofit ile beraber kullanıldığında işleri çok daha basitleştiren bir yapısı vardır.

ActiveAndroid

ActiveAndroid, Android için bir ORM(Object Relational Mapping)kütüphanesidir. SQLite üzerinde çalışan SQL ifadeleri yazmadan cihazdaki bir veritabanıyla iletişim kurmanızı sağlar. Örneğin kaydetme işlemi oldukça basit bir şekilde gerçeklenir.

Tüm kullanıcıların verilerini çekmek istediğimiz bir sorgu düşünün

ActiveAndroid ile bunu daha basit halde yazabiliriz.

ActiveAndroid benim tercih ettiğim bir kütüphane buna benzer birkaç tane açık kaynak kodlu kütüphane daha var. Örneğin greenDAO, ORMLite, SugarORM

ActiveAndroid için detaylı bilgiye buradan ulaşabilirsiniz.

Dagger2

Dagger 2, bir dependency injection kütüphanesidir. Sınıfların birbirine olan bağımlılığını azaltmak için kullanılır.

Detaylı bir konu olduğu için bu kısımda anlatıma girmiyorum. Orası başka bir yazı konusu. Zaten bu konu üzerinde oldukça fazla makale, sunum, video vs. bulabilirsiniz.

Ayrıca giriş niteliğindeki bu 2 yazıyı okuyabilirsiniz.

https://medium.com/mobiwise-blog/dagger-2-ve-android-dependency-injection-1-e9b8e9dc26f1

https://medium.com/mobiwise-blog/dagger-2-ve-android-dependency-injection-2-921d5c51bc3b

RxJava

RxJava bir reactive programming kütüphanesidir. Observer/Observable mantığıyla , asenkron ve event-base tabanlı çalışır.

RxJava içinde özellikle medium üzerinde birçok makale mevcut. Oldukça derin bir konu olduğundan bende RxJava ile her geçen gün yeni şeyler keşfediyorum.

Ayrıntılı dökümana buradan ulaşabilirsiniz.

Ayrıca yol gösterici olması açısından alttaki makaleleri okuyabilirsiniz.

http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/

http://plavatvornica.com/rxjava-for-beginners/

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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