Kotlin – Android’in Yeni Resmi Programlama Dili


 

Google her yıl düzenlediği I/O etkinliğinde bu sene biz Android geliştiricilerine bir süpriz yaptı. 17-19 Mayıs tarihleri arasında düzenlenen I/O 2017 etkinliğinde Android için yeni bir programlama dilini tanıttı. Bu dil JetBrains firmasının geliştirmiş olduğu Kotlin Programlama dili.Bu dil aynı java gibi JVM (Java Virtual Machine) üzerinde çalışabilen bir dildir. Yani bir defa yaz her platformda çalıştır mantığıyla çalışmaktadır. Java veya Kotlin dilinde yazılan bir program çalıştırıldığında öce byte kodlara dönüştürülmekte ve JVM’in okuyup / yorumlayabileceği bir hal almaktadır. Android’de kendi geliştirdiği JVM’ni (ART) kullanmaktadır.Yani Java ile yazdığımız uygulamamız çalıştırma anında veya ilk kurulumunda byte koda dönüştürülmekte ve Art üzerinde çalışmaktadır. Kotlin’de aynı yapıda olacağı için Kotlin’le yazılan programımız byte kodlara dönüştürülecek ve ART üzerinde çalışabilecektir.Syntax(Söz Dizimi) olarak java’ya benzemektedir ve OOP(Object Orianted Programing) bir dildir. Yani nesne tabanlı geliştirme yapılmaktadır. Java dili ile geliştirme yapmış olan arkadaşlarımız çok fazla zorlanmadan bu dil ile geliştirme yapabilecektir. Kotlin dilini geliştirmeye JetBrains ve Google beraber devam edecekler fakat dilin sahibi Google değil JetBrains firması olacaktır.Android Studio 3.0 ile birlikte Kotlin ile geliştirme yapmaya başlayabileceğiz.

Peki neden Kotlin?
JetBrains 6 yıl önce Kotlin programlama dili üzerinde calismaya başlamış ve Kotlin 1.0 ‘ın duyurulmasının üzerinden 1 yıl geçmiş.Yeni bir programlama dili öğrenmenin kime ne zararı olabilir ki? Sanırım Java’dan vazgeçmemize neden olabilecek bir dile benziyor.

Java Sanal Makinesi (JVM), java bytecode‘larını hafızaya yükleyip çalıştırabilen, çoğunlukla C++ ile yazılmış devasa bir programdır. Eğer derleyiciniz programlama dilinizi alıp JVM’in anlayacağı bytecode’a çevirebilirse yazdığınız programlar sanal makine üzerinde çalışabilir. Peki neden JVM’e ihtiyaç duyarız? JVM bize şunları sunar:

*Garbage Collection : Dinamik hafıza yönetimi sayesinde kullanılmayan instance’lar, yani çöpler, garbage collector tarafından temizlenir. 
*Write Once Run (almost) Every Where : Her platform için farklı bir sanal makine olduğu için bytecode’a çevrilen programınız Windows, Mac, Linux farketmeksizin aynı şekilde calışacaktır. 
*Performance & Robustness : JVM’in (reference implementation) 20 yıllık bir geçmişi var ve yıllardır finans, telekom, online alışveriş, oyun gibi bircok alanda kullanılıyor.

*Monitoring tools : Sanal makinenin durumunu izlemek için ve daha performanslı çalısmasını sağlamak için birçok araç mevcut. VisualVM, JProfiler, GCViewer, jmap, jstack bunlardan sadece bazıları.

JVM’in bedavadan yukarıdaki özellikleri sunması JVM üzerinde calisabilen Java’dan baska birçok dilin doğmasına yol açmıştır. Popupler JVM dillerinden bazıları : Kotlin, Clojure, Scala, JRuby, Jython, Groovy, LuaJ.

Tekrar Kotlin’e dönecek olursak;

1. Statically Typed(Statik Yazılan)

Kotlin, statically typed(Statik Yazılan) bir programlama dilidir. Kotlin compiler (kotlinc) kotlin ile yazdığınız kaynak kodlarını java byte code’a çevirir. Tipler derleme sırasında belirlidir. Ornegin bir değişkenin tipi String ise o değişkene Integer atayamazsınız, compiler buna izin vermez. Static (Java, C#, C++) ve dinamik (Python) programlama dilleri ile calışmış birisi olarak benim tercihim statik diller. Çünkü :

  • Static dillerde compiler’lar, kodunuzdaki hataları kodunuz daha çalişmadan (production’a gitmeden) söyleyebilir.
  • IDE’ler tipleri bildikleri için size daha gelişmiş öneriler sunabilir. Çok gelişmiş refactoring desteği sağlayabilirler.

2. Kotlin, Java ile Uyumlu Çalışabilir (Interoperable)

Kotlin’den Java’yı ve Java’dan Kotlin’i çağırmak mumkun. Bu iki farklı dunya arasindaki haberlesme o kadar pürüzsüz ki kullandığınız library’nin Java ile mi yoksa Kotlin ile mi yazıldığını anlamanız mümkün değil. İki dilin uyumu, mevcut java projelerimizin yeni ozelliklerini Kotlin ile geliştirme imkanı veriyor.
Java çok popüler bir programala dili olduğu için her ihtiyaca göre yazılmış kütüphaneler bulmak çok kolay (3rd party jars). Kotlin ile yazdığınız kodlar bu kütüphaneleınr hepsini kullanabilir.

3. Kotlin ile Güvendesiniz. Elveda NPE!

Kotlin’de Nullable ve Non-Null Type sistemin bir parçasıdır. Bu sayede Kotlin compiler null olabilecek referanslar ile asla null olamayacak referansları ayırt edebilir.
Bir değişkene null referans atamak isterseniz tipin sonuna ? (soru işareti) eklemeniz gerekir. Örneğin String? nullable string demektir ve Kotlin icin String ve String? birbirinden farklı iki tiptir.
Kotlin official dokümantasyonunda null reference’tan Billion dolar mistake olarak bahsediliyor. Kotlin type sistemi anladığım kadarıyla çok geniş bir konu olacak bu nedenle burada bahsetmeyeceğim.

4. Kotlin ile Daha Az Satır Kod

Yazılım projelerinin büyüklüğü (kodların satır sayısı) ile projelerdeki hata (bug) sayisi arasinda bir bağlantı olduğuna inanıyorum. Yani ne kadar çok kod o kadar çok hata bana göre.
Kotlin ile aynı şeyleri Java’ya göre daha az satır kod yazarak ifade edebiliriz. Aşağidaki özellikleri sayesinde Kotlin, Java’ya göre daha öz (concise) bir dildir.

  • Type inference
  • Extension method
  • Lambda function
  • Data class
  • Operator overloading

Kotlin bu özelliklerin hiç birisini sıfırdan var etmedi. Kotlin gelişmiş dillerdeki iyi özellikleri JVM’e taşıdı.

5. Kotlin ile Android Uygulaması Yazabiliriz

Kotlin compiler Java 6 uyumlu bytecode üretir. Bu sayede Kotlin ile Android uygulamaları geliştirmek mümkün.Ayrı bir başlık yapmaya gerek duymuyorum; Kotlin JetBrains tarafından geliştirilen bir programlama dili olduğu için IntelliJ Idea Kotlin desteği ile beraber geliyor. Ayrıca Eclipse’ten vazgeçemeyenler için de Eclipse plugin mevcut.

Kotlin – Android’in Yeni Resmi Programlama Dili

Giriş Yap

Hoşgeldin
Don't have an account?
Kayıt Ol

Şifreni Yenile

Back to
Giriş Yap

Kayıt Ol

Ekimize Katılmaya Hazırmısın

Back to
Giriş Yap
Choose A Format
Personality quiz
Series of questions that intends to reveal something about the personality
Trivia quiz
Series of questions with right and wrong answers that intends to check knowledge
Poll
Voting to make decisions or determine opinions
Story
Formatted Text with Embeds and Visuals