Kotlin vs Java - apakah perbezaan antara keduanya?

Pengarang: John Stephens
Tarikh Penciptaan: 24 Januari 2021
Tarikh Kemas Kini: 1 Julai 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

Kandungan


Java mungkin masih menjadi bahasa pengaturcaraan pertama yang muncul di fikiran apabila anda berfikir tentang Android, tetapi anda tidak mempunyai untuk menggunakan pembangunan Java untuk Android. Malah, Kotlin kini Googlepilihanbahasa rasmi untuk Android!

Untuk mengetahui lebih lanjut tentang Java, dapatkan pengenalan percuma untuk kursus Java di Make Android Apps.

Todaym, Android Studio mengangkut sokongan Kotlin yang terbina dalam, jadi mewujudkan satu projek Android yang memahami kod Kotlin semudah memilih kotak pilihan dalam wizard penciptaan projek Android Studio. Sokongan telah berkembang untuk pilihan terlalu masa, sehingga keputusan ini sekarang datang ke keutamaan.

Tetapi jika anda membuat suis dari Jawa ke Kotlin, apa sebenarnya yang anda dapatkan? Ciri-ciri apa yang ada di Kotlin, bahawa Jawa tidak, dan sebaliknya?

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


Kotlin vs Java, yang kemudiannya menawarkan lebih banyak kod ringkas - tanpa findViewByIds

Jika anda membandingkan kelas Kotlin dan kelas Java yang melakukan kerja yang sama, maka kelas Kotlin pada umumnya akan menjadi lebih ringkas, tetapi terdapat satu kawasan khususnya di mana Kotlin dapat mengurangkan jumlah kod boilerplate yang anda perlukan untuk menulis: findViewByIds.

Sambungan Android Kotlin membenarkan anda untuk mengimport rujukan kepada Paparan ke dalam fail Aktiviti anda, di mana anda boleh bekerja dengan View itu seolah-olah ia adalah sebahagian daripada Aktiviti. Keputusan? Anda tidak perlu menulis lagi kaedah findViewById!

Sebelum anda boleh menggunakan sambungan ini, anda perlu menambah plugin tambahan untuk fail build.gradle tingkat modul (menggunakan plugin: 'kotlin-android-extensions') tetapi selepas itu anda sudah bersedia untuk mula mengimport Views, untuk contohnya jika file activity_main.xml anda mengandungi TextView dengan ID textView, maka anda akan menambahkan yang berikut ke Aktiviti anda:


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

Anda kemudian boleh mengakses TextView ini menggunakan ID sahaja:

textView.setText ("Hello World")

Ini adalah banyak lebih singkat daripada setara Java:

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

Kotlin adalah batal selamat secara lalai

NullPointerExceptions adalah sumber kekecewaan besar bagi pemaju Java. Java membolehkan anda memberikan nol ke mana-mana pemboleh ubah, tetapi jika anda cuba menggunakan rujukan objek yang mempunyai nilai nol, maka jaga diri anda untuk menghadapi NullPointerException!

Juga baca: Kotiln untuk pengenalan Android

Di Kotlin, semua jenis tidak boleh dibatalkan (tidak dapat memegang nilai nol) secara lalai. Sekiranya anda cuba memberikan atau mengembalikan batal dalam kod Kotlin anda, maka ia akan gagal pada waktu yang dikompilasi, oleh itu tidak satu pun baris berikut akan disusun:

nama val: String = null

menyeronokkan getName (): String = null

Jika awak benar-benar mahu memberikan nilai nol ke pembolehubah di Kotlin, maka anda perlu menandakan pemboleh ubah secara eksplisit dengan jelas, dengan menambah tanda tanya selepas jenis:

nombor val: Int? = null

Ini menjadikan hampir mustahil untuk menemui NullPointerExceptions di Kotlin - sebenarnya, jika anda menghadapi pengecualian ini, maka kemungkinannya adalah kerana anda secara jelas meminta Kotlin untuk membuangnya, atau NullPointerException berasal dari kod Java luar.

Fungsi sambungan

Kotlin memberikan pemaju keupayaan untuk memanjangkan kelas dengan fungsi baru, yang ideal jika terdapat kelas yang selalu anda rasa hilang kaedah yang penting!

Fungsi 'lanjutan' ini tidak tersedia di Java, walaupun ia tersedia dalam bahasa pengaturcaraan lain yang dapat anda gunakan untuk pembangunan Android, seperti C #.

Baca Seterusnya: Tutorial Java untuk pemula

Anda membuat fungsi sambungan dengan memberi nama nama kelas yang ingin anda lanjutan (seperti 'String') ke nama fungsi yang anda buat ('styleString') sebagai contoh:

bersenang-senang String.styleString (): String {// Gaya rentetan dan kemudian kembalikan // //

Anda kemudian boleh panggil fungsi ini pada contoh kelas lanjutan, melalui. notasi, seolah-olah ia adalah sebahagian daripada kelas itu:

myString.styleString ()

Coroutines adalah warga kelas pertama

Apabila anda memulakan operasi jangka panjang, seperti rangkaian I / O atau kerja intensif CPU, benang panggilan disekat sehingga operasi selesai. Memandangkan Android adalah batal tunggal secara lalai, sebaik sahaja anda menyekat benang utama UI aplikasi anda akan membekukan, dan ia akan tetap tidak bertindak balas sehingga operasi selesai.

Di Jawa, penyelesaiannya secara tradisinya adalah untuk membuat thread latar belakang di mana anda boleh melakukan kerja intensif atau jangka panjang ini, tetapi mengurus pelbagai thread boleh menyebabkan kompleks, kod rawan ralat, dan membuat thread baru adalah operasi yang mahal.

Walaupun anda boleh membuat benang tambahan di Kotlin, anda juga boleh menggunakan coroutines. Coroutines melakukan tugas yang panjang dan intensif dengan menggantung pelaksanaan pada titik tertentu tanpa menyekat thread, dan kemudian meneruskan fungsi ini pada titik kemudian, mungkin pada benang lain. Ini membolehkan anda membuat kod asynchronous yang tidak menyekatnya kelihatan bersesuaian, dan oleh itu lebih jelas, ringkas dan mudah dibaca oleh manusia. Coroutines juga tidak berkompromi, jadi mereka mempunyai penggunaan memori yang lebih rendah berbanding dengan benang, dan mereka membuka pintu kepada gaya tambahan program pengatur tidak asinkron, seperti async / menunggu.

Tiada pengecualian diperiksa

Kotlin tidak mempunyai pengecualian diperiksa, jadi anda tidak perlu menangkap atau mengisytiharkan sebarang pengecualian.

Sama ada ini adalah sesuatu yang menarik perhatian anda kepada Kotlin, atau membuat anda mahu melekat dengan Java akan bergantung kepada pendapat pengecualian anda, kerana ini adalah ciri yang membahagikan komuniti pemaju. Sekiranya anda sakit cubaan / menangkap blok yang memecahkan kod Java anda, maka anda akan gembira dengan peninggalan ini, tetapi jika anda mendapati pengecualian yang disyorkan ini mendorong anda untuk memikirkan pemulihan ralat dan akhirnya mendorong anda ke arah mewujudkan lebih mantap kod, maka anda lebih cenderung untuk melihat ini sebagai kawasan di mana Jawa mempunyai tepi Kotlin.

Sokongan asli untuk delegasi

Kotlin, tidak seperti Jawa, menyokong corak rekaan "komposisi ke atas warisan", melalui perwakilan kelas pertama (kadang-kadang dikenali sebagai delegasi tersirat). Perwakilan adalah di mana objek penerima mewakilkan operasi kepada objek perwakilan kedua, yang merupakan objek penolong dengan konteks asal.

Delegasi kelas Kotlin adalah alternatif kepada warisan yang memungkinkan untuk menggunakan warisan berganda. Sementara itu, sifat yang diwakilkan oleh Kotlin membantu mencegah duplikasi kod, contohnya jika anda perlu menggunakan semula kod yang sama untuk mendapatkan beberapa sifat 'getters dan setters, maka anda boleh mengekstrak kod ini ke dalam harta yang diwakilkan. Perwakilan hartanah perlu menentukan fungsi pengendali getValue dan, secara opsyen, pengendali setValue:

kelas Delegate {operator menyenangkan getValue (...) ... ... ...} operator setValue menyeronokkan (...) ... ... ...}}

Kemudian, apabila anda membuat harta, anda boleh mengisytiharkan bahawa fungsi getter dan setter untuk harta tertentu ini dikendalikan oleh kelas lain:

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

Kelas data

Ia bukan sesuatu yang luar biasa untuk projek mempunyai banyak kelas yang tidak melakukan apa-apa tetapi memegang data. Di Jawa, anda akan mendapati diri anda menulis banyak kod boilerplate untuk kelas ini, walaupun kelasnya sendiri mempunyai fungsi yang sangat sedikit. Biasanya, anda perlu menentukan pembina, bidang untuk menyimpan data, fungsi getter dan setter untuk setiap medan, ditambah fungsi hashCode (), sama () dan toString ().

Di Kotlin, jika anda menyertakan kata kunci 'data' dalam definisi kelas anda, maka pengkompil akan melakukan semua kerja ini untuk anda, termasuk menghasilkan semua getters dan peneters yang diperlukan:

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

Pelakon pintar

Di Jawa, anda sering perlu menyemak jenis dan kemudian membuang objek dalam keadaan di mana ia sudah jelas bahawa objek itu boleh dibuang.

Pelakon pintar Kotlin boleh mengendalikan pelakon yang berlebihan ini untuk anda, jadi anda tidak perlu menghantar di dalam pernyataan jika anda sudah memeriksa dengan operator 'adalah' Kotlin. Contohnya, pengkompil tahu bahawa pelakon berikut selamat:

jika (hello adalah String) {printString (hello)}

Sokongan untuk pembina

Tidak seperti Jawa, kelas Kotlin dapat mempunyai pembangun utama dan satu atau lebih pembangun sekunder, yang Anda buat dengan memasukkannya dalam deklarasi kelas Anda:

pembina UtamaActivity constructor (firstName: String) {}

Tiada sokongan untuk penukaran pelebaran tersirat

Kotlin tidak menyokong penukaran pelebaran tersembunyi untuk nombor, jadi jenis yang lebih kecil tidak secara implisit ditukarkan kepada jenis yang lebih besar. Di Kotlin, jika anda mahu menetapkan nilai Byte jenis ke pembolehubah Int, maka anda perlu melakukan penukaran eksplisit, sedangkan Java mempunyai sokongan untuk penukaran implisit.

Perpustakaan pemprosesan anotasi dengan Kotlin

Kotlin menyokong semua rangka kerja dan perpustakaan Java yang sedia ada, termasuk kerangka maju yang bergantung pada pemprosesan anotasi, walaupun beberapa perpustakaan Java sudah menyediakan sambungan Kotlin, seperti RxKotlin.

Jika anda ingin menggunakan pustaka Java yang bergantung pada pemprosesan anotasi, kemudian menambahkannya ke projek Kotlin anda sedikit berbeza kerana anda perlu menentukan ketergantungan menggunakan kotlin-kapt plugin, dan kemudian gunakan alatan pemprosesan Kotlin Annotation (kapt) dan bukan penjelasanProsesor. Sebagai contoh:

// Guna plugin // apply plugin: kotlin-kapt // Tambah dependensi masing-masing menggunakan konfigurasi kapt / // dependencies {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Pertukaran dengan Java

Apabila membahaskan sama ada untuk menggunakan pembangunan Kotlin atau Java untuk Android, anda harus sedar bahawa terdapat pilihan ketiga: gunakan kedua-duanya. Walaupun semua perbezaan antara kedua-dua bahasa, Jawa dan Kotlin adalah 100% beroperasi. Anda boleh memanggil kod Kotlin dari Jawa, dan anda boleh memanggil kod Java dari Kotlin, jadi mungkin Kotlin dan kelas Java bersebelahan dalam projek yang sama, dan semuanya masih akan dikompilasi.

Kelonggaran ini untuk bergerak di antara kedua-dua bahasa adalah berguna apabila anda memulakan dengan Kotlin kerana ia membolehkan anda memperkenalkan Kotlin ke dalam projek yang ada secara berperingkat, tetapi anda juga lebih suka menggunakan kedua-dua bahasa secara tetap. Sebagai contoh, mungkin ada ciri-ciri tertentu yang anda lebih suka menulis di Kotlin, dan ciri-ciri tertentu yang anda cari lebih mudah untuk menulis di Jawa. Oleh kerana Kotlin dan Java kedua-duanya dikompilasi oleh bytecode, pengguna akhir anda tidak akan dapat mengetahui di mana kod Java anda berakhir, dan kod Kotlin bermula, jadi tidak ada sebab mengapa anda tidak dapat melepaskan aplikasi yang terdiri daripada Java dan Kod kotlin.

Sekiranya anda ingin mencuba Kotlin untuk diri sendiri, maka selagi anda mempunyai Pratonton Android Studio 3.0 atau lebih tinggi, terdapat beberapa cara yang boleh anda mulakan:

  • Buat projek Android Studio baru. Kaedah yang paling mudah adalah membuat projek baru dan pilih kotak pilihan 'Sertakan Kotlin sokongan' dari wizard penciptaan projek.

  • Tambah kelas Kotlin ke direktori yang sedia ada. Control-click the directory in question, kemudian pilih 'File> New> Kotlin File / Class.' Android Studio akan memaparkan spanduk yang meminta anda untuk mengkonfigurasi projek anda untuk mendukung Kotlin; klik pautan 'Konfigurasi' dan ikut arahan pada skrin.

  • Tukar fail Java sedia ada ke Kotlin. Anda boleh menjalankan sebarang fail Java melalui penukar Kotlin, dengan Control-clicking file dan pilih 'Code> Convert Java File to File Kotlin'.

Mengakhiri

Seperti yang anda dapat lihat terdapat banyak sebab yang baik untuk memilih Kotlin ke Jawa, namun terdapat beberapa kawasan di mana Jawa memiliki tangan atas. Mungkin yang paling penting: ramai pemaju Android hanya lebih dikenali dengan Java pada ketika ini. Kemungkinan perdebatan Kotlin vs Jawa tidak akan dapat menyelesaikannya dalam masa terdekat, dengan kedua-duanya mempunyai merit sendiri. Oleh itu, adakah anda akan membuat suis ke Kotlin, atau adakah anda merasakan bahawa Java masih merupakan pilihan terbaik untuk pembangunan Android?

Baca Seterusnya: Pengenalan kepada sintaks Java untuk pembangunan Android

Itali adalah ebuah negara yang indah dengan ejarah yang kaya. Bahaa adalah antara yang paling popular di Eropah dan dituturkan di banyak negara di luar Itali. Ini menjadikannya bahaa yang popular unt...

elamat datang ke pelacak update 8.0 Android Oreo kami. Berikutan pelepaan awamnya pada bulan Ogo 2017, Oreo teru mencari cara untuk lebih banyak telefon pintar Android....

Pilihan Kami