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

5 4,566

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 ‘ni 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.

5 Comments
  1. Can Alpay Çiftci says

    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)

    Oracle ile olan durum ile ilgisi yok. Hala java apisi kullanıyor. Mahkemelik olay için bir fark oluşturmuyor. Mahkemedeki olay Java Apisinin Google’ın kopyalayıp kopyalamadığı ile ilgili değil. Zaten kopyaladığı herkes tarafından kabul ediliyor. Soru Java Apisi kopyalanabilir olup olmadığı. Burada da çeşitli fikirler var.

    Ayrıca Swift hiç bir zaman bir seçenek olmadı android için. Bunun Apple ile alakası yok. Androidin altyapısı ile alakası var.

    1. Alper Akalın says

      Sanırım aşağıdaki cümle gözünüzden kaçmış.

      “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.”

      Burada Java’dan vazgeçilmediğine sadece Android’e bir eklendiğine dair kesin bir bilgi var. Yani sizinde belirttiğiniz gibi Java Api’sinden vazgeçilmiş değil. Bu konuya atıfta bulunan kesin bir cümlede aşağıdaki gibi yer almaktadır.

      “Kotlin website ‘ni 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.”

      Google’ın Oracle ile arasındaki davanın niteliği ve niceliği konusundaki bilgilendirmeniz için teşeşkür ederim. Ben o konuya değinmemeyi tercih etmiştim. Vurgu yapmak isteğim vahşi doğanın temek kanunu olan kendini koruma iç güdüsüdür. Google sadece Kotlin değil birçok dile yatırım yaparak dışa bağımlılığını azaltmaya çalışmaktadır. Kotlin ise son dönemde biraz parlatılmış olanıdır.

      Swift konusuna hiç girmeyelim. İlginize çok teşekkür ederim.

  2. Umut says

    Biraz detaycıyım, acaba ben mi yanlış biliyorum diye şüpheye düştüm, Java örneğinde void denmiş ama geri dönüş var. Yazı çok güzel ve açıklayıcı.

    1. Alper Akalın says

      Haklısınız, düzeltme yaplılmıştır. İlginize çok teşekkürler.

  3. Egemen BAKIM says

    Sayın Akalın farklı bakış açısı ve alternatif fikirleri ile ipuçları vererek çözüme ulaştırmayı amaçlayan bir kişidir. Kendisine yazılarını ve başarılarını devamını dilerim.

Email adresiniz yayınlanmayacaktır.