12/08/2018, 15:25

Kotlin trong android: Tại sao lại là Kotlin?

Xin chào các ban ! Vào thời điểm hiện tại, cả cộng đồng lập trình Android đang nóng hơn bao giờ hết về một ngôn ngữ lập trình mới, đó là Kotlin. Vậy kotlin có những đặc điểm gì mà khiến các nhà phát triển quan tâm đến vậy? Chúng ta cùng tìm hiểu một chút về vẻ đẹp của "Người ấy " nhé! Kotlin là một ...

Xin chào các ban ! Vào thời điểm hiện tại, cả cộng đồng lập trình Android đang nóng hơn bao giờ hết về một ngôn ngữ lập trình mới, đó là Kotlin. Vậy kotlin có những đặc điểm gì mà khiến các nhà phát triển quan tâm đến vậy? Chúng ta cùng tìm hiểu một chút về vẻ đẹp của "Người ấy " nhé! Kotlin là một ngôn ngữ lập trình mới từ JetBrains được phát triển từ 2011 (Công ty đã phát triển IDE IntelliJ nền tảng của Android studio mà chúng ta đang sử dụng). Và vào ngày 17 tháng 5 năm 2017, tại hội nghị Google I/O , team phát triển Android đã thông báo rằng Kotlin sẽ được google support. Vậy cú pháp của Kotlin thì sao? Có gì cải tiến hơn so với Java mà chúng ta đang sử dụng? Dưới đây là vài điểm mạnh của Kotlin:

  1. Kotlin biên dịch tới JVM bytecode hoặc JavaScript, giống như Java, Bytecode ở đây nghĩa là sau khi biên dịch code sẽ được chạy qua một máy ảo thay vì là bộ vi xử lý của máy tính. Bằng cách này thì source code có thể chạy trên mọi nền tảng. Sau khi chương trình Kotlin được convert thành bytecode, nó sẽ được tải qua network và thực thi bởi JVM(Java Virtual Machine).

  2. Kotlin có thể sử dụng toàn bộ những Framework và thư viện sẵn có của Java. Điểm đặc biệt nhất về Kotlin là nó có thể dễ dàng kết hợp với Maven, Gradle và các hệ thống build khác.

  3. Kotlin là một ngôn ngữ rất dễ học, cú pháp rất trong sách và dễ hiểu. Kotlin có nét giống như Scala nhưng đơn giản hơn.

  4. Kotlin mã nguồn mở

  5. JetBrains cũng đã đính kèm tính năng tự động chuyển đổi Java thành Kotlin, qua đó tiết kiệm được rất nhiều thời gian cho lập trình viên.

  6. Giống như Swift, thì Kotlin cũng là một ngôn ngữ an toàn, với cơ chế null-safety, sẽ không còn khái niệm NullPointerExceptions nữa.

Một trong những tính năng tuyệt vời của Kotlin đó là tính năng mở rộng. Dưới đây là một vài ví dụ về cách mà mình sử dụng các chức năng mở rộng để giúp cho việc phát triển Android dễ dàng hơn.

Set a View height

Để set height động cho 1 View , bạn chỉ cần:

fun View.setHeight(height: Int) {
    val params = layoutParams
    params.height = height
    layoutParams = params
}

Bây giờ, bạn muốn set Height cho một view, bạn chỉ cần:

view.setHeight(newHeight)

Rất đơn giản đúng không nào!

Set View visibility

Để sét visibility của 1 view, trong java bạn cần thực hiện :

if(blabla == aaa) ? view.visibility = View.VISIBLE : view.visibility = View.GONE

Nhưng với Kotlin chúng ta cần:

fun View.visible() {
    visibility = View.VISIBLE
}
fun View.gone() {
    visibility = View.GONE
}

Và sau đó khi dùng:

if (blabla == aaa) ? view.visible() :  view.gone()

Các bạn thấy đó, cú pháp đơn giản và trong sáng hơn rất nhiều.

Read an Asset file into a String

Để đọc một file String với Kotlin thì sao? Nó cũng rất đơn giản khi được các nhà phát triển support "tận răng", dưới đây là cú pháp của nó, cùng xem nhé:

fun AssetManager.fileAsString(subdirectory: String, filename: String): String {
    return open("$subdirectory/$filename").use {
        it.readBytes().toString(Charset.defaultCharset())
    }
}

Và để nhận String, chúng ta chỉ cần gọi:

val json = context.assets.fileAsString("json", "config.json")

Inflate a Layout

Để inflate 1 layout thì sao? Với java thì đã quá quen thuộc rồi, đặc biệt là với những ai hay sử dụng fragment nên mình sẽ không đề cập đến nữa, còn với Kotlin, dưới đây là cú pháp:

fun Context.inflate(res: Int, parent: ViewGroup? = null) : View {
    return LayoutInflater.from(this).inflate(res, parent, false)
}

và sau đó bạn chỉ cần gọi:

context.inflate(R.layout.my_layout)

Retrieving a Color resource across API levels

Để get ra resource Color ta chỉ cần thực hiện:

fun Context.color(@ColorRes id: Int) = when {
    isAtLeastMarshmallow() -> resources.getColor(id, null)
    else -> resources.getColor(id)
}

Và sau đó chỉ cần gọi:

context.color(R.color.my_color)

Trên đây là một số ví dụ về Kotlin. Kotlin còn rất nhiều những thứ hay ho, nhưng bản thân mình cũng chưa nắm được đầy đủ, hy vọng bài viết sau mình sẽ hiểu và chia sẻ với mọi người. À còn một điều mà mình rất thích Kotlin là vì nó không có dấu chấm phẩy ở cuối câu lệnh(Đó là ý kiến cá nhân của mình ). Hy vọng bài viết trên sẽ làm rõ hơn thế nào là Kotlin và tại sao anh em dev Android lại say nó đến vậy. Rất mong nhận được sự góp ý của các bạn để bài viết thêm hoàn chỉnh. Bài viết được tham khảo từ: https://m.signalvnoise.com/using-kotlin-to-make-android-apis-fun-again-14690975afb6

0