Kotlin ile Backend/Server Side Programlama

Gökhan Ayrancıoğlu
Delivery Hero Tech Hub
5 min readMar 31, 2021

2017 yılında Kotlin ilk kararlı sürüm ile ortaya çıktığında herkes gibi ben de sadece Android odaklı bir programlama dili ortaya çıktığını düşünüyordum. Zaman içinde ise backend ile kullanıldığını duymaya başladım ve merakımı cezbetti, araştırıp ilgilenmeye başladım. Server tarafında kullanımı popülerleşti ve şimdi ise inanılmaz bir ivme yakalamış durumda, bende kişisel ve enterprise uygulamalar geliştirmede yoğun olarak Kotlin kullanmaktayım.

Kotlin ile backend

Bir süredir profesyonel olarak backend geliştirmede kullandığım Kotlin ilk tercihim haline geldi. Bunu söyleyebilirim ki Kotlin yazmak gerçekten keyifli, çoğu geliştirmeyi oldukça kolaylaştırıyor ve dolayısıyla hızlandırıyor. Java kütüphanelerini kullanabiliyor olmak ve JVM üzerinde Kotlin’le geliştirilmiş uygulamaları koşabiliyor olmak Kotlin’in olgun bir dil haline gelmesinde önemli rol oynuyor.

Kotlin’in güzelliklerine ve ilgi çekiciliğine değinmeden önce nediri kısaca özetleyelim.

Kotlin Ne ki?

Daha önce hiç duymamış olanlar için Kotlin, hem nesneye yönelik hem de fonksiyonel programlamayı destekleyen açık kaynak ve statik olarak yazılmış bir programlama dilidir. Kotlin Google tarafından 2019 Mayıs ayında duyurduğu üzere Android geliştirme için resmi dil olarak kabul ediliyor. Dolayısıyla Kotlin’den söz edildiğinde aklıma ilk gelen şey android uygulamalar geliştirmede kullanıldığıydı. Biraz daha derinlere indiğimde ise sadece android’le kalmayıp çok daha fazlası olduğunu gördüm.

Jetbrains tarafından geliştirildiği için güçlü bir IDE desteğine ve Google yani android nedeniyle oluşan büyük bir topluluğa sahip durumda.

C#, Swift, Java veya Scala gibi benzer syntax’a ve kavramlara sahip, çoğu programlama dilinin neredeyse en iyi özelliklerini barındırıyor. JavaScript veya native olarak derleme yapılabiliyor. Cross-platform bir yazılım dili oluşunun yanı sıra en güçlü yanlarından biri JVM üzerinde çalışabiliyor olması. Dolayısıyla dil özellikleri bir backend dili olarak kullanılmasına oldukça uygunluk sağlıyor ve her geçen gün kullanımı artıyor.

Kotlin ilk olarak Java’ya alternatif olarak geliştirildi, dolasıyla Java’nın kullanıldığı her alanda Kotlin de kullanılabilir anlamına geliyor. Kotlin’i aktif olarak server tarafında Netflix, Jira, Expedia Group, Adobe gibi önemli şirketler kullanırken çoğu teknoloji şirketi bu dili kullanmaya başlıyor.

Neden Kotlin ve Güçlü Özellikleri Neler?

Bir dil öğrenmeden önce neden öğreneyim sorusunu incelemekte hep fayda görürüm. Ben burada sadece benim dikkatimi çeken özelliklerini belirteceğim, Kotlin’in bunlardan çok daha fazlası olduğunu unutmayalım.

  • Kotlin diğer dillerin en beğenilen özelliklerini bünyesinde barındırarak geliştirilmiştir. Görece yeni bir dil olduğu için; eski ya da deprecated API’lar, zamanı geçmiş konseptler, kullanılmayan yapılar içermez ve geleceğe yönelik bir geliştirme ortamı sunar.
  • Extension functions: Bir sınıf ya da obje için herhangi bir yerde istediğiniz gibi extension yazabilirsiniz. Örnekte String sınıfı için bir extension yazdık ve bu extension’ı istediğimiz yerde kullanabilir hale geldik. Ben sıkça sınıf dönüşümlerinde kullanıyorum. Örneğin Request olarak gelen objeyi business logic objesine çevirmekte extensionlara başvuruyorum.
Extensions String sınıfı örneği
  • Data classes: Veriler içeren sınıfları sıklıkla oluşturmak ve kullanmak durumunda kalırız. Kotlin’de bu o kadar kolay ki data ile tek satırda getter, setter, equals, hashcode ve toString’i içeren bir POJO oluşturabilirsiniz.
  • Null safety: NullpointerException’dan arındırılmış bir geliştirme sunar. NullPointer alacağınız yerlerde compile olmadan hata verir. Belki de alışması en zor kısmı null safety olabilir, ancak alışınca ve gerekliliğini özümseyince çok mantıklı olduğunu bir kez daha anlıyor insan, tecrübeyle sabittir. :)
  • Smart casts: Kotlin’de cast işlemleri de çok kolay yapılıyor. Bir nesnenin belirli bir türe ait olup olmadığını kontrol etmek için is/!is operatörünü kullanabiliyoruz.
  • Kotlin ile test yazmak gerçekten keyifli bir hal alıyor. Evet test yazmak oldukça kolaylaştırılmış durumda. Inline olarak sınıf tanımlayabiliyor ve kolayca mock objeleri oluşturabiliyorum. Çok daha fazla teste yönelik özelliği var. Kotlin test yazmayı güzelleştirdiği gibi sıkıcılıktan kurtarıp keyifli bir hale getiriyor. Hatta o kadar ki Kotlin’in en sevdiğim özelliği test yazmanın kolaylığı ve okunurluğun bir o kadar artmış olması diyebilirim.
  • Java ile yazılmış kütüphaneleri Kotlin projemizde kullanabiliyoruz. Java ile geliştirilmiş bütün kütüphaneleri kullanabilir halde olmak birçok şeyi kolayca implement edebiliyor olmak anlamına geliyor. Herhangi bir şeye ihtiyacınız olduğunda Java kütüphanesini bulmak çok kolay, dolayısıyla bunu Kotlin’de kullanmayı bir o kadar kolay gerçekleştirebiliriz.
  • Kotlin’i Java ile birlikte kullanabilirsiniz. Denemeye başlamak için Kotlin dependencylerini ekledikten sonra Kotlin sınıfları oluşturup direkt olarak java sınıflarınız üzerinden çağırabilirsiniz. Hatta Kotlin ile Java projenizin testlerini yazabilirsiniz.
Language.kt
Demo.java

Jetbrains’in etkisi ve getirdiği güzellikler:

  • Jetbrains geniş kitlelere ulaşan kullanıcı sayısı sayesinde geliştiricilerin isterlerini ve ne konularda zorlanıp hangi konularda ne gibi ihtiyaçlar olduğunu çok iyi analiz etmiş, yeni bir dil geliştirmek için ellerinde olan bu tarz analiz ve doneler ile dili geliştirmekte çok önemli bir rol oynamıştır. Kendi toolarını Kotlin kullanarak geliştirdiler ve dolayısıyla geliştirirken aslında Kotlin’in problemlerini release olana kadar çoktan çözmüş oldular.
  • Jetbrains’in Intellij ile birlikte harika dil desteği oldukça kolaylık sağlarken Java kodunu .kt uzantılı bir Kotlin dosyasına kopyaladığınızda Java’dan Kotlin’e dönüşüm yapabilmesi ise muazzam bir avantaj sağlıyor.

Bir dilin server-side kullanımı için framework desteği oldukça önemlidir. Java tarafında en popüler framework olan Spring’de Kotlin’i sorunsuzca ve güçlü bir şekilde destekliyor ve spring initializr direkt Kotlin’i seçenek olarak sunuyor. Kotlin ile Spring Boot harika bir iş ortaya çıkartıyor ki biz de yoğun olarak projelerimizde bu ikiliyi kullanıyoruz. Kotlin çoğu framework tarafından da destekleniyor;

  • Spring en yaygın kullanılan Java framework’ü ve Kotlin’i başlangıçta inialize edebililir şekilde sunmaktadır.
  • Ktor Jetbrains tarafından web uygulamaları geliştirmek için kullanılabilen framewoktür ve kotlin için var edilmiş diyebiliriz. En kısa zamanda Ktor ile denemelerde bulunacağım.
  • Quarkus Kubernetes’e yönelik geliştirilmiş ve popülerlik kazanan bir java frameworküdür ve Kotlin’i desteklemektedir.
  • Micronaut microservice mimarisi ve serveless uygulamalar başta olmak üzere Kotlin desteği sunan modern bir frameworktür.
  • Vert.x,Reactive web projeleri için kullanılan framework Kotlin’i, dökümanları da dahil olmak üzere desteklemektedir.
  • http4k Kotlin ile geliştirilmiştir ve HTTP uygulamarında kullanılabilir

TL;DR; Too Long, Don’t Read

Sözün özü Kotlin’i gözünüz kapalı backend uygulamaları için kullanabilirsiniz. Özellikle Java geliştirici iseniz, Kotlin’i hemen kullanmaya başlayın, testlerde güzel bir başlangıç noktası olabilir.

Eğer yeni bir dil öğrenmek için Kotlin’e başlayacaksanız hiç düşünmeden başlayabilirsiniz. Cross platform oluşu, native desteği ve modern bir dil oluşu Kotlin’in gelecekteki güvenini artırıyor.

— Bana ulaşmak için: Twitter, Linkedin

— Kodlar konuşsun: Github

— 1:1 görüşmeler için: Superpeer

https://gokhana.dev

Kaynakça

--

--

Gökhan Ayrancıoğlu
Delivery Hero Tech Hub

Software Engineer @Yemeksepeti • #Java • #Spring Boot • #Kotlin • #Spark • #Microservices • https://gokhana.dev