➡️Groovy’den Kotlin DSL’ye Geçiş

Ali Osman ARSLAN
Huawei Developers - Türkiye
4 min readDec 29, 2023
Gradle — Groovy vs Kotlin DSL

Giriş

Selamlar! Bu makalede, yazılım dünyasındaki renkli değişimlere odaklanarak, Groovy programlama dilinden Kotlin DSL’ye geçişin hikayesini anlatacağız. Geçmişte Groovy’nin ritminde sallandık, ancak şimdi sahnede Kotlin DSL’nin modern melodisi yükseliyor. Bu teknolojik evrim, yazılım geliştirme dünyasını etkileyen önemli bir dönemeçtir ve bu makalede bu değişimlerin nedenlerini, avantajlarını ve sürecini detaylı bir şekilde inceleyeceğiz.

Belki de şu anda Groovy ile yazdığınız kodlar sizi memnun ediyor, ancak Kotlin DSL’nin kapılarını araladığınızda, yeni bir dünya keşfedeceksiniz. Bu yazı, sizi Groovy’nin rahatlatıcı ve eğlenceli atmosferinden alıp, Kotlin DSL’nin sade, güçlü ve ölçeklenebilir dünyasına götürecek bir rehber niteliği taşıyor.

Bu süreç sadece teknik bir dönüşüm değil, aynı zamanda bir programcının bakış açısında da bir değişimi ifade ediyor. Dolayısıyla, bu makalede sadece kod satırlarına değil, aynı zamanda bu diller arasındaki felsefi farklara da odaklanacağız.

Groovy Nedir?

Groovy, Java Sanal Makinesi (JVM) üzerinde çalışan bir dinamik programlama dilidir ve Android uygulamalarının yapılandırma dosyaları, özellikle build.gradle dosyaları için sıklıkla kullanılır. Android Studio'da, Gradle adı verilen yapılandırma yöneticisi, Groovy tabanlı build.gradle dosyalarını kullanarak projenizi derlemek ve yönetmek için kullanılır. Groovy'nin basit ve okunabilir sözdizimi, Android projelerinin yapılandırma sürecini kolaylaştırır.

Örnek bir Android build.gradle dosyası (Groovy tabanlı):

android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 16
targetSdkVersion 30
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

Yukarıdaki örnekte, android bloğu altında uygulamanın derleme ayarları belirtilmiş ve buildTypes içinde release yapılandırması tanımlanmıştır.

Kotlin DSL Nedir?

Kotlin DSL (Domain Specific Language), Kotlin programlama dilinde yazılan ve belirli bir konuya özel olarak tasarlanmış dilleri ifade eder. Android uygulama geliştirmede, Gradle yapılandırma dosyalarını Kotlin DSL kullanarak yazmak daha yaygın hale gelmiştir. Kotlin DSL’nin daha güçlü ve ifade yeteneği yüksek yapısı, Android projelerinin yapılandırma sürecini daha etkili bir şekilde yönetmeyi sağlar.

Örnek bir Android build.gradle.kts dosyası (Kotlin DSL tabanlı):

android {
compileSdkVersion(30)
defaultConfig {
applicationId = "com.example.myapp"
minSdkVersion(16)
targetSdkVersion(30)
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
}

Yukarıdaki örnekte, aynı yapılandırma bilgileri Kotlin DSL kullanılarak ifade edilmiştir. compileSdkVersion, applicationId, ve minSdkVersion gibi özelliklerdeki değişikliklere dikkat edin. Kotlin DSL, Kotlin'in daha modern ve ifade gücü yüksek yapısını build.gradle dosyalarına getirir.

Nasıl Geçiş Yaparım?

Android projenizde Groovy tabanlı Gradle ile oluşturduktan sonra Kotlin DSL tabanlı Gradle’a geçiş yapmak için şu adımları takip edebilirsiniz:

  1. Proje Hazırlığı: İlk adım olarak, Groovy kodunuzu inceleyin ve eğer farklı bağımlılıklarınız varsa kontrol edin.
  2. Kotlin DSL Dosyalarını Oluşturma: Proje kök dizinine buildSrc klasörü oluşturun, bu klasörün içinebuild.gradle.kts dosyası oluşturun. Ardındansrc.main.java klasörü oluşturup, içineDependencies.kt dosyası oluşturabilirsiniz. Bağımlılıklarımızı buraya ekleyeceğiz

3. Build.Gradle.Kts Dosyası: Derleme yapabilmemiz için bu dosyayı aşağıdaki şekilde güncelleyin.

plugins {
`kotlin-dsl`
}

repositories {
google()
mavenCentral()
}

4. Bağımlılıkları Güncelleme: Kotlin DSL’ye geçiş yaptığımız için bağımlılık ve konfigürasyonlarımızı DSL’e uygun şekilde güncellememiz gerekiyor. Bu adımı aşağıdaki kod örneğiyle açıkladım.

Bazı kod örneklerine bakalım!

Groovy Örneği

android {
compileSdkVersion 30
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 16
targetSdkVersion 30
}
}
dependencies {
//Core
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.7.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'

// Retrofit
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.okhttp3:logging-interceptor:4.9.1"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
}

Kotlin DSL Örneği

android {
compileSdkVersion(30)
defaultConfig {
applicationId = "com.example.myapp"
minSdkVersion(16)
targetSdkVersion(30)
}
}
dependencies {
//Core
implementation(Dependencies.androidCore)
implementation(Dependencies.appCompat)
implementation(Dependencies.material)
implementation(Dependencies.constraintLayout)

// Retrofit
implementation(Dependencies.retrofit)
implementation(Dependencies.okhttpLoggingInterceptor)
implementation(Dependencies.gsonConverter)
}
    // Core
const val androidCore = "androidx.core:core-ktx:${Version.core_ktx}"
const val appCompat = "androidx.appcompat:appcompat:${Version.appCompat}"
const val material = "com.google.android.material:material:${Version.material}"
const val constraintLayout = "androidx.constraintlayout:constraintlayout:${Version.constraintLayout}"

// Retrofit
const val retrofit = "com.squareup.retrofit2:retrofit:${Version.retrofitVersion}"
const val okhttpLoggingInterceptor = "com.squareup.okhttp3:logging-interceptor:${Version.okhttpLoggingInterceptorVersion}"
const val gsonConverter = "com.squareup.retrofit2:converter-gson:${Version.gsonConverterVersion}"
    // Kotlin
const val core_ktx = "1.7.0"

// AppCompat
const val appCompat = "1.4.1"

// Material
const val material = "1.7.0-alpha01"

// ConstraintLayout
const val constraintLayout = "2.1.3"

// Retrofit
const val retrofitVersion = "2.9.0"
const val okhttpLoggingInterceptorVersion = "4.9.1"
const val gsonConverterVersion = "2.9.0"

Özet

Bu geçiş sürecinde, Android projenizin Gradle betiklerini Groovy’den Kotlin DSL’ye taşımanın temel adımlarını inceledik. Bu geçiş, projenizin daha modern, okunabilir ve sürdürülebilir bir yapıya kavuşmasını sağlar. Gradle, Kotlin DSL kullanımına olanak tanıdığı için bu geçiş, Android uygulama geliştirmenizde daha etkili ve keyifli bir deneyim sunabilir.

Referanslar

--

--