İçeriğe atla

Kotlin

Kotlin
ParadigmasıÇok paradigmalı; nesne yönelimli, fonksiyonel, declarative, emirsel (imperative), eş zamanlı (concurrent)
İlk çıkışı22 Temmuz 2011 (13 yıl önce) (2011-07-22)
TasarımcıJetBrains
GeliştiriciJetBrains ve açık kaynak katkıcıları
Kararlı sürümKotlin 1.9.22 (21 Kasım 2023 (10 ay önce) (2023-11-21))
EtkilendikleriJava, Scala, Groovy, C#, Gosu, JavaScript
PlatformuÇıktısı Java sanal makinesi bytecode ve JavaScript kaynağı
İşletim sistemiTüm JVM ya da JavaScript yorumlayıcılı platformlar
LisansApache 2
Olağan dosya uzantıları.kt, .kts
Web sitesikotlinlang.org

Kotlin, Java sanal makinesi (JVM) üzerinde çalışan ayrıca JavaScript kaynak koduna veya LLVM ile makine koduna derlenebilen, statik tipli bir programlama dilidir. İlk geliştirme Sankt-Peterburg, Rusya merkezli JetBrains programcıları tarafından yapılmıştır.[1] İ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.[2]

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.[3] JetBrains lideri Dmitry Jemerov, Scala dışındaki çoğu dilin aradıkları özelliklere sahip olmadığını söylemiştir.[3] 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.[4]

Kotlin v1.0, 15 Şubat 2016'da yayınlanmıştır.[5] 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.[6]

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.[7]

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.[8]

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.[9] 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

Dış bağlantılar

Kaynakça

  1. ^ Heiss, Janice (Nisan 2013). "The Advent of Kotlin: A Conversation with JetBrains' Andrey Breslav". oracle.com. Oracle Technology Network. 8 Mayıs 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2014. 
  2. ^ http://nilhcem.com/swift-is-like-kotlin/ 20 Mayıs 2017 tarihinde Wayback Machine sitesinde arşivlendi. Swift-is-like-kotlin
  3. ^ a b Krill, Paul (22 Temmuz 2011). "JetBrains readies JVM language Kotlin". infoworld.com. InfoWorld. 15 Temmuz 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2014. 
  4. ^ Waters, John (22 Şubat 2012). "Kotlin Goes Open Source". ADTmag.com/. 1105 Enterprise Computing Group. 29 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2014. 
  5. ^ "Kotlin 1.0 Released: Pragmatic Language for JVM and Android | Kotlin Blog". Blog.jetbrains.com. 15 Şubat 2016. 22 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Nisan 2017. 
  6. ^ "Kotlin Is Officially Joining The Android's Family, In Addition To Java And C++". Eyerys. 18 Mayıs 2017. 21 Mayıs 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Mayıs 2017. 
  7. ^ "JVM Languages Report extended interview with Kotlin creator Andrey Breslav". Zeroturnaround.com. 22 Nisan 2013. 19 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 2 Şubat 2014. 
  8. ^ "Semicolons". jetbrains.com. 23 Aralık 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Şubat 2014. 
  9. ^ "functions". jetbrains.com. 23 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Şubat 2014. 
  10. ^ "Kotlin :: JetBrains Plugin Repository". Plugins.jetbrains.com. 31 Mart 2017. 29 Mayıs 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Nisan 2017. 
  11. ^ "Getting Started with Eclipse Neon - Kotlin Programming Language". Kotlinlang.org. 10 Kasım 2016. 23 Ekim 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Nisan 2017. 
  12. ^ "JetBrains/kotlin-eclipse: Kotlin Plugin for Eclipse". GitHub. 16 Şubat 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 11 Nisan 2017. 
  13. ^ "Using Maven - Kotlin Programming Language". kotlinlang.org. 3 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mayıs 2017. 
  14. ^ "Using Ant - Kotlin Programming Language". kotlinlang.org. 3 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mayıs 2017. 
  15. ^ "Using Gradle - Kotlin Programming Language". kotlinlang.org. 9 Kasım 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mayıs 2017. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">C (programlama dili)</span> programlama dili

C, yapısal bir programlama dilidir. Bell Laboratuvarları'nda, Ken Thompson ve Dennis Ritchie tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiştir. Geliştirilme tarihi 1972 olmasına rağmen yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından yayımlanan "C Programlama Dili" kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin yapımında %95'lere varan oranda kullanılmış, hâlen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir.

<span class="mw-page-title-main">Scala (programlama dili)</span>

Scala, hem nesne yönelimli programlamayı hem de fonksiyonel programlamayı destekleyen, statik olarak yazılmış güçlü bir genel amaçlı programlama dilidir. Kısa ve öz olacak şekilde tasarlanan Scala'nın tasarım kararlarının çoğu Java eleştirilerini ele almayı amaçlıyor.

<span class="mw-page-title-main">JavaScript</span> programlama dili

JavaScript, HTML ve CSS ile birlikte World Wide Web'in temel teknolojilerinden biri olan programlama dilidir. Web sitelerinin %97'sinden fazlası, web sayfası hareketleri için istemci tarafında JavaScript kullanırlar ve kullanılan kodlar genellikle üçüncü taraf kitaplıkları içerir. Tüm büyük web tarayıcılarında, kaynak kodunu kullanıcıların cihazlarında yürütebilmek için özel bir JavaScript motoru bulunur.

<span class="mw-page-title-main">C♯</span> programlama dili

C#; Microsoft tarafından .NET Teknolojisi için geliştirilen modern bir programlama dilidir. Sözdizimi C-like bir deneyim sunar.

<span class="mw-page-title-main">C++</span> bir programlama dili

C++, Bjarne Stroustrup tarafından 1979 yılında Bell Laboratuvarları'nda geliştirilmeye başlanmış, C'yi kapsayan ve çok paradigmalı, yaygın olarak kullanılan, genel amaçlı bir programlama dilidir.

<span class="mw-page-title-main">Java</span> açık kaynak kodlu, nesneye yönelik, zeminden bağımsız, yüksek verimli, çok işlevli, yüksek seviye, adım adım işletilen bir programlama dili

Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış açık kaynak kodlu, nesneye yönelik, platform bağımsız, yüksek verimli, çok işlevli, yüksek seviye, hem yorumlanan hem de derlenen bir dildir.

Python, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.

<span class="mw-page-title-main">D (programlama dili)</span> çoklu paradigma programlama dili

D programlama dili, C++ dilinden daha yüksek seviyede ve hedef alınan işletim sistemiyle donanımlara göre uygulama yazılmasını kolaylaştıran bir "sistem ve uygulama" dilidir.

Ruby, nesneye yönelik, dinamik, reflektif ve esnek bir programlama dilidir. Ruby dili, Yukihiro Matsumoto tarafından Japonya'da tasarlanmaya ve geliştirilmeye başlanmıştır.

<span class="mw-page-title-main">Android</span> Mobil işletim sistemi

Android, Google ve Open Handset Alliance tarafından, cep telefonları, tabletler ve televizyonlar için geliştirilmekte olan, Linux tabanlı, özgür ve ücretsiz bir işletim sistemidir. Sistem açık kaynak kodlu olsa da, kodlarının ufak ama çok önemli bir kısmı Google tarafından kapalı tutulmaktadır. Google tarafından ücretsiz sunulmasının sebebi, sistemin daha hızlı ve çabuk gelişmesi, birçok popüler marka tarafından kullanılması ve bu sayede reklamlarının daha fazla kişiye ulaşmasını sağlamaktır. Google, Android sistemi üzerinde çalışan Google Play marketteki oyun ve uygulamalar üzerinde aldığı reklamları yayınlayarak para kazanmaktadır. Android'in desteklenen uygulama uzantısı ".apk"dır.

<span class="mw-page-title-main">Go (programlama dili)</span> programlama dili

Go, statik tipli, derlenen, yüksek seviyeli bir programlama dilidir. Robert Griesemer, Rob Pike ve Ken Thompson tarafından Google'da 2007 yılından itibaren geliştirilmeye başlanmıştır. Sözdizimi C'ye benzerdir fakat hafıza erişimi güvenlidir, kullanılmayan hafıza kaynakları sisteme otomatik olarak geri verilir, interface veri tipleri sayesinde yapısal tip sistemini destekler ve eşzamanlı (concurrent) çalışan işlemlerin (process) ortak hafıza kullanabilmelerinin yanında birbiriyle iletişim kurmalarını sağlayan ögelere sahiptir. Eski alan adı golang.org olduğundan sık sık golang ismiyle anılır ama asıl adı Go'dur.

Swift, Apple tarafından iOS ve macOS platformlarına iOS ve Mac uygulamaları geliştirmek için oluşturulan, derlenerek çalışan güçlü ve kullanımı kolay, nesne yönelimli bir programlama dili.

Dart, ilk kez Google tarafından geliştirilen ve daha sonraları ECMA tarafından standart (ECMA-408) haline getirilen açık kaynaklı ve genel-amaçlı bir programlama dilidir. Dart dili kullanılarak web, sunucu, mobil uygulamalar ve IoT cihazları geliştirilebilir.

<span class="mw-page-title-main">Android Studio</span> Android geliştirme için tasarlanan tümleşik geliştirme ortamı

Android Studio, Android için resmi tümleşik geliştirme ortamı. 16 Mayıs 2013 tarihinde Google I/O etkinliğinde tanıtılmıştır. Android Studio, IntelliJ IDEA'ya dayalı olup Android geliştirme için özel olarak tasarlanmıştır.

<span class="mw-page-title-main">JetBrains</span> Çek yazılım şirketi

JetBrains yazılım geliştirme ve proje yönetimi ile ilgili araçlar geliştiren bir yazılım şirketidir.

<span class="mw-page-title-main">IntelliJ IDEA</span>

IntelliJ IDEA Java'da bilgisayar yazılımı geliştirmek için kullanılan bir tümleşik geliştirme ortamıdır (IDE). JetBrains şirketi tarafından geliştirilmektedir. Hem Apache 2 lisansı altında yayınlanan topluluk sürümü hem de özel mülk ticari sürümü bulunmaktadır. Her ikisi de ticari amaçlı geliştirmelerde kullanılabilmektedir.

<span class="mw-page-title-main">Android yazılımı geliştirme</span>

Android yazılım geliştirmesi Android işletim sistemi için yeni uygulamaların oluşturulduğu süreçtir. Uygulamalar genellikle Android yazılım geliştirme kiti (SDK) kullanılarak Java programlama dilinde geliştirilir; ancak diğer geliştirme ortamları da mevcuttur. Google, Android uygulamaları Kotlin, Java ve C++ dilleri kullanılarak Android yazılım geliştirme kiti (SDK) kullanılarak yazılabilir" ve diğer dilleri kullanmak da mümkün olduğunu belirtiyor. Go, JavaScript, C, C++ veya Assembly gibi Java sanal makinesi (JVM) dışı tüm diller, muhtemelen kısıtlı API desteğiyle araçlar tarafından sağlanabilecek JVM dil kodunun yardımına ihtiyaç duyar.

<span class="mw-page-title-main">Hazelcast</span>

Bilgisayar kullanımında Hazelcast IMDG, Java tabanlı özgür bir bellek içi veri ızgarasıdır. Aynı zamanda ürünü geliştiren şirketin adıdır. Hazelcast şirketi, girişim sermayesi tarafından finanse edilmektedir ve merkezi San Mateo'dadır.

AppCode Swift, Objective-C, C++, C ve JavaScript geliştirmek için tümleşik geliştirme ortamı (IDE)'dır. JetBrains tarafından geliştirilmektedir. Ücretli bir uygulamadır.

Microsoft Windows uygulama programlamasında, OLE Otomasyonu, Microsoft tarafından oluşturulan süreçler arası bir iletişim mekanizmasıdır. Başlangıçta Visual Basic olan komut dosyası dilleri tarafından kullanılması amaçlanan Bileşen Nesne Modeli'nin (COM) bir alt kümesine dayanmaktadır, ancak şimdi Windows'ta birkaç dil tarafından kullanılmaktadır. IDispatch arabirimini uygulamak için tüm otomasyon nesneleri gereklidir. Otomasyon denetleyicileri adı verilen uygulamaların, diğer uygulamalar tarafından dışa aktarılan paylaşılan otomasyon nesnelerine erişebildiği ve bunları değiştirebildiği bir altyapı sağlamaktadır. Uygulamaların birbirini kontrol etmesi için daha eski bir mekanizma olan Dinamik Veri Değişimi'nin (DDE) yerini almaktadır. DDE'de olduğu gibi, OLE Otomasyonunda otomasyon denetleyicisi "istemci"dir ve otomasyon nesnelerini dışa aktaran uygulama "sunucu"dur.