Tổng quan về Kotlin


1. Kotlin là gì?
Kotlin là ngôn ngữ lập trình kiểu tĩnh, chạy trên máy ảo JVM, được tạo ra bởi JetBrains. Cái tên Kotlin xuất phát từ một hòn đảo gần thành phố Saint Petersburg (Nga) – nơi JetBrains hoạt động nghiên cứu và phát triển. So với Java, Kotlin đang dần trở nên phổ biến bởi cú pháp ngắn gọn, hiện đại, an toàn và được xem là người kế nhiệm của Java.

Theo JetBrains, Java có những hạn chế và các vấn đề “hoặc không thể hoặc rất khó để sửa chữa do những vấn đề về tính tương thích ngược”. Vào ngày 15/2/2016 phiên bản 1.0 đã được released. Nếu bạn đang tìm kiếm một ngôn ngữ cho việc phát triển Android, thì bạn nên thử qua Kotlin. Nó có thể thay thế hoàn toàn hoặc kết hợp cùng với Java trong dự án Android của bạn.
2. Đặc điểm của Kotlin
Khai báo biến
Có 2 cách khai báo biến trong Kotlin là: var và val

    val a: Int = 1
    val b = 1  
    val c: Int  
    c = 1
    var x = 5
    x += 2

* Từ khóa var sử dụng khi biến thay đổi, còn val thì sử dụng khi biến không thể thay đổi
* Từ khóa val giống như kiểu readonly trong C# hoặc trong java thì nó là final
* Từ khóa val phải được khởi tạo lúc khai báo
* Từ khóa void trong C# hay Java thì được khai báo trong Kotlin là Unit
Null Safety
Một trong những lỗi kinh điển của dev hay gặp là Nullpointer trong các ngôn ngữ lập trình, bao gồm cả Java là cho phép 1 thành phần nào đó được Null. Nếu không chắc chắn thành phần đó được phép Null hay không sẽ rất dễ xảy ra lỗi không lường trước được, gây nguy hiểm cho hệ thống của bạn. Cụ thể, trong java sẽ gây ra 1 exception là NullPoiterException hoặc viết ngắn gọi là NPE.
Kotlin nhằm mục đích xóa bỏ NullPoiterException trong code của chúng ta. Ngay khi khai báo biến với Kotlin, bạn đã phải chỉ rõ biến đó có được phép Null hay không. Có 2 trường hợp được phép đó là : không thể Null và có thể Null
Khai báo 1 biến cho phép null

    var a : String ? ="Septeni_technology"
    a = null
    var l = a?.lenght();

Khai báo 1 biến không cho phép null

    var b: String  = "Game team"
    b = null
    var l = b.lenght();

Chúng ta có thể thấy Kotlin đã khắc phục được NPE trong Java. Các biến cho phép Null hay không được phép Null đã được xác định ngay trong quá trình khai báo biến, các IDE sẽ giúp chúng ta phát hiện ra lỗi ngay khi compile. Việc phát hiện ra lỗi sớm khi compile sẽ tốt hơn so với khi runtime. Nó giúp hệ thống của chúng ta an toàn hơn.
Kế thừa trong Kotlin
Mặc định class trong Kotlin đều là final (tức là không được phép kế thừa).

    open class Base{
        open fun v(){}
        fun nv(){}
    }
    class Derived() : Base() {
        override fun v() {}
    }

Trong class final (tức là không có từ khóa “open”) thì việc khai báo các hàm, thuộc tính open là không cho phép.
Ở 1 lớp con khác, hàm được đánh dấu là override thì chính nó là open (lại được kế thừa từ lớp khác), nếu không muốn lớp con override lại thì sử dụng từ khóa final.

    open class AnotherDerived() : Base() {
        final override fun v() {}
    }

Interface trong Kotlin
Trong Kotlin thì mắc định các member là kiểu open

    interface B {
        fun f() { print("B") } 
        fun b() { print("b") }
    }

Cách implement interface

    class C() : A(), B {
        override fun f() {
            super<A>.f() // call to A.f()
            super<B>.f() // call to B.f()
        }
    }

Truy xuất trong Kotlin
Cách truy xuất trong Kotlin cũng giống như trong java đó là: private, protected, public
* Nếu không chỉ rõ thì mặc định là public.
* Các chỉ định truy cập : private, protected và public giống cách sử dụng trọng java
* Riêng internal ta có thể sử dụng trong cùng module.
Ưu điểm và nhược điểm của Kotlin
Ưu điểm
* Là một ngôn ngữ trực quan, dễ học đối với những người đã học qua java
* Code ngắn hơn và nhanh hơn java
* Tự động generates data các property của một class
* Ví dụ
Trong java khi tạo một class thì ta phải tạo các phương thức getter() và setter() để đảm bảo tính chất đóng gói trong OOP của lập trình java Còn trong Kotlin thì không cần vì nó đã tự động generate rồi ta chỉ cần khai báo 1 class như này:

    class Song{
        var id : Int
        var songName:  String
        var singerName: String
        var artistName: String
        var albumName: String
    }

*Extendtion method/function
Cái này được sử dụng trong C# hoặc . Net rất nhiều, trong java thì java 8 cũng gặp nhiều
ví dụ
Bình thường ta khai báo 1 function như thế này

fun fragment. toast(message: String){
        Toast. makeText( getActivity(), messeage, Toast.LENGt_SHORT). show();
}

Còn đối với Kotlin thì chỉ cần 1 dòng

    import mypackage.util.ContextExtensions.toast
        fun myFun(context: Context) {
            context.toast("Hello world!")
        }   

*Functional Lamdar
Khi lập trình chúng ta muốn thực hiện một sự kiện onClick thì phải impement lại một hàm onClick, nhưng đối với Kotlin thì không cần chỉ cần viết như này là xong:

    subtopView.setOnClickListner{
        toast("Hello Septeni technology !")
    }

Nhược điểm
Tài liệu và cộng đồng support chưa mạnh, vì là một ngôn ngữ mới
Nếu nền tảng lập trình chưa vững mà muốn học Kotlin quả là một trở ngại, vì Kotlin nó khác với các ngôn ngữ truyền thống khác như: java, C#, .Net..
3.Kết Luận
Mặc dù Kotlin có một số tính năng hoàn toàn mới chẳng hạn như một type system được thiết kế để ngăn chặn các bug như các null pointer reference, nhưng quan trọng là nó làm việc cùng với code và cơ sở hạ tầng hiện có của Java. Cuối cùng, Kotlin không có trình quản lý gói và build system của riêng nó, do Java đã có sẵn.
Kotlin đã được phát triển phần nào để mang đến sức mạnh cho IntelliJ Idea Java IDE. Thay vì sử dụng Scala – một ngôn ngữ dựa trên JVM khác – JetBrains đã chọn lựa việc xây dựng từ lúc chưa có gì trong khi tạo ra ngôn ngữ mới thu hút các lập trình viên Java hiện có và việc học ngôn ngữ mới dễ dàng hơn Scala.
Lập trình Android là một trong những lĩnh vực quan trọng mà JetBrains hướng đến với Kotlin. Ngôn ngữ mang đến tính tương thích ngược với Java 6 và 7, các phiên bản của Java hầu hết đều tương thích chặt chẽ với Android. JetBrains cũng hy vọng Kotlin sẽ được sử dụng trong các lĩnh vực khác chẳng hạn như các ứng dụng lớn và phức tạp, đề cao hiệu suất. Hãy thử Kotlin kết hợp cùng với Java trong dự án của bạn, chắc chắn nó sẽ mang lại cho bạn những tiện ích và trải nghiệm thú vị !

Add a Comment

Scroll Up