28 Nisan 2016 Perşembe

Anotasyon İşleme İle Kod Oluşturma


Java 5 sürümüyle hayatımıza giren anotasyonlar (annotations) bugün pek çok modern framework tarafından -konfigrasyon ağırlıkta olmak üzere- kullanılmakta; spring tarafında bean tanımlamalarında, bağımlılık enjektesinde, mvc routing'de, orm kütüphanelerinde tablo, kolon vs tanımlamalarında, AOP'de vs. Bu çözümlerde anotasyonlar genelde yansıma (reflection) ile çalışma zamanında kullanılıyor. Oysa anotasyonlar derleme zamanında da kullanılabiliyor. Bunu sağlayan yapı java derleyicisi(javac) ile entegre calisan Annotation Processor Tool (APT). APT ile cok kolay biçimde derleme zamanında kod üretimi (Code Generation) yapılabiliyor.

29 Ocak 2016 Cuma

Android Üzerinde Basit MVP Uyarlaması


Merhaba Arkadaşlar,

Bu blog yazısında android uygulama geliştirirken MVP kalıbı nasıl uygulanır temel haliyle anlatmaya çalışacağım. MVP MVC, MVVM gibi MV* (mv-whatever) kalıplarının farklılaşmış bir şekli olup Model View Presenter kelimelerinin kısaltmasıdır. Temel mantığı kullanıcı arayüzü (ui) ile iş kurallarını (business logic) birbirinden ayırmak (bkz. separation of concerns). MVP kendi içinde supervising presenter ve passive view olarak ikiye ayrılır, ben passive view üzerinde duracağım.

10 Temmuz 2015 Cuma

Java Kütüphanesini Maven Reposunda Gönderme



Merhaba Arkadaşlar,

Android Studio ile geliştirme yaparken ister istemez, kendimce gradle ile epey haşır neşir oldum. Bu süreç içerisinde bir çok farklı plugin ile çalıştım. Bu yazıda sizlere çok faydalı bulduğum ve kullanmaktan keyif aldığım bir gradle plugin'inden bahsedeceğim: The Maven Plugin.

29 Haziran 2015 Pazartesi

Android Dinamik Sınıf Yükleme



Merhaba Arkadaşlar,

Yazılım geliştirirken bazen classpath'e dinamik sınıf yüklememizi gerektirecek bir durum oluşabilir; plugin tabanlı, esnek ve genişletilebilir mimari kurmak veya uygulama konfigrasyonuna bağlı olarak runtime'da *.jar yükleme gibi. Neyse ki bu gibi durumları kotarmak için jvm tarafında Class Loader yapısı bize bu olanağı sunuyor.

22 Temmuz 2014 Salı

Android İçin Dependency Injection Çözümü: Dagger


Selam,

Yazılım pattern'leriyle ilgileniyorsanız mutlaka duymuşsunuzdur dependency injection kavramını. Özünde bu desenin amacı; yazılım birimlerinin birbiriyle gevşek bağlı(loosely coopled) olmasını sağlamaktır ki bu sayede birimlerin birinde meydana gelen değişim diğer birim(ler)in de değiştirilmesini gerektirmez ve değişime daha açık bir yapı kurgulamış olursunuz. (bkz. SOLID Open-Closed ve Inversion of Control)

17 Temmuz 2014 Perşembe

Android Eventbus(Otto) Kullanımı


Geliştirme yaparken yazdığınız sınıfların bağımlılıklarının düşük olması önemli bir kriter, bu sayede kurduğunuz yapı kolay genişletilebilir, test edilebilir ve yeniden kullanımı kolay bir hal alır. Sınıflar arasında  bağımlık genelde interface'ler kullanılarak düşük tutulur. Ancak bu yaklaşımın olumsuz yanı callback'ler vs.'den kaynaklanan boilerplate code. Fakat biz publisher-subscriber(observer) mekanizmasını kullanarak hem gevşek bağlı(loose coupling) birimler oluşturup hem de boilerplate code problemini kotarabiliriz. Bu noktada piyasadaki eventbus kütüphanelerinden faydalanabilirz.

11 Temmuz 2014 Cuma

Android DatePickerDialog'daki DayPicker'i Gizleme


Merhabalar,

Android'de ekranda fazla yer kaplamadan kullanıcıdan tarih bilgisi almanın yolu, içerisinde tarih seçicisi bulunduran DatePickerDialog'dan geçer. Bu dialog tipi içerisinde DatePicker komponentini barındırarak gün, ay ve yıl spinner'larıyla tarih seçme işlemini kolaylaştırır.