Kotlin

kotlin, java sanal makinesi (jvm) üzerinde çalışan ayrıca javascript kaynak koduna veya llvm ile makine koduna derlenebilen, statik tipli bir programlama dilidir. i̇lk geliştirme sankt-peterburg, rusya merkezli jetbrains programcıları tarafından yapılmıştır. i̇smi kotlin adası'ndan gelmektedir. java ile uyumlu sözdizimi olmasa da, kotlin java kodu ile birlikte çalışmak üzere tasarlanmıştır. kotlin, apple'ın swift diline benzemektedir.

tarihçe 
temmuz 2011'de jetbrains, jvm için yeni bir dil olan ve bir yıldır geliştirilmekte olan project kotlin'i duyurdu. jetbrains lideri dmitry jemerov, scala dışındaki çoğu dilin aradıkları özelliklere sahip olmadığını söylemiştir. ancak, scala'nın düşük derleme zamanını apaçık bir eksiklik olarak gösterdi. kotlin'in belirtilen hedeflerinden biri, java kadar çabuk derlemektir. şubat 2012'de jetbrains, projeyi apache 2 lisansı altında açık kaynak olarak yayınlamıştır.

kotlin v1.0, 15 şubat 2016'da yayınlanmıştır. bu ilk stabil sürümü olarak kabul edilir ve jetbrains bu sürümden itibaren geriye dönük uyumluluk taahhüdünde bulunmuştur.

kotlin, google i/o 2017'de resmi bir android geliştirme dili olarak duyurulmuştur. java ve c++'tan sonra android için tamamen desteklenen üçüncü dil oldu.

felsefe 
geliştirme sorumlusu andrey breslav, kotlin'in nesne yönelimli endüstriyel bir dil ve java'dan "daha iyi bir dil" olarak tasarlandığını söyledi. ancak hala java koduyla tamamen birlikte çalışabilir ve şirketler java'dan kotlin'e kademeli bir geçiş yapabilir.

sözdizimi 
kotlin değişken bildirimleri ve parametre listelerinin veri türü, değişken adından sonra gelir. scala ve groovy'de olduğu gibi, noktalı virgül bir deyim sonlandırıcısı olarak isteğe bağlıdır; çoğu durumda derleyici ifadenin sona erdiğini anlaması için bir satırsonu yeterlidir.

anlamsal 
nesnel tabanlı programlamanın sınıflarına ve metodlarına (kotlin'de üye fonksiyonları olarak adlandrılır) ek olarak, kotlin ayrıca fonksiyon kullanımı ile prosedürel programlamayı da destekler. c ve c++'da olduğu gibi, kotlin programının giriş noktası "main" olarak adlandırılan fonksiyondan, herhangi bir komut satırı argümanı içeren diziler geçer. perl ve unix/linux shell script stili dize enterpolasyonu desteklenmektedir. ayrıca tür çıkarımı da desteklenir.

merhaba, dünya! örneği
fun main(args : array<string>) {
  val kapsam = "dünya"
  println("merhaba, $kapsam!")
}

kotlin, null ve null olmayan veri türleri arasında bir ayrım yapar. tüm null nesneler tür isminin ardından "?" ile bildirilmelidir. null nesneler üzerinde yapılan işlemler geliştiricilerin özel bakımına ihtiyaç duyar: null kontrolü, değeri kullanmadan önce gerçekleştirilmelidir. kotlin, geliştiricilere yardımcı olmak için null-safe operatörleri sağlar:

 ?. (null şartlı operatörü) muhtemelen boş bir nesnenin bir metoduna veya özelliğine güvenle erişmek için kullanılabilir. nesne boş ise, metot çağrılmaz ve ifade null olarak değerlendirilir.
 ?: (boş birleştirici operatör) çoğu kez elvis operatorü olarak anılır:

fun merhabade(belki : string?, nulldegil : int) {
   // elvis operatorünü kullan
   val isim : string = belki ?: "yabancı"
   println("merhaba $isim")
}

güvenli navigasyon operatörünün kullanımına bir örnek:
// foo null ise, veya bar() ya da baz() null döndürürse, null döndürülür.
foo ?. bar() ?. baz()

araçlar 
 intellij idea, kotlin için bir eklentiye sahiptir.
 jetbrains ayrıca eclipse için eklenti desteği sunmaktadır. 
 apache maven, apache ant ve gradle dahil olmak üzere yayın java kurulum araçları desteklenir.

dış bağlantılar 
  
 web-demo ve örnekler

kaynakça 

java ortamı
java programlama dili ailesi
programlama dilleri
jsm programlama dilleri
nesne yönelimli programlama dilleri
apache lisansı kullanan yazılımlar
2011'de oluşturulan programlama dilleri