Kotlin 1.2 ve Multiplatform Projeler Oluşturmak

Merhaba değerli okurlarım,

Bu yazıda 28 Kasım 2017 tarihinde yayınlanan Kotlin 1.2 sürümü hakkında sizlere bilgi vermeye çalışacağım. Kotlin kullanımına yönelik yeni ve büyük bir adım olarak değerlendirilen bu sürüm “Platformlar arasında kod paylaşımı” sloganıyla duyuruldu.

25 Nisan 2017 tarihinde yayınlanan Kotlin 1.1 sürümü ile Kotlin kodunun JavaScript kodlarına derlenmesi ve tarayıcılarda çalışması sağlandı. Kotlin 1.2 sürümünde ise JVM ve JavarScript arasındaki kodu yeniden kullanma özelliği eklendi. Bu sayede Kotlin kodlarının JVM olarak derlenmesi sağlandı. Kotlin 1.2 ile uygulamanızın iş mantığını bir kez yazıp projenizin tüm katmanlarında (backend, frontend ve Android App) yeniden kullanabilirsiniz. Çapraz platform kullanımı olarak tanımlanan bu özellik üzerine şu anda bir dizi kütüphane geliştiriliyor. Yani multiplatform şimdilik deneysel olarak bizlere sunulmaktadır.

IntelliJ IDEA 2017.3 sürümünde kullanıma hazır olarak gelen bu özelliği Android Studio veya daha eski olan Intellij IDEA yazılımlarında kullanmak için aşağıda verilen yolu takip etmeniz gerekiyor.

Multiplatform Projeler

Kotlin 1.2 sürümüyle gelen bu proje tipinde aynı kodu çoklu platformlara derleyebiliriz. Şu an için JVM ve JS olarak desteklenen bu projeye ilerleyen zamanlarda Native de eklenecektir.  Multiplatform proje tipi şu an için deneysel. Bu proje tipini seçerek, aynı kodu projenizin hem backend, hem frontend hem de Android uygulamasında kullanabilirsiniz.

Multiplatform projelerde uygulamanın kod yapısı aşağıdaki gibidir.

Multiplatform projeler üç çeşit modülden oluşmaktadır:

Common Module: Bu modül herhangi bir platforma özgü olmayan kodların bulunduğu modüldür. Çoklu platformlarda ortak modülün yazıldığı programlama dili Kotlindir. JVM ve JS kodları ise Kotlin kodunun platforma özgü derlenmesinden sonra üretilir. Ortak modüller sadece Kotlin kodunu içerir ve başka bir dilde kod içermez.

Platform Module: Belirli bir platform için common modülde bulunan bildirimlerin uygulanmasını sağlayan modüldür. Bu modüller Common modülü baz alarak platforma özgü yeni kodlar barındırır. Örneğin yukarıdaki şemada Common modül kotlin diliyle yazılmıştır. JVM ve JS sınıfları ise belirli platformlara özgü olduğu için Platform modüllerdir. Ancak her iki kod tüm bildirimleri ve özellikleri ortak modülden almaktadır. Kotlin/JVM platformunu hedefleyen modüller Java ve diğer JVM dillerinde kod içerebilir.

Reguler Module: Bu modüller belirli bir platformu hedefler ve platform modüllerine bağlı olarak elde edilir. Platform modüllerinin bağımlılıklarını içeren modüllerdir.

Derleme Performansı

Kotlin 1.2’de dikkat çeken gelişmelerden bir diğeri de derleme sürecini daha hızlı yapabilmesidir. Kotlin 1.1 sürümüyle kıyaslandığında %25’lik bir iyileşme sağlandığı görülmektedir. Aşağıda verilen grafikte JetBrains firmasına ait iki projenin Kotlin 1.1 ve Kotlin 1.2 sürümlerindeki derleme hızları görülmektedir.

Kotlin 1.2 ile gelen diğer yenilikler aşağıdaki gibidir:

  • Standart kitaplığın, Java 9’da tanıtılan bölünmüş paket kısıtlamalarına uyumlu olması
  • kotlin.math sınıfı ile matematiksel hesaplamaları desteklemesi
  • Geliştirilmiş tip çıkarımı
  • Diziler ve koleksiyonlar ile çalışmak için yeni standart kütüphanelerin oluşturulması

Kotlin 1.2 ile gelen dil ve standart kütüphaneler geriye doğru uyumludur. 1.0 veya 1.1 ile derlenen/çalıştırılan bir proje, 1.2 de çalışmaya devam edecektir.

Kotlin ile ilgili yeni gelişmeleri sizlerle paylaşmaya devam edeceğim. Şimdilik bu kadar.

Yazıyı sabırlar okuduğunuz için çok teşekkür ediyorum.