Kotlin Yazıları #1 Merhaba Dünya !

Kotlin Nedir ?

Bu yazı dizisinde sizlere Kotlin programlama dilinden dilim döndüğünce bahsedeceğim. Pek çok özelliği Java ile kıyaslayarak daha rahat anlatacağımı düşündüğüm için ucundan kıyısından Java bilmeniz sizin için iyi olacaktır.

JetBrains tarafından yazılmış olan, değişken türleri derleme zamanında belirlenen (statically typed) JVM'yi ve Javascripti hedef alan hem Nesne Tabanlı hem de Fonksiyonel Programlama yapılarına sahip olan bir programlama dilidir. Kotlin : 

  • Concise : Birkaç kelime ile birçok bilgi verebilir. Kısa ve kapsamlıdır. Yapmak istediğiniz iş için gereken kod miktarını azaltır.
  • Expressive : Daha okunabilir ve anlaşılabilir bir dildir.
  • Safe : Hata üretme ihtimalinizi azaltır.
  • Versatile : JVM ve JavaScript'i hedef alarak bir çok yerde çalışır.
  • Interoperable : Kotlin kodundan Java kodu, Java kodundan da Kotlin kodu yazabilmenizi sağlar.

Java'nın bazı problemleri

  1. Null Reference Hataları
  2. Ham tipler (Raw Type)
    List numbers = getNumberList();
    int sum = 0;
    for (Object num : numbers) {
         sum += num; // Unchecked Cast
    }
  3. Kovaryant (Eşdeğişken) diziler :    
    String[] strings = {"hello"};
    Object[] objects = strings;
    objects[0] = 1; // Java.Lang.ArrayStore.Exception
        
  4. Sadece derleme zamanında kullanılabilen Generic tipler. 

Kotlin Neler Ekliyor?

  • Lambda
  • Null-güvenliği
  • Birincil Constructorlar
  • Inline fonksiyonlar
  • Tip bağımsızlık
  • ...

Kotlin Kodu Çalıştıran Derleyiciler

Java çalıştıran IDE'lerin geneli Kotlin de çalıştırmaktadır. IntelliJ IDEAAndroid StudioEclipse ve NetBeans. Ek olarak command line compiler da Kotlin uyumludur.

Build tool olarak da JVM tarafında, ana inşa araçları olan GradleMavenAnt, ve Kobalt Kotlinle çalışabilmektedir.

Ben NetBeans seven, ne zaman canı Java yazmak istese eli NetBeans'e giden birisiyim. Ancak Android Studio 3.0 Stable Channelda yayınlanana kadar bu yazı dizisine Kotlin'in resmi sitesindeki Try online editöründen devam edeceğim.

Merhaba Dünya ! Kotlin Fonksiyonları

fun main(args: Array<String>) : Unit {
    println("Merhaba Dünya !")
}

fun :  Fonksiyon tanımlamak için kullanılan anahtar kelimedir.

var : değişken tanımlamak için kullanılan anahtar kelimedir. C# ta da aynı kelime bulunmaktadır.

val : değeri değiştirilemeyecek yerel değişkenler için kullanılır. Java'da final anahtar kelimesine karşılık gelmektedir.

main : fun anahtar kelimesinden sonra gelen kelimeler fonksiyonun ismini belirtir.

args : fonksiyon isminin ardından fonksiyon parametreleri yazılır. Bu parametrelerin sırası Java dakinin tam tersidir.
Önce parametre ismi ardından parametrenin türü yazılır. Ve bunlar 2 nokta üst üste ( : ) işareti ile ayrılır.

Unit : Eğer methodun herhangi bir parametre dönmesi gerekiyorsa döneceği tür parametre parantezinin kapanıp
fonksiyonun köşeli parantezinin açıldığı yere yazılır. Java'daki void i karşılar. Unit i yazmayabiliriz. Kod çalışacaktır.

println : Kotlin Standart kütüphanesinde bulunan, standart bir fonksiyondur. Java'da System.out.println(""); karşılığıdır.

fun main(args: Array<String>) {
    var name = "Dünya"
    println("Merhaba " + name)
    println("Merhaba $name")
}

$ İşareti : Klasik Java String birleştirme Kotlin'de kullanılabilir durumda. Ancak Dolar işareti ile String birleştirmeyı de Kotlin desteklemekte.

fun main(args: Array<String>) {
    var bigInt = Int.MAX_VALUE
    var smallestInt = Int.MIN_VALUE
    println("BigInt " + bigInt)
    println("SmallestInt $smallestInt")
}

Tip Dönüştürme (Casting)

fun main(args: Array<String>) {
    println("3.14 => " + (3.14.toInt()))
    println("A  => " + ('A'.toInt()))
    println("65 => " + (65.toChar()))
}


Output: 

3.14 => 3
A => 65
65 => A

Kaynak : 

Bu yazı https://kotlinlang.org/docs/reference/  ve https://news.realm.io/news/droidcon-michael-pardo-kotlin/ Kaynaklarından faydalanılarak hazırlanmıştır.

Blog yazılarına abone olmak ister misiniz ?

Her yeni blog yazısı çıktığında veya soru yayınlandığında bildirim almak için e-mail adresinizi yazmanız yeterli.