Kotlin Java’nın yerini mi alacak ?

Google I/O’da Kotlin’in Android yazilim gelistirmek icin kullanilabilecek resmi dillerden biri olarak aciklanmasinin ardindan, cogu Android gelistiriciyi buyuk bir merak sardi. Kotlin’i daha onceden duyanlar olmuş, hatta uygulamalarında bile kullananlar oldu. Ancak resmi olarak hayatimiza girmesi, büyük bir heyecan yaratti.

Kotlin nedir?

Kotlin, JVM ve JavaScript için statik olarak yazılmış bir programlama dilidir. Ayrıca herhangi bir VM(sanal makine) olmadan derlenebilmektedir. JetBrains tarafindan Saint Petersburg’daki yazilimcilarca gelistirilmektedir. Adi ise Saint Petersburg yakınındaki Kotlin Adası’ndan gelmektedir. Genel amaçlı bir dil olarak tanımlanan Kotlin, birlikte çalışabilirlik ve anlaşılabilirliği desteklemek için çok kullanışlı özellikler içermektedir. Kotlin projesi, artan verimlilik isteğinden doğdu. Amaç, kodlama deneyimini pratik ve etkili bir şekilde geliştirmekti.

Kotlin hem nesne yönelimli (Object-Oriented) hem de işlevsel programlama (Functional Programing) bir dildir.  OO ve FP stilleri ile uyumlu olup, geliştiricilerin her formdaki öğeleri içermesine olanak tanır. Kotlin, üst düzey işlevler( higher-order functions), işlev türleri ve lambdalar (function types and lambdas) için destek sunar, bu da fonksiyonel programlama için mükemmel bir seçimdir.

Kotlin’i Java ile kullanmak, aşırı kalıp kodu (boilerplate code) gerekliliğini ortadan kaldırır bu da Android geliştiricileri için büyük bir kazançtır. Kotlin ile şu anda Android uygulamaları, sunucu tarafı (server-side) geliştirme, web ve masaüstü uygulamaları geliştirilebilir.

Android odaklıdır. Kotlin, popüler entegre tasarım ortamlarını (IDE’ler) oluşturan aynı kişiler tarafından yazılmıştır, bu nedenle Kotlin’in arka planında, belirli problemleri çözmek isteyen profesyoneller mobil endüstrileri var.

Java’dan geçiş yapmak kolaydır. IntelliJ veya Android Studio’da, Java dosyalarını Kotlin’e dönüştürmek için Kotlin eklentisini kurmanız, Gradle yapı dosyalarına eklemeniz ve dönüştürmeyi tıklatmanız yeterlidir.

Çok yönlüdür ve Java ile birlikte çalışabilir. Geliştiriciler, mevcut Java kodunun yanında çalışacak yeni modülleri Kotlin’de yazabilir. Mevcut tüm Java kütüphaneleri ve çerçeveleri, JVM (Java Sanal Makinesi) ile uyumludur ve Gradle veya Maven oluşturma sistemleri ile entegre olabilir. 

Neden Android ekibi kotlini desteklemeye karar verdi?

En onemli sebep, Kotlinin Android uygulama yazmayi daha eglenceli ve kolay yapabilecek mukemmel bir dil olmasi. Kotlin ayni zamanda su anda calisan Android ekosistemine uyabilecek mukemmel bir parca gibi. Java programlama dili ile %100 uyumlu. Eger iki dili bir projede kullanarak denemek isterseniz, hali hazirda calisan projenize istediginiz kadar Kotlin kodu ekleyebilirsiniz, sikintisiz calisacagini goreceksiniz. Kotlin ile yazilmis kod icerisinden, Java ile yazilmis herhangi bir kodu rahatlikla cagirabilirsiniz. Bunlara ek olarak, herhangi bir gelistirici eforu sarfedilmeden elde edebilecegimiz pek cok otomatik uygulanan ozellikleri vardir. (Ornegin, getter ve setter methodlari siz ugrasmadan olusturulur). Bir kac Kotlin Annotation’i ile cevirmenin nasil yapilacagini da siz belirleyebilirsiniz.

Son olarak pek cok gelistirici bize Kotlin dilini cok sevdigini soyledi. (Android ekibimizdeki pek cok gelistirici de ayni dusunceyi paylasiyor.) Android platformu icin buyuk bir gelistirici toplulugu bulunan bu dil, seminerlerde de Android Ekibimize buyuk olcude soruluyordu. Biz de toplulugun istegini dinledik.

Peki Bu Java’nın sonu mu?

Bu konuda uygulama geliştiricilerden tarafından farklı görüşler var. Java, geliştiricilere yardımcı geniş bir kütüphaneye sahip olan ve açık kaynak araçları ile saygın bir programlama dilidir. Bununla birlikte, hiçbir dilin hatasız olduğunu ve uygulama geliştiricilerin işinin zahmetli olmadığını söylemek mümkün değildir söz konusu Java bile olsa. İşte bu zahmetli durumlarda Kotlin, baş ağrısı problemlere çözümler getirir ve Java ekosistemini bir bütün olarak iyileştirir. Ekim ayının güncellemesinden bu yana, Kotlin Android Studio için daha istikrarlı ve kusursuz, dil tamamen Kotlin’de yazılan projeleri destekleyecek kadar kararlı hale getirildi.

Bazı geliştiriciler önümüzdeki yıllarda Kotlin’in Android uygulaması geliştirme için Java’yı devreden çıkaracağına, Bazı uzmanlar ise, Kotlin ve Java’nın birlikte homojen bir şekilde kullanılacağına inanıyor.

Peki kod anlaminda ne gibi avantajlari var?

Kotlin’in en cok dikkat ceken yanlarini kisaca kod uzerinde anlatalim. Bunu yaparken Android Developer Blog’da kullanilan kodlarin bazilarini referans olarak alacagim.

  • Kotlin, uygulamanizda null olabilecek degerleri engellemek icin, degisken belirlerken bu kismi dusundugumuzden emin olmamizi istiyor.

var neverNull: String = “something”
var mightBeNull: String? = null // “?” degerin null olabilecegini gosterir

if (neverNull.length > 0) {   // Bu kabul edilebilir.

}

if (mightBeNull.length > 0) { // Compiler burada hata verecektir.

}

  • Named Parameters ve Default arguments

Named parameters, parametrelere deger atarken, atadigimiz degerin karsiliginin hangi alana yazildigini gormemize yardimci oluyor, dolayisi ile okunabilirligi arttirmis oluyoruz.

Default arguments ise parametrelere belirli sabit degerler verebilmemize yardimci oluyor, bu degerler parametrelere herhangi bir deger atanmadiginda o verilerin bos kalmasini engellemis oluyor.

fun orderPizza(size: Size,
pepperoni: Boolean = false,
mushrooms: Boolean = false,
ham: Boolean = false,
pineapple: Boolean = false,
pickles: Boolean = false,
sausage: Boolean = false,
peppers: Boolean = false,
onion: Boolean = false)
{

}

orderPizza(Size.LARGE, ham = true, mushrooms = true)

  • When kontrol mekanizmasi

Kotlin switch-case kontrolunu, when mekanizmasina cevirerek kullanmaktadir.

when {
password.equals(“password”) -> println(“Insecure password!”)
password.length < 4 -> println(“Too short!”)
else -> {
println(“Secure password!”)
}
}

  • Akilli Cast mekanizmasi

Java’da ozellikle Android gelistirirken pek cok yerde karsimiza cikan, nesneyi Cast ederek kullanma problemi, Kotlin’de kolayca cozuluyor.

if (obj is String) {
// Compiler obj degerini Stringe cast ediyor
// Dolayisiyla obj artik String classina ait nesneleri
// kullanabilir
if (obj.length > 0) {

}
}

Ayni sistemi when ile de kullanabiliriz

when (obj) {
is Cat -> obj.meow(…)
is Dog -> obj.woof(…)
else -> {

}
}

  • Extension Functions

Kotlin’in butun guzel ozelliklerinin yaninda benim favorim, Extension Functions. Mesela, Activity class’inda toast mesajini daha kolay yayinlamak icin, toast adinda bir method mu istiyorsunuz, basitce prefix olarak eklemek istediginiz class’in adini yazip sonuna methodu eklemeniz yeterli.

fun  Activity.toast(toastMessage : String,  duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, toastMessage, duration).show()
}

  • Destructuring Declarations

Kotlin’de data classlarini olusturmak da cok kolay. Getter ve setter methodlarina ihtiyac duymadan parametre adiyla deger atayabilir ya da degeri cagirabiliriz.

data class Order(val itemCode: String, val quantity: Int,
val price: Float)

Data classlarini olusturmak iste bu kadar kolay! Simdi konu basligimizdan bahsedelim.

fun getOrder(…): Order {

return Order(itemCode, quantity, price);
}
val (what, howMany, howMuch) = getOrder(…)

Yukaridaki kodda olan olay su; getOrder metodu cagirilir ve bize Order objesinin uc parametresiyle geri bir nesne uretir. Bu uc nesne otomatik olarak, what, howMany ve howMuch degerlerine atanir.

  • Lambdas

Lambda’lar cok karmasik programlama paradigmalarini cok basite indirgeyen mekanizmalardir. Kotlin bunu tamamen desteklemektedir.

fun allStrings(collection: Collection)=
collection.all { it is String }
// Yukaridaki kod parcacigi, bir Collection’daki tum ogelerin String // olup olmadigini kontrol etmektedir.

  • Developer blog uzerinde belirtilmemis ama benim cok begendigim baska bir ozelligi ise Higher Order Functions.

High Order Functions, bir fonksiyonu kendisine parametre olarak alabilen veya baska bir fonksiyonu return type olarak geri verebilen fonksiyonlara verilen isimdir.

fun <T> lock(lock: Lock, body: () -> T): T {
lock.lock()
try {
return body()
}
finally {
lock.unlock()
}
}

Geliştiricilerin Kotlin’i Öğrenmesi Gerekiyor mu?

Yine, bu konuda farklı görüşler var.

Android geliştiricileri için Kotlin’e geçmek tamamen gerekli değilse de, er ya da geç bu dil ile karşılaşacaklar. Zaten Java biliyorsanız, Kotlin’i öğrenmek sizin için basit olacaktır.

Kotlin’in Geleceği

Birkaç isim vermek için zaten Amazon, Pinterest, Netflix, Uber ve Trello da dahil olmak üzere Kotlin’e geçmiş çok sayıda devasa marka var. Google’ın ve geçiş yapan markaların desteğiyle, Kotlin’in büyüme eğrisine girmeye başlaması olağan görünüyor. Kotlin, kendisini Android uygulamaları için üstün bir programlama dili olarak hızlı bir şekilde kanıtlıyor ve geliştiricilere modern programlama deneyimi sunuyor.

Kotlin, Android’de Java ve C ++ ile yan yana çalışır. ve bu şu anlama geliyor, mevcut projenize Kotlin kodu ekleyebilirsiniz. Bu “iki yönlü kullanım” çok büyük bir kolaylık sağlıyor.  Kotlin ile yazdığınız kod, Java ile tamamen “birlikte çalışabilir”, bu, Java framelerini kullanabileceğiniz ve her ikisinin komutlarını kodunuzda herhangi bir sınırlama olmadan birleştirebileceğiniz anlamına geliyor.

Android Oreo, en yeni sürüm olan Android Studio 3.0 ile Kotlin dilini ve araçlarını destekleyecek. Android Studio’nun Resmi web sitesinde “Kotlinin etkileyici, özlü, genişletilebilir ve güçlü bir dil olduğunu, kod yazmanın ve yazılan kodu okumanın anlamanın  Kotlin ile daha eğlenceli olacağını açıkladı.” Ayrıca, Kotlin Javadan sonra Android Studio’ya eklenen ilk dil oldu.

Kaynak:  androiddeveloper – clearbridgemobile.com – medium.com/@muhammedsalihguler/

Bu yazımızı okuyan 1.959. takipçimizsiniz.

Süleyman Arif Yükselen

1983 Karabük doğumlu. İlk, Orta ve Lise eğitimini Karabük'te tamamladı. İstanbul Teknik Üniversitesi Elektrik-Elektronik Fakültesi Kontrol Mühendisliği bölümü mezunu. Çalışma hayatına Savunma Sanayi ile ilgili özel bir firmada Ar-Ge mühendisi olarak başladı. Sonrasında İstanbul'da yurt dışında işler yapan bir müteahhitlik firmasında çalıştı. Tarım ve kırsal kalkınmayı destekleme kurumu TKDK da Uzman olarak çalışmaktadır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir