Kotlin vs Jawa - apa perbedaan antara keduanya?

Pengarang: John Stephens
Tanggal Pembuatan: 24 Januari 2021
Tanggal Pembaruan: 1 Juli 2024
Anonim
Kotlin vs Java | Java or Kotlin for Android Development | Kotlin Tutorial | Edureka
Video: Kotlin vs Java | Java or Kotlin for Android Development | Kotlin Tutorial | Edureka

Isi


Java mungkin masih menjadi bahasa pemrograman pertama yang muncul ketika Anda berpikir tentang Android, tetapi Anda tidak memiliki untuk menggunakan Java untuk pengembangan Android. Faktanya, Kotlin sekarang menjadi milik Googlelebih disukaibahasa resmi untuk Android!

Untuk mempelajari lebih lanjut tentang Java, dapatkan pengantar gratis untuk kursus Java di Make Android Apps.

Saat ini, Android Studio dilengkapi dengan dukungan Kotlin bawaan, sehingga membuat proyek Android yang memahami kode Kotlin semudah memilih kotak centang di panduan pembuatan proyek Android Studio. Dukungan telah tumbuh untuk opsi terlalu lembur, sampai-sampai keputusan ini sekarang terutama tergantung pada preferensi.

Tetapi jika Anda beralih dari Jawa ke Kotlin, apa yang sebenarnya Anda peroleh? Fitur apa yang dimiliki Kotlin, yang tidak dimiliki Java, dan sebaliknya?

Dalam artikel ini, kita akan melihat semua perbedaan utama antara Kotlin vs Jawa.


Kotlin vs Java, nanti menawarkan lebih banyak kode ringkas - tanpa findViewByIds

Jika Anda membandingkan kelas Kotlin dan kelas Java yang melakukan pekerjaan yang sama, maka kelas Kotlin umumnya akan jauh lebih ringkas, tetapi ada satu area khusus di mana Kotlin dapat secara serius mengurangi jumlah kode boilerplate yang perlu Anda tulis: findViewByIds.

Kotlin Android Extensions memungkinkan Anda untuk mengimpor referensi ke Tampilan ke file Aktivitas Anda, di titik mana Anda akan dapat bekerja dengan Tampilan itu seolah-olah itu adalah bagian dari Aktivitas. Hasil? Anda tidak perlu lagi menulis metode findViewById lainnya!

Sebelum Anda dapat menggunakan ekstensi ini, Anda perlu menambahkan plugin tambahan ke file build.gradle tingkat modul Anda (terapkan plugin: 'kotlin-android-extensions') tetapi setelah itu Anda siap untuk mulai mengimpor Tampilan, untuk contoh jika file activity_main.xml Anda berisi TextView dengan ID textView, maka Anda akan menambahkan yang berikut ini ke Aktivitas Anda:


import kotlinx.android.synthetic.main.activity_main.textView

Anda kemudian dapat mengakses TextView ini hanya dengan ID-nya:

textView.setText ("Hello World")

Ini adalah banyak lebih ringkas dari padanan Java:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Hello World");

Kotlin adalah null aman secara default

NullPointerExceptions adalah sumber frustrasi besar bagi pengembang Java. Java memungkinkan Anda untuk menetapkan nol ke variabel apa pun, tetapi jika Anda mencoba menggunakan referensi objek yang memiliki nilai nol, maka persiapkan diri Anda untuk menemukan NullPointerException!

Baca juga: Kotiln untuk pengenalan Android

Di Kotlin, semua tipe tidak dapat dibatalkan (tidak dapat memiliki nilai nol) secara default. Jika Anda mencoba untuk menetapkan atau mengembalikan nol dalam kode Kotlin Anda, maka itu akan gagal pada waktu kompilasi, sehingga tidak satu pun dari baris berikut ini yang akan dikompilasi:

nama val: String = null

fun getName (): String = null

Jika kamu sangat ingin menetapkan nilai nol ke variabel di Kotlin, maka Anda harus secara eksplisit menandai variabel itu sebagai nullable, dengan menambahkan tanda tanya setelah jenis:

nomor val: Int? = nol

Ini membuat hampir tidak mungkin untuk menemukan NullPointerExceptions di Kotlin - pada kenyataannya, jika Anda menemukan pengecualian ini, maka kemungkinan itu karena Anda secara eksplisit meminta Kotlin untuk melemparkan satu, atau NullPointerException berasal dari kode Java eksternal.

Fungsi ekstensi

Kotlin memberi pengembang kemampuan untuk memperluas kelas dengan fungsionalitas baru, yang ideal jika ada kelas yang Anda selalu merasa kehilangan metode penting!

'Fungsi ekstensi ini tidak tersedia di Jawa, meskipun tersedia dalam bahasa pemrograman lain yang dapat Anda gunakan untuk pengembangan Android, seperti C #.

Baca Selanjutnya: Tutorial Java untuk pemula

Anda membuat fungsi ekstensi dengan mengawali nama kelas yang ingin Anda rentangkan (seperti ‘String’) ke nama fungsi yang Anda buat (‘styleString’) misalnya:

fun String.styleString (): String {// Gaya string dan lalu kembalikan //}

Anda kemudian dapat memanggil fungsi ini pada instance dari kelas yang diperluas, melalui. notasi, seolah-olah itu adalah bagian dari kelas itu:

myString.styleString ()

Coroutine adalah warga negara kelas satu

Setiap kali Anda memulai operasi yang berjalan lama, seperti jaringan I / O atau kerja intensif CPU, utas panggilan diblokir sampai operasi selesai. Karena Android adalah utas tunggal secara default, segera setelah Anda memblokir utas utama, UI aplikasi Anda akan membeku, dan itu akan tetap tidak responsif sampai operasi selesai.

Di Jawa, solusinya secara tradisional adalah membuat utas latar di mana Anda dapat melakukan pekerjaan yang intensif atau berjalan lama ini, tetapi mengelola beberapa utas dapat menyebabkan kode yang kompleks dan rentan kesalahan, dan membuat utas baru adalah operasi yang mahal.

Meskipun Anda dapat membuat utas tambahan di Kotlin, Anda juga dapat menggunakan coroutine. Coroutine melakukan tugas-tugas jangka panjang dan intensif dengan menunda eksekusi pada titik tertentu tanpa memblokir utas, dan kemudian melanjutkan fungsi ini pada titik berikutnya, mungkin pada utas lainnya. Ini memungkinkan Anda membuat kode asinkron yang non-blocking itu terlihat sinkron, dan karenanya lebih jelas, ringkas dan mudah dibaca manusia. Coroutine juga stackless, sehingga mereka memiliki penggunaan memori yang lebih rendah dibandingkan dengan thread, dan mereka membuka pintu ke gaya tambahan pemrograman non-blocking asinkron, seperti async / menunggu.

Tidak ada pengecualian yang diperiksa

Kotlin tidak memiliki pengecekan pengecualian, jadi Anda tidak perlu menangkap atau mendeklarasikan pengecualian apa pun.

Apakah ini sesuatu yang menarik Anda ke Kotlin, atau membuat Anda ingin tetap menggunakan Java akan bergantung pada pendapat Anda tentang pengecualian yang dicentang, karena ini adalah fitur yang membagi komunitas pengembang. Jika Anda muak dengan coba / tangkap blok yang mengacaukan kode Java Anda, maka Anda akan senang dengan kelalaian ini, namun jika Anda menemukan bahwa pengecualian yang diperiksa mendorong Anda untuk berpikir tentang pemulihan kesalahan dan pada akhirnya mendorong Anda untuk membuat lebih kuat kode, maka Anda lebih cenderung melihat ini sebagai daerah di mana Jawa memiliki keunggulan atas Kotlin.

Dukungan asli untuk delegasi

Kotlin, tidak seperti Jawa, mendukung pola desain "komposisi lebih dari warisan", melalui delegasi kelas satu (kadang-kadang dikenal sebagai delegasi implisit). Delegasi adalah tempat objek penerima mendelegasikan operasi ke objek delegasi kedua, yang merupakan objek pembantu dengan konteks asli.

Delegasi kelas Kotlin adalah alternatif pewarisan yang memungkinkan untuk menggunakan pewarisan berganda. Sementara itu, properti yang didelegasikan Kotlin membantu mencegah duplikasi kode, misalnya jika Anda perlu menggunakan kembali kode yang sama untuk beberapa pengambil dan setter properti, maka Anda dapat mengekstrak kode ini ke dalam properti yang didelegasikan. Delegasi properti perlu mendefinisikan fungsi operator getValue dan, secara opsional, operator setValue:

Delegasi kelas {getValue kesenangan operator (...) ... ... ...} setValue menyenangkan operator (...) ... ... ...}}

Lalu, ketika Anda membuat properti, Anda dapat menyatakan bahwa fungsi pengambil dan penyetel untuk properti khusus ini ditangani oleh kelas lain:

class MyClass {var property: String by Delegate ()}

Kelas data

Bukan hal yang aneh bagi sebuah proyek untuk memiliki beberapa kelas yang tidak melakukan apa-apa selain menyimpan data. Di Jawa, Anda akan menemukan diri Anda menulis banyak kode boilerplate untuk kelas-kelas ini, meskipun kelas-kelas itu sendiri memiliki fungsi yang sangat sedikit. Biasanya, Anda harus menetapkan konstruktor, bidang untuk menyimpan data, fungsi pengambil dan penyetel untuk setiap bidang, ditambah fungsi kode hash (), equals () dan toString ().

Di Kotlin, jika Anda memasukkan kata kunci ‘data’ dalam definisi kelas Anda, maka kompiler akan melakukan semua pekerjaan ini untuk Anda, termasuk menghasilkan semua getter dan setter yang diperlukan:

Tanggal kelas data (bulan var: String, var hari: Int)

Gips cerdas

Di Jawa, Anda sering harus memeriksa jenis dan kemudian melemparkan objek dalam situasi di mana sudah jelas bahwa objek dapat dilemparkan.

Gips cerdas Kotlin dapat menangani gips redundan ini untuk Anda, jadi Anda tidak perlu memasukkan ke dalam pernyataan jika Anda sudah memeriksanya dengan operator ‘adalah’ Kotlin. Sebagai contoh, kompiler tahu bahwa para pemeran berikut aman:

if (hello is String) {printString (hello)}

Dukungan untuk konstruktor

Tidak seperti Java, kelas Kotlin dapat memiliki konstruktor primer dan satu atau lebih konstruktor sekunder, yang Anda buat dengan memasukkannya dalam deklarasi kelas Anda:

konstruktor MainActivity kelas (firstName: String) {}

Tidak ada dukungan untuk konversi pelebaran tersirat

Kotlin tidak mendukung konversi pelebaran tersirat untuk angka, jadi tipe yang lebih kecil tidak secara implisit dikonversi ke tipe yang lebih besar. Di Kotlin, jika Anda ingin menetapkan nilai tipe Byte ke variabel Int, maka Anda harus melakukan konversi eksplisit, sedangkan Java memiliki dukungan untuk konversi implisit.

Perpustakaan pemrosesan anotasi dengan Kotlin

Kotlin mendukung semua kerangka kerja Java dan pustaka, termasuk kerangka kerja lanjutan yang mengandalkan pemrosesan anotasi, meskipun beberapa pustaka Java sudah menyediakan ekstensi Kotlin, seperti RxKotlin.

Jika Anda ingin menggunakan pustaka Java yang mengandalkan pemrosesan anotasi, maka menambahkannya ke proyek Kotlin Anda sedikit berbeda karena Anda harus menentukan ketergantungan menggunakan kotlin-kapt plugin, dan kemudian gunakan alat pengolah Anotasi Kotlin (kapt) alih-alih AnotasiProcessor. Sebagai contoh:

// Terapkan plugin // terapkan plugin: kotlin-kapt // Tambahkan dependensi masing-masing menggunakan konfigurasi kapt // dependensi {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Dapat dipertukarkan dengan Java

Saat berdebat apakah akan menggunakan Kotlin atau Java untuk pengembangan Android, Anda harus menyadari bahwa ada opsi ketiga: gunakan keduanya. Terlepas dari semua perbedaan antara kedua bahasa, Jawa dan Kotlin 100% dapat dioperasikan. Anda dapat memanggil kode Kotlin dari Jawa, dan Anda dapat memanggil kode Java dari Kotlin, sehingga dimungkinkan untuk memiliki kelas Kotlin dan Java secara berdampingan dalam proyek yang sama, dan semuanya masih akan dikompilasi.

Fleksibilitas untuk berpindah di antara dua bahasa ini berguna saat Anda memulai dengan Kotlin karena memungkinkan Anda untuk memperkenalkan Kotlin ke proyek yang ada secara bertahap, tetapi Anda juga dapat memilih menggunakan kedua bahasa secara permanen. Misalnya, mungkin ada fitur-fitur tertentu yang Anda sukai untuk ditulis di Kotlin, dan fitur-fitur tertentu yang Anda temukan lebih mudah untuk ditulis di Jawa. Karena Kotlin dan Java keduanya mengkompilasi menjadi bytecode, pengguna akhir Anda tidak akan dapat mengetahui di mana kode Java Anda berakhir, dan kode Kotlin dimulai, jadi tidak ada alasan mengapa Anda tidak bisa merilis aplikasi yang terdiri dari Java dan Kode Kotlin.

Jika Anda ingin mencoba Kotlin sendiri, maka selama Anda memiliki Pratinjau Android Studio 3.0 atau yang lebih tinggi, ada beberapa cara untuk memulai:

  • Buat proyek Android Studio baru. Metode termudah adalah membuat proyek baru dan memilih kotak centang lude Sertakan dukungan Kotlin ’dari panduan pembuatan proyek.

  • Tambahkan kelas Kotlin ke direktori yang ada. Kontrol-klik direktori yang dimaksud, lalu pilih ‘File> Baru> File / Kelas Kotlin. 'Studio Android akan menampilkan spanduk yang meminta Anda mengonfigurasi proyek Anda untuk mendukung Kotlin; klik tautan ‘Konfigurasi’ dan ikuti instruksi pada layar.

  • Konversi file Java yang ada ke Kotlin. Anda dapat menjalankan file Java apa pun melalui konverter Kotlin, dengan mengklik-Control file tersebut dan memilih ‘Kode> Konversi File Java ke File Kotlin.’

Membungkus

Seperti yang Anda lihat ada banyak alasan bagus untuk memilih Kotlin daripada Jawa, namun ada beberapa daerah di mana Jawa lebih unggul. Mungkin yang paling menonjol: banyak pengembang Android lebih akrab dengan Java pada saat ini. Kemungkinan perdebatan Kotlin vs Jawa tidak akan diselesaikan dalam waktu dekat, dengan keduanya memiliki kelebihan masing-masing. Jadi, apakah Anda akan beralih ke Kotlin, atau apakah Anda merasa Java masih merupakan pilihan terbaik untuk pengembangan Android?

Baca Selanjutnya: Pengantar sintaks Java untuk pengembangan Android

Tidak ada keraguan bahwa pengenalan telepon eluler pertama adalah tonggak penting dalam komunikai di eluruh dunia. Namun, lompatan bear lain di bidang itu dilakukan 20 tahun lalu. Pada Mei 1999, Jepan...

Panggilan eluler pertama dilakukan pada tanggal ini 46 tahun yang lalu: 3 April 1973.Martin Cooper, eorang karyawan Motorola, menelepon ixth Avenue di NYC. Dia memanggil eorang teman yang bekerja untu...

Publikasi Yang Menarik