Welcome

Kotlin’de Singleton Nasıl Implement Edilir?

Java programlama dilinde “static” keyword ile statik sınıflar , statik metotlar ve statik değişkenler tanımlarız. Java’da statik olarak tanımlanmış metot ve değişkenlere de, herhangi bir nesneye ihtiyaç duymadan, sınıf düzeyinde erişebiliriz. Uygulama genelinde bir sınıftan tek bir nesne ile çalışılmasını garanti eden Singleton örüntüsünü de yine bu statik metot ve değişkenler yardımı ile implement ederiz. […]

Spring Boot Test Ortamı ve Redis

Spring ekosisteminde çalışırken en çok hoşuma giden özelliklerden birisi de entegrasyon testlerini çalıştırırken veri erişim işlemleri ile ilgili işlemleri hafızada çalışan gömülü bir veritabanı (H2 veya Derby) ile kolayca gerçekleştirebilmemizdir. Böylece testleri herhangi bir ortamda – ortamda daha önceden herhangi bir setup yapaya gerek kalmaksızın – rahatlıkla koşturabiliriz. Bu kabiliyet Kafka, Redis gibi NoSQL çözümler […]

Kotlin ve Mockito (2)

Kotlin ve Mockito yazı dizimizin ilkinde Kotlin içerisinde Mockito ile mock nesneler oluştururken veya nesnelerimizi spy yaparken Kotlin sınıflarımızın open olması gerektiğinden bahsetmiştik. Kotlinde Mockito kütüphanesi ile çalışırken karşılaşacağımız en temel sorunlardan bir diğeri ise Mockito.any() veya ArgumentCaptor.capture() gibi metotların NULL döndürmesidir. Eğer mock nesnemizde input argüman olarak NULL olmayan bir değer bekleyen herhangi bir […]

Kotlin Exception’ları ve Spring Transaction Yönetimi

Bilindiği üzere Java programalama dilinde exception’lar checked ve unchecked şeklinde ikiye ayrılır ve geliştirme sürecinde genellikle unchecked exception’larla çalışma tercih edilir. Kotlin’in Java programlama pratiği üzerine koyduğu iyileştirmelerden birisi de bütün exception’ları unchecked olarak ele almasıdır. Kotlin ile çalışırken exception’ları ister Kotlin’in Exception sınıfından, istersek de RuntimeException sınıfından türetelim bu exception’ları fırlattığımız yerde ne metot […]

Kotlin ve Hibernate Getter Level Access

JPA/Hibernate ile çalışırken PersistenceContext’in entity nesnelerin state’ine doğrudan field düzeyinde mi, yoksa getter metot ile mi erişeceğini @Id anotasyonunu nerede kullandığımız belirlemektedir. Eğer @Id anotasyonunu field üzerinde kullanırsak, JPA/Hibernate field level access stratejisini kullanacaktır, yani entity state’lerine erişmek ve veritabanından okuduğu değerleri entity nesnenin içerisine aktarmak için getter/setter metotlarını kullanmayıp, doğrudan Reflection API ile nesnenin […]

Kotlin ve NPE (2)

Bir önceki yazımızda başladığımız Kotlin’de NPE konusunu incelemeye devam ediyoruz. Peki önceki yazımızda bahsettiğimiz durumların dışında başka hangi durumlarda NPE hatası ile karşılaşırız? NPE hatası alabileceğimiz durumlardan birisi de inheritance’ın kullanıldığı bir senaryodur. Kotlin’de nesneler yaratılırken, değişkenler sınıf hiyerarşisine göre initialize edilir. Hiyerarşide her bir sınıfa karşılık gelen nesne alanları construct edilirken, bu işlem üst […]

Kotlin ve NPE

Kotlin’in öne çıkan özelliklerinden birisi de uygulama içerisinde null referansların önüne geçmeye çalışmasıdır. Kotlin’in tip sistemi, uygulamalarımızdan NullPointerException hatalarını ortadan kaldırma hedefi ile tasarlanmıştır. Buna “null safety” adı da verilmektedir. Peki NPE hatası Kotlin’de nasıl engelleniyor? Bunun için Kotlin’de tanımlanan değişkenler ve return tipleri varsayılan durumda null değer alamayacak veya dönemeyecek biçimde tanımlanıyorlar. Örneğin, yukarıda […]

Kotlin ve Spring MVC Validations

Kurumsal Java dünyasında pek çok framework ve çözüm, kabiliyetleri ile ilgili metadata tanımlarını Java anotasyonları şeklinde ele almaktadır. Bunlardan birisi de Java Bean Validation spesifikasyonudur. JSR-380 olarak da bilinen bu spesifikasyon ile domain sınıflarındaki validasyon ihtiyaçları Java anotasyonları ile field veya getter metotlar üzerinde tanımlanmaktadır. Çalışma zamanında da uygun bir Validator ile bu sınıflardan yaratılmış […]

Kotlin ve Mockito

TDD ile programlama yapan Java yazılım geliştiricilerin en temel araçlarından birisi de Mockito mock kütüphanesidir. Mockito yardımı ile arayüz ve sınıflardan mock ve stub nesneler oluşturarak, bunları eğittikten sonra test ettiğimiz nesneye enjekte ederek birim testlerimizi gerçekleştiririz. İlk iki yazımızdan sonra Kotlin ile geliştirilen yazılım projelerinde Mockito kütüphanesi ile çalışırken karşılaştığımız en temel problemi sanırım […]

Kotlin ve Spring

Kotlin deneyimlerimi paylaşmaya devam ediyorum. Bu yazımızda da Kotlin ile kurumsal yazılım geliştirirken Spring Framework’ün kullanımından bahsedeceğim. Geçen yazımda da belirttiğim gibi Kotlin’in JVM uyumlu bir dil olması sayesinde mevcut Java kütüphanelerini Kotlin projelerimizde de kullanabiliyoruz. Ancak Hibernate örneğinde olduğu gibi Spring ve Spring Boot Framework açısından da, Kotlin’in varyasılan durumda sınıfları ve metotları final […]