JavaRush /Java Blog /Random-ID /KotlinRush: apakah masuk akal untuk terus menulis di Java...
NikEy
Level 41
Новосибирск

KotlinRush: apakah masuk akal untuk terus menulis di Java?

Dipublikasikan di grup Random-ID
Halo, pelajar JavaRush, sebelum Anda benar-benar terserap oleh Java, saya ingin memperluas wawasan Anda dan menarik perhatian pada bahasa Kotlin yang semakin populer !
KotlinRush: apakah masuk akal untuk terus menulis di Java?  - 1
Kotlin adalah bahasa yang cukup muda yang dikembangkan oleh JetBrains . Ya, ya, perusahaan yang sama yang mengembangkan IDE favorit kami: IntelliJ IDEA. Kotlin adalah bahasa JVM dan sepenuhnya kompatibel dengan Java , artinya, dari kode Kotlin Anda dapat dengan mudah mengakses pustaka Java yang sudah dikenal.Bagaimana dengan pustaka: Kelas Kotlin dan Java dapat hidup berdampingan dalam satu paket! Kotlin sangat populer di kalangan komunitas pemrograman sehingga Google mengenalinya sebagai bahasa pengembangan resmi untuk Android, dan baru-baru ini Kotlin mulai mendapatkan popularitas dalam proyek-proyek perusahaan. Pada artikel ini, saya ingin memberikan beberapa contoh perbandingan kode yang ditulis di Kotlin dan Java, dan menarik beberapa kesimpulan. Pergi! Mari kita mulai, seperti biasa, dengan "Hello World"
// Java
public class Application {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
// Kotlin
class Application
fun main(vararg args: String) {
    println("Hello World!")
}
Melihat contoh Kotlin, kita dapat langsung memperhatikan hal berikut:
  • tidak perlu menulis titik koma di akhir baris;
  • semua metode dijelaskan dengan kata kunci menyenangkan ;
  • Untuk mencetak satu baris, satu kata saja sudah cukup - println() !
Membuat Instance
// Java (до 10)
final Application application = new Application();
// Kotlin
val application = Application()
Perbedaan Kotlin:
  • tidak perlu mendeklarasikan tipe variabel jika sudah jelas dari instance;
  • alih-alih tipe variabel - val (tidak dapat diubah) atau var (dapat diubah);
  • Anda tidak perlu menulis kata kunci baru untuk membuat sebuah instance !
Deskripsi metode
// Java
public int sum(int a, int b) {
    return (a + b);
}
// Kotlin
fun sum(a: Int, b: Int): Int {
return (a + b)
}
Perbedaan Kotlin:
  • jika ada sesuatu yang perlu dikembalikan dari suatu metode, “ : Int ” ditambahkan ke tanda tangan, di mana Int adalah tipe kembaliannya;
  • deskripsi parameter metode: pertama nama variabel, lalu jenisnya;
  • karena isi metode hanya terdiri dari satu baris, Anda dapat menghilangkan return :
    fun sum(a: Int, b: Int): Int = (a+b)
Keluaran string yang diformat
// Java
public int sum(int a, int b) {
    int result = (a + b);
    System.out.printf("Сумма %d и %d равна %d\n", a, b, result);
    return result;
}
// Kotlin
fun sum(a: Int, b: Int): Int {
    val result = (a + b)
    println("Сумма $a и $b равна $result")
    return result
}
Kotlin mendukung interpolasi string, cukup gunakan simbol "$" di awal variabel. Notasi ini secara signifikan meningkatkan kebersihan dan keterbacaan kode. Perbandingan Instance
// Java
object1.equals(object2)
// Kotlin
object1 == object2
Di Kotlin, perbandingan " ==" untuk tipe objek diterjemahkan menjadi equals! Dan untuk membandingkan tautan, " ===" digunakan. Pengecualian
// Java
public List<String> getFileContent(String file) throws IOException {
    Path path = Paths.get(file);
    return Files.readAllLines(path);
}
// Kotlin
fun getFileContent(file: String): List<String> {
    val path = Paths.get(file)
    return Files.readAllLines(path)
}
Tidak ada pengecualian yang dicentang di Kotlin ; sekarang Anda tidak perlu terus-menerus melemparkan pengecualian ke seluruh aplikasi atau membuat pengecualian multi-level try-catch. Keamanan Nol
// Java
public class Data {
    String value;

    String render() {
        if (value == null) {
            return "Value: undefined";
        } else {
            return "Value:" + value.toUpperCase();
        }
    }
}
// Kotlin
class Data {
    var value: String? = null
    fun render(): String =
            "Value: ${value?.toUpperCase() ?: "undefined"}"
}
Kotlin menangani masalah NPE dan memperkenalkan sejumlah persyaratan:
  • semua bidang kelas dan variabel harus diinisialisasi;
  • Anda dapat menulis “null” di bidang atau variabel, tetapi Anda harus secara eksplisit mengatakan bahwa variabel Anda adalah Nullable (tulis tanda “?”);
  • Operator Elvis "?:" bekerja seperti ini: jika ada Null di sebelah kiri, ambil yang di sebelah kanan. Dalam kasus contoh kita, ketika variabel nilai tidak diinisialisasi, nilai “ tidak terdefinisi ” akan diambil.
Bidang kelas dan akses ke sana
// Java
public class Data {
    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
class App {
    void execute() {
           Data data = new Data()
           data.setValue("Foo")
     }
}
// Kotlin
class Data {
    var value: String = ""
}
class App {
    fun execute() {
          val data = Data()
          data.value = "Foo" // Под капотом выполнится data.set("Foo")
     }
}
Di Kotlin, cukup mendeskripsikan sebuah bidang dan selesai: bidang tersebut sudah memiliki pengambil dan penyetel implisit (halo lombok ), yang dapat diganti kapan saja jika diinginkan. Pada saat yang sama, kita membaca dan mengubah nilai bidang hanya dengan mengaksesnya secara langsung, dan itu disebut get()|set(). Siklus
// Java
void example() {
    for(int i = 1; i <= 10; i++) {
        System.out.println(i);
    }

    for(String line : "a,b,c".split(",")) {
        System.out.println(line);
    }
}
// Kotlin
fun example() {
    for(i in 1..10) {
        println(i)
    }

    for(line in "a,b,c".split(",")) {
        println(line)
    }
}
Kotlin telah menyediakan sintaksis yang mudah digunakan dan seragam untuk menelusuri urutan: Anda cukup menggunakan variabel di sebelah kiri , urutan di sebelah kanan , dan kata kunci “ di ” di antaranya, jenisnya ditentukan secara otomatis oleh konten. Lajang
// Java
public class Singleton {
    private static Singleton ourInstance = new Singleton();

    public static Singleton getInstance() {
        return ourInstance;
    }

    private Singleton() {
    }
}
class App {
    void execute() {
         Singleton singleton = Singleton.getInstance()
    }
}
// Kotlin
object Singleton {}

class App {
    fun execute() {
          val singleton = Singleton
    }
}
Pola “ singler ” yang familier cukup sering digunakan dalam praktik, jadi Kotlin memutuskan untuk membuat kata kunci “ object ” terpisah, yang ditulis sebagai pengganti “ class ” dan berarti bahwa kelas tersebut adalah singleton; ketika digunakan, Anda bahkan tidak perlu memanggil konstruktor atau metode lainnya! Parameter metode bernama dan nilai default
// Java
void setStatus(String code) {
    setStatus(code, "");
}

void setStatus(String code, String desc) {
    this.code = code;
    this.desc = desc;
}
// Kotlin
fun setStatus(code: String, desc: String = "") {
    this.code = code;
    this.desc = desc;
}

fun execute() {
    setStatus("200")
    setStatus(code = "200", desc = "Ok")
}
Kebetulan tidak semua parameter dalam suatu metode atau konstruktor harus diperlukan, dan di Java kita terbiasa membuat sekumpulan metode atau konstruktor untuk setiap kemungkinan kombinasi parameter. Parameter default telah diperkenalkan ke Kotlin, yang memungkinkan Anda mendeklarasikan 1 metode dan meneruskan kumpulan parameter yang diperlukan ke metode tersebut tergantung pada situasinya. Aliran
// Java
String getFirst(List<String> strings, String alpha) {
    return strings.stream()
            .filter(x -> x.startsWith(alpha))
            .findFirst()
            .orElse("");
}
// Kotlin
fun getFirst(strings: List<String>, alpha: String): String {
    return strings.first { it.startsWith(alpha) }
}
Pengenalan aliran di Java 8 telah menjadi fungsi integral ketika bekerja dengan koleksi. Di Kotlin, aliran dibuat lebih nyaman dan fungsional: setiap koleksi sudah memiliki serangkaian metode yang mudah digunakan dan sering digunakan untuk bekerja dengan data. Juga, perhatikan ekspresi lambda di dalam metode pertama: jika suatu fungsi literal memiliki tepat satu parameter, deklarasinya dapat dihapus (bersama dengan ->), dan disebut sebagai  it . Saatnya untuk menyelesaikan... Saya hanya mendemonstrasikan sebagian kecil fungsi dasar, tapi saya yakin Anda sudah ingin mencoba Kotlin! Dari pengalaman saya, saya dapat menarik kesimpulan sebagai berikut:
  • Sangat mudah bagi pengembang Java untuk menguasai sintaks Kotlin dan mulai menulis kode;
  • Kotlin sepenuhnya kompatibel dengan Java, dan Anda sudah dapat mencobanya di proyek yang sudah ada, misalnya, dalam pengujian;
  • Kode Kotlin lebih bersih dan mudah dibaca, Anda tidak perlu menulis banyak boilerplate ;
  • IDEA memiliki pengonversi Java ke Kotlin otomatis, Anda dapat mengambil kode Java yang sudah jadi dan secara otomatis mengonversinya ke Kotlin;
  • proyek baru perlu ditulis di Kotlin, karena dari segi infrastruktur sama dengan Java, tetapi dari segi penggunaan lebih baik dan nyaman!
Jika Anda menyukai artikel ini dan secara umum relevan dengan sumber daya tentang Java, saya dapat terus menulis tentang pengalaman menggunakan Kotlin dalam proyek perusahaan nyata. Tautan yang berguna:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION