Kotlin – Mobilde Büyük Kavimler Göçü - Kim Korkar Javadan
Tersine Bakış – Ekip Çalışması
22 Nisan 2017
Rest Servis Best Practises 2
17 Temmuz 2017

Kotlin – Mobilde Büyük Kavimler Göçü

Kotlin – Mobilde Büyük Kavimler Göçü

Kotlin: 2011 yılında JetBrains firması tarafından geliştirilmeye başlanmış bir programlama dilidir. Kotlin; sade, güvenli ve yüksek performanslı bir dil olmayı hedeflemektedir. Google’ın Kotlin’i Android resmi dilleri arasına alması ile bu hedefini tutturduğunu ya da çok yakın olduğunu söyleyebiliriz.

Bence Kotlin’in değerini katbe kat artırabilecek en önemli özelliği akademik dünyadan değil yazılım sektöründen çıkmış olmasıdır. Yani öncelikli kaygısı biz yazılımcıların sıkıntılarını gidermektir. JetBrains ekibi, biz yazılımcıların sıkıntılarını baz alarak Kotlin’i geliştirdiğini söylemektedir. Arkasında yazılım sektörünü iyi bilen ve çok gelişmiş bir IDE’si olan firmanın bu girişimi bende oldukça sıcak bir ilgi yaratmaktadır. Bu ilginin aşk’a dönüşmesi için biraz daha zamana da ihtiyaç var sanki. Her ne kadar 6 yıldır geliştiriliyor olsa da challenge/kendini gösterme ve olgunlaşma sürecine Google’ın süper desteği ile başlagıç yapmış oldu.

Kotlin

Kotlin, uygulamala geliştirme süreçlerini hızlandırmak ve basitleştirmek için ortaya konmuş statik bir dildir. Yani bir değişkenin tipi String ise o değişkene Integer atayamazsınız, compiler buna izin vermez. Kotlin Compiler (kotlinc) Kotlin ile yazdığınız kaynak kodlarını Java Bytecode’a çevirir. Bir kaç satır kod ile kısaca göz atalım.

 

Kod’taki anlaşılabilirlik ve kısalma göz alıcı. Kotlin, biraz da günümüzde popüler olan functional proglamayı örnek almış. Çok da iyi yapmış. Bunun yanında,

Kotlin resmi dokümantasyonunda null reference’ı billion dolar mistake olarak ele alıyor. Bu nedenle Kotlin, Nullable ve Non-Null Type programlama sistematiğini benimsemiştir. Bu sayede Kotlin Compiler, null olabilecek referanslar ile asla null olamayacak referansları ayırt edebilir. Örneğin

Böyle bir atamada Kotlin Compiler error verecek ve kodu derlemeyecektir. Bu sorunu aşağıdaki gibi aşabiliriz.

Bir değişkene null referans ataması yapılacak ise değişkenin tipinin sonuna ? (soru işareti) eklenir. Yani String? ile değişkenin null değer alabileceği Kotline söylenmiş olur. Bu noktada Kotlin icin String ve String? birbirinden farklı iki tiptir.

Kotlin bu özelliklerin hiç birisini sıfırdan icat etmedi. Diğer programlama dillerinde olup Java içerisinde olmayan iyi özellikleri JVM’e taşıdı. Java ekosistem olarak aşırı büyüdüğünden güncelleme konusunda hızlı karar almada sorunlar yaşayabilmektedir. Bu açığı Kotlin gibi diller kapatmata çalışarak sektörde yer edinmeye çalışmaktadırlar. İyi de yapmaktalar.

Bir başka nokta da Kotlin ile Java arasında güçlü bir iletişim kurulduğundan Kotlin projelerinde doğrudan Java’ya, Java projelerinde de doğrudan Kotline yer vermek / çağrı yapmak mümkün. Hatta birinde yazılmış bir api- framework var ise diğerinde kolaylıkla kullanmak mümkün. Örneğin Apache Commons kütüphanesinin herhangi bir apisini doğrudan Kotlin ile kullanabilirsiniz. Bu özellik ile Kotlin, Java projelerine aşina olanlar için oldukça kolaylaştırcı bir yan etkiye sahip demektir.

Bir diğer nokta da IDE desteği ile Java projeleri hızlıca Kotline dönüştürülebilmektedir.

  • Android Studio Settings -> Plugins -> Install Jetbrains plugin -> Kotlin -> Install.
  • Code -> Convert to Kotlin Code.

denilerek dönüşüm yapılabilir.

Android

Kotlin Website ‘sini ziyaret ettiğinizde uygulamalarımızı JVM, Andorid, JS ve Native olarak build edebileceğimizi görmekteyiz. Bu noktadan baktığımızda özellikle Jvm ve Andorid ile Java bağımlılığı ortaya çıkacaktır. Aslında Kotlin; Clojure, Scala, JRuby, Jython, Groovy gibi JVM dillerinden bir tanesidir. Ve Andorid üzerinde çalışabilmek için ART/JVM’e ihtiyaç duyar. Yani Kotlin ile yazdığımız uygulamaları Android üzerinde çalıştırmak için bytecode’a çevirmeliyiz. Burada kısaca şöyle diyebiliriz: Android Studio 3.0 ile birlikte, Java gibi Kotlin ile de Android uygulama geliştirilebilir ve Android üzerinde çalıştırılabilir hale gelmiştir.

Bu parlatılmış duyuru – başlangıç ile en çok aldığım/karşılaştığım soruların başında “Java bitti mi?” gelmektedir. Ben bu soru yerine “Google ne yapmaya çalışıyor?” gibi bir soru ile muhatap olmayı tercih ederdim.

Google ne yapmaya çalışıyor?

İki konunun Google’ı Kotlin’e destek konusunda motive ettiğini düşünüyorum.

  1. Oracle ile yaşadığı lisanslama problemi. Öyleki 100 milyar doları bulan bir anlaşmazlıktan bahsediliyor. En kötü senaryoda Google, Android için oluşabilecek sıkıntıları en az zaiyatla atlatmak için elindeki seçenekleri artırmak istemiş olabilir. (bence çok doğru bir adım)
  2. Java ekosisteminin büyüklüğünden kaynaklanan yavaş güncelleme sorunları. Java kendi içerisindeki güncellemelerde ya da bazı modern teknikleri geç uyguladığından Google yeni nesil bir dil ile ilerleme durumunu değerlendirmektedir.

İkinci maddeyi biraz açalım. Kotlinden önce Google’ın Swift’e geçeceği bile konuşulmuştu. Ancak olmadı, Google risk almadı. Swift’e geçmek demek bu sefer Apple ile yüz göz olmak ve/ veya onun güncellemelerini beklemek demekti. Onun yerine daha genç daha dinamik olan ve geliştirme/güncelleme süreçlerinde doğrudan etki edebileceğini düşündüğü Kotlin’i seçti.

Java ve Android üzerinde geliştirme yapan tüm arkadaşlarımın ilk fırsatta Kotlin’i incelemelerini tavsiye ederim. Google böylesine bir desteği boşuna vermemiştir ve Kotlin’i elinden geldiğince büyütmek isteyecektir. Yani zamanla büyük kavimler göçünü başlatabilir. Ancak mevcut durumda herşeyi bırakıp Kotlin’e geçtik-geçiyoruz gibi bir durum yok. Kotlin, Android üzerinde geliştirme yapılabilecek resmi diller arasına girdi. Durum bundan ibarettir. Ve incelenmesinde, takip edilmesinde yarar vardır.

Birkaç devam makalesi ile de izlenimlerimi sizlerle paylaşmayı umuyorum.

Alper Akalın
Alper Akalın
Java Programmer || Software Architect || Author || Speaker

2 Comments

  1. Avatar Arda dedi ki:

    Merhaba,

    Bloglarınızı takip ediyorum ancak gördüğüm kadarıyla yazılarınızı paylaştığınız tarihler yazmıyor. Güncelliğinin takip edilebilmesi amacıyla tarih bilgilerini yazarsanız çok iyi olur. Ya da ben göremediysem yönlendirirseniz sevinirim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir