Kotlin vs Java - ikisi arasındaki fark nedir?

Yazar: John Stephens
Yaratılış Tarihi: 24 Ocak Ayı 2021
Güncelleme Tarihi: 1 Temmuz 2024
Anonim
Kotlin mi Java mı ? Hangisini Öğrenmeliyim ?  Kotlin Java Karşılaştırması Kotlin vs Java
Video: Kotlin mi Java mı ? Hangisini Öğrenmeliyim ? Kotlin Java Karşılaştırması Kotlin vs Java

İçerik


Java, Android hakkında düşündüğünüzde akla ilk gelen programlama dili olabilir, ancak var Android geliştirme için Java kullanmak için. Aslında, Kotlin şimdi Google’ıntercihliAndroid için resmi dil!

Java hakkında daha fazla bilgi edinmek için Make Android Apps'ta Java kursuna ücretsiz giriş yapın.

Bugünlerde Android Studio, yerleşik Kotlin desteğiyle birlikte geliyor; bu nedenle Kotlin kodunu anlayan bir Android projesi oluşturmak, Android Studio’nun proje oluşturma sihirbazındaki bir onay kutusunu seçmek kadar kolay. Bu kararın esas olarak tercih edilebileceği noktaya kadar, seçenek fazla mesai için destek büyüdü.

Fakat Java'dan Kotlin'e geçiş yaparsanız, tam olarak ne kazanıyorsunuz? Kotlin'in hangi özellikleri var, bu Java'da yok ve tam tersi?

Bu yazıda, Kotlin ve Java arasındaki tüm büyük farkları inceleyeceğiz.


Kotlin vs Java, daha sonra daha kısa kodlar sunar - findViewByIds olmadan

Bir Kotlin sınıfını ve aynı işi yapan bir Java sınıfını karşılaştırırsanız, o zaman Kotlin sınıfı genel olarak çok daha özlü olacaktır, ancak özellikle Kotlin’in yazmanız gereken boyler kodunun miktarını ciddi şekilde azaltabileceği bir alan vardır: findViewByIds.

Kotlin Android Uzantıları, Aktivite dosyanızın içine bir Görünüm referansı göndermenize izin verir; bu noktada, bu Görünüm ile Faaliyetin bir parçasıymış gibi çalışabilirsiniz. Sonuç? Bir daha asla başka bir FindViewById yöntemi yazmak zorunda kalmayacaksınız!

Bu uzantıları kullanabilmeniz için, modül düzeyinde build.gradle dosyanıza ekstra bir eklenti eklemeniz gerekir (eklenti uygulayın: 'kotlin-android-extensions') ancak bundan sonra Görünümleri içe aktarmaya başlamak için hazırsınız. örneğin activity_main.xml dosyanız, textView kimliğine sahip bir TextView içeriyorsa, Aktivitenize aşağıdakileri eklersiniz:


ithalat kotlinx.android.synthetic.main.activity_main.textView

Bu kimliğe, sadece kimliğini kullanarak erişebilirsiniz:

textView.setText ("Merhaba Dünya")

Bu çok Java eşdeğerinden daha kısa:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Merhaba Dünya");

Kotlin varsayılan olarak null güvenlidir

NullPointerExceptions, Java geliştiricileri için büyük bir hayal kırıklığı kaynağıdır. Java, herhangi bir değişkene null atamanıza izin verir, ancak null değeri olan bir nesne başvurusu kullanmaya çalışırsanız, NullPointerException!

Ayrıca şunu da oku: Android tanıtımı için Kotiln

Kotlin'de, tüm türler varsayılan olarak geçersiz sayılmaz (boş değer alamaz). Kotlin kodunuzda null atamaya veya döndürmeye çalışırsanız, derleme zamanında başarısız olur, bu nedenle aşağıdaki satırlardan hiçbiri derlenmez:

val name: String = null

fun getName (): String = null

Eğer sen Gerçekten mi Kotlin'deki bir değişkene null değer atamak istiyorsanız, türden sonra bir soru işareti ekleyerek, açıkça bu değişkeni null olarak işaretlemeniz gerekir:

val numarası: Int? = boş

Bu, Kotlin'de NullPointerExceptions uygulamasıyla karşılaşmayı neredeyse imkansız kılar - aslında, bu istisna ile karşılaşırsanız, açık bir şekilde Kotlin'den bir tane atmasını istemeniz ya da NullPointerException'un harici Java kodundan kaynaklanmasından kaynaklanmaktadır.

Uzatma fonksiyonları

Kotlin, geliştiricilere yeni işlevsellik içeren bir sınıfı genişletme yeteneği verir; bu, her zaman önemli bir yöntemi kaçırdığını hissettiğiniz bir sınıf varsa idealdir!

Bu "uzantı işlevleri" Java'da kullanılamaz, ancak C # gibi Android geliştirme için kullanabileceğiniz diğer programlama dillerinde de bulunur.

İleriyi Oku: Yeni başlayanlar için Java eğitimi

Uzatmak istediğiniz sınıfın adını (‘String’ gibi) oluşturduğunuz fonksiyonun adına (‘styleString’) önceden ekleyerek bir uzantı işlevi oluşturursunuz:

fun String.styleString (): String {// Dizeye stil verin ve sonra onu geri getirin //}

Ardından, bu işlevi genişletilmiş sınıfın örneklerinde, üzerinden çağırabilirsiniz. notasyon, sanki o sınıfın bir parçasıymış gibi:

myString.styleString ()

Coroutines birinci sınıf vatandaşlar

Ağ G / Ç veya CPU yoğun iş gibi uzun süren bir işlem başlattığınızda, işlem tamamlanıncaya kadar çağıran iş parçacığı engellenir. Android varsayılan olarak tek iş parçacıklı olduğundan, ana iş parçacığını engellediğiniz anda uygulamanızın kullanıcı arayüzü donacak ve işlem tamamlanana kadar yanıt vermeyecektir.

Java'da, çözüm geleneksel olarak bu yoğun veya uzun süren çalışmayı gerçekleştirebileceğiniz bir arka plan iş parçacığı oluşturmak için olmuştur, ancak birden çok iş parçacığını yönetmek karmaşık, hataya açık kodlara yol açabilir ve yeni bir iş parçacığı oluşturmak pahalı bir işlemdir.

Kotlin'de ek iplikler oluşturabilirsiniz, ancak aynı zamanda coroutines kullanabilirsiniz. Coroutinler, ipliği engellemeden belirli bir noktada yürütmeyi askıya alarak ve daha sonra muhtemelen başka bir iş parçacığında bu işlevi devam ettirerek uzun süren ve yoğun işler gerçekleştirir. Bu, engelleyen olmayan bir senkronize olmayan kod oluşturmanıza olanak sağlar. görünüyor senkron ve bu nedenle daha açık, özlü ve insan tarafından okunabilir. Koroinler de yığınsızdır, bu yüzden dişlilere kıyasla daha düşük bellek kullanımına sahiptirler ve kapıyı asenkron / beklemede gibi ek zaman uyumsuz programlama stillerine açarlar.

İşaretli istisnalar yok

Kotlin istisnaları kontrol etmedi, bu yüzden istisnaları yakalamanız veya ilan etmeniz gerekmez.

Bunun sizi Kotlin'e çeken bir şey olup olmadığı veya Java'ya bağlı kalmak isteyip istemediğiniz, geliştirici topluluğunu bölen bir özellik olduğundan, kontrol edilen istisnalar hakkındaki görüşünüze bağlı olacaktır. Java kodunuzda karışıklık yapmaktan kaçınmak / denemek durumundaysanız, bu ihmalden memnun kalacaksınız, ancak işaretli istisnaların sizi hata kurtarma hakkında düşünmeye teşvik edeceğini ve nihayetinde daha sağlam oluşturmaya zorladığını fark ederseniz kod, o zaman bunu Java’nın Kotlin’e üstünlük sağladığı bir alan olarak görmeniz daha olasıdır.

Heyet için yerel destek

Kotlin, Java'nın aksine, “kalıtım üzerine kompozisyon” tasarım modelini birinci sınıf delegasyon (bazen kapalı delegasyon olarak bilinir) ile destekler. Temsilci, alıcı nesnenin işlemleri orijinal bağlamda yardımcı nesne olan ikinci bir temsilci nesnesine devrettiği yerdir.

Kotlin’in sınıf temsilcisi, çoklu miras almayı mümkün kılan mirasa bir alternatiftir. Bu arada, Kotlin’in yetki verilmiş özellikleri, örneğin birden fazla mülkün alıcıları ve belirleyicileri için aynı kodu tekrar kullanmanız gerektiğinde kodun çoğaltılmasını önlemeye yardımcı olur, ardından bu kodu devredilen bir mülke çekebilirsiniz. Özellik temsilcisinin getValue işleci işlevini ve isteğe bağlı olarak setValue işlecini tanımlaması gerekir:

sınıf Delegesi {operator fun getValue (...) ... ... ...} operator fun setValue (...) ... ... ...}}

Ardından, bir mülk yaratırken, bu mülk için alıcı ve ayarlayıcı işlevlerinin başka bir sınıf tarafından yönetildiğini beyan edebilirsiniz:

sınıf MyClass {var özellik: String by Delegate ()}

Veri sınıfları

Bir projenin veri saklamak dışında hiçbir şey yapmadan birden fazla sınıfa sahip olması alışılmadık bir durum değildir. Java'da, sınıflar çok az işlevselliğe sahip olsa da, kendinizi bu sınıflar için birçok kodlu kod yazarken bulacaksınız. Genellikle, bir yapıcı, verileri depolayacak alanlar, her alan için alıcı ve ayarlayıcı işlevleri, ayrıca hashCode (), equals () ve toString () işlevlerini tanımlamanız gerekir.

Kotlin'de, sınıf tanımınıza "data" anahtar kelimesini eklerseniz, derleyici tüm gerekli alıcıları ve ayarlayıcıları oluşturmak da dahil olmak üzere tüm bu işleri sizin için gerçekleştirir:

data sınıfı Tarih (var ay: Dize, var gün: Int)

Akıllı yayınlar

Java'da, genellikle türü denetlemeniz ve daha sonra, nesnenin yayınlanabileceğinin açık olduğu durumlarda bir nesneyi yayınlamanız gerekir.

Kotlin’in akıllı yayınları bu gereksiz yayınları sizin için kullanabilir; bu nedenle, eğer Kotlin’in “is” operatörü ile daha önce kontrol ettiyseniz, bir açıklama yapmanıza gerek yoktur. Örneğin, derleyici aşağıdaki almanın güvenli olduğunu bilir:

if (merhaba dizedir) {printString (merhaba)}

Yapıcılar için destek

Java'nın aksine, bir Kotlin sınıfı, bir sınıf kurucusuna ve bunları sınıf bildiriminize ekleyerek oluşturduğunuz bir ya da daha fazla ikincil kurucuya sahip olabilir:

sınıf MainActivity yapıcısı (firstName: String) {}

Örtük genişleyen dönüşümler için destek yok

Kotlin, sayılar için örtük genişletme dönüşümlerini desteklememektedir, bu nedenle daha küçük türler örtük olarak daha büyük türlere dönüştürülmez. Kotlin'de, bir Int değişkenine Byte türünde bir değer atamak istiyorsanız, o zaman açık bir dönüştürme gerçekleştirmeniz gerekir, Java ise gizli dönüşümleri desteklemektedir.

Kotlin ile açıklama işleme kütüphaneleri

Kotlin, bazı Java kütüphaneleri zaten RxKotlin gibi Kotlin uzantıları sağlamasına rağmen, açıklama işlemesine dayanan gelişmiş çerçeveler dahil olmak üzere mevcut tüm Java çerçevelerini ve kitaplıklarını destekler.

Ek açıklama işlemine dayanan bir Java kütüphanesi kullanmak istiyorsanız, Kotlin projenize eklemek, kullanarak bağımlılığı belirtmeniz gerekeceğinden biraz farklıdır. KOTLIN-kapt eklentisini kullanın ve ardından annotationProcessor yerine Kotlin Annotation işleme aracını (kapt) kullanın. Örneğin:

// Eklentiyi Uygula // Eklentiyi Uygula: Kotlin-Kapt // Kapt Konfigürasyonunu Kullanarak İlgili Bağımlılıkları Ekleyin // Bağımlılıkları {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Java ile Değiştirilebilirlik

Android geliştirme için Kotlin veya Java kullanıp kullanmayacağınızı tartışırken, üçüncü bir seçeneğin bulunduğunun farkında olmalısınız: ikisini de kullan. İki dil arasındaki tüm farklılıklara rağmen, Java ve Kotlin% 100 birlikte çalışabilir. Kotlin kodunu Java'dan arayabilir ve Java kodunu Kotlin'den arayabilirsiniz; böylece Kotlin ve Java sınıflarını aynı proje içinde yan yana getirmeniz mümkündür ve her şey yine de derlenir.

İki dil arasında hareket etmenin bu esnekliği, Kotlin'i aşamalı olarak mevcut bir projeye dahil etmenize izin verdiği için Kotlin'e başlarken kullanışlıdır, ancak her iki dili de kalıcı olarak kullanmayı tercih edebilirsiniz. Örneğin, Kotlin’de yazmayı tercih ettiğiniz bazı özellikler ve Java’da yazmayı daha kolay bulabileceğiniz bazı özellikler olabilir. Kotlin ve Java'nın her ikisi de bytecode'u derlediğinden, son kullanıcılarınız Java kodunuzun nerede bittiğini ve Kotlin kodunun nerede başladığını söyleyemez, bu nedenle Java'dan oluşan bir uygulamayı yayınlayabilmeniz için hiçbir neden yoktur. ve Kotlin kodu.

Kotlin'i kendiniz denemek istiyorsanız, Android Studio 3.0 Preview veya daha yeni bir sürümü yüklü olduğu sürece, başlamanın birkaç yolu vardır:

  • Yeni bir Android Studio projesi oluşturun. En kolay yöntem, yeni bir proje oluşturmak ve proje oluşturma sihirbazından "Kotlin desteğini ekle" onay kutusunu seçmektir.

  • Mevcut bir dizine bir Kotlin sınıfı ekleyin. Söz konusu dizini Control tuşunu basılı tutarak tıklayın, ardından ‘Dosya> Yeni> Kotlin Dosyası / Sınıfı’nı seçin. Android Studio, projenizi Kotlin'i destekleyecek şekilde yapılandırmanızı isteyen bir banner gösterecektir; "Yapılandır" bağlantısını tıklayın ve ekrandaki talimatları izleyin.

  • Mevcut Java dosyalarını Kotlin'e dönüştürün. Herhangi bir Java dosyasını bir Kotlin dönüştürücüsünden çalıştırarak, dosyayı Control-tıklatarak ve 'Kod> Java Dosyasını Kotlin Dosyasına Dönüştür'ü seçerek çalıştırabilirsiniz.

Sarma

Gördüğünüz gibi Kotlin'i Java'ya tercih etmenin birçok iyi nedeni var, ancak Java'nın üstün olduğu birkaç alan var. Belki de en önemlisi: Birçok Android geliştiricisi bu noktada Java ile daha aşinadır. Muhtemelen Kotlin-Java tartışması hem kısa zamanda hem de kendi yararına sahip olacaktı. Öyleyse, Kotlin’e geçiş yapacak mısınız, yoksa Java’nın Android geliştirme için hala en iyi seçenek olduğunu düşünüyor musunuz?

İleriyi Oku: Android geliştirme için Java sözdizimine giriş

Çarşamba günü, CA, an Francico, CA’daki amung Geliştirici Konferanı’nda, amung, amung Deneyimi yazılımını tamamen yenilediğini duyurdu. Yenilenmiş yeni yazılım taarımına One UI adı veri...

VentureBeat Bugün amung’un One UI’inin Galaxy Watch, Gear 3 ve Gear port akıllı kollarına geçtiğini bildirdi. Galaxy Watch Active'de bir kullanıcı arayüzü zaten mevcuttu....

Tavsiye Edilen