Kotlin và những điểm cơ bản của nó:

Tiến Phan
6 min readDec 27, 2021

--

Trong phạm vi bài này chúng ta cùng nhau tìm hiểu tổng quan về Kotlin và những điểm cơ bản nhất của nó:

  1. Tổng quan về Kotlin:
  • Kotlin là 1 ngôn ngữ lập trình được phát triển bởi JetBrains và lần đầu được giới thiệu vào năm 2011 và liên tục cập nhật đến nay là version 1.6.0 (30/11/2021).
  • Là 1 cũng “ngôn ngữ lập trình tĩnh kiểu” nghĩa là các biến không cần phải định nghĩa trước khi sử dụng.
  • Cũng giống như Java, Kotlin chạy trên máy ảo Java (JVM — Java Virtual Machine). Và đuôi của file Java là .class, .java, .jar thì phần đuôi của file Kotlin là .kt, .kts
  • Vào ngày 17/5/2017, tại Google I/O keynote, Android team đã thông báo Kotlin sẽ trở thành ngôn ngữ chính thức của Android. Và bắt đầu từ phiên bản Android 3.0 trở đi thì Kotlin sẽ hỗ trợ tối đa để lập trình viên tung hoành.
  • Kotlin hoạt động tốt trên nhiều nền tảng khác nhau (Windown, MacOs, Linux,…) và nó tương thích 100% với Java.
  • Và điều quan trọng nhất là Kotlin miễn phí, trước kia miễn phí, bây giờ miễn phí và sau này cũng sẽ miễn phí.
  • Cũng có nhiều công ty lớn sử dụng Kotlin để xây dựng ứng dụng của họ như : Google, Uber, Slack, Netflit,… và quan trọng hơn là hiện nay có khá nhiều công ty đang tìm và tuyển dụng nhiều Kotlin Developer.

2. Kotlin trong Android:

  • JetBrains hy vọng Kotlin sẽ được sử dụng trong nhiều mục đích khác nhau. Đến thời điểm hiện tại Kotlin được sử dụng cho Multiplatform Mobile, Android, Server side, Data science,… Nhưng lập trình Android là một trong những điểm quan trọng mà JetBrains hướng đến cho Kotlin.
  • Các nhà phát triển không có lựa chọn thay thế cho việc phát triểu ứng dụng Android bằng ngôn ngữ Java. Mặc dù ở Java 8 và đặt biệt là Java 10, Java 11 đã giải quyết được một số vấn đề của ngôn ngữ này. Kotlin được sinh ra để lắp đầy khoảng trống của một ngôn ngữ hiện đại đang thiếu cho nền tảng Android.
  • Có một vài nguyên lý cốt lõi mà giúp Kotlin tồn tại đó là: Nhỏ gọn để giảm số lượng mã boilerplate cần viết. Code dễ đọc và dễ hiểu hơn. An toàn, tránh các lỗi như các NullPointerExceptioins. Linh hoạt cho việc xây dựng ứng dụng phía máy chủ, ứng dụng Android. Khả năng tương tác để tận dụng các FrameworkLibrary hiện có của JVM với khả năng tương tác với Java 100%.

3. Kotlin và Java

  • Hãy cùng xem nhanh các điểm khác nhau của Kotlin và Java nhé:

Giờ chúng ta sẽ phân tích một xíu vài điểm cần nắm về sự khác nhau giữa Kotlin và Java nhé:

  • Null safety — Kotlin tránh được NullPointerExceptions.
  • Data Classes — trong Kotlin có Data Classes để tự phát sinh boilerplate như equals, hashCode, toString, getters/setter,…* cùng xem ví dụ để thấy rõ hơn chỗ này:
// Java 
class Book{
private String title;
private Author author;
public String getTitle(){
return title;
}
public void setTitle(){
this.title = title;
}
public String getAuthor(){
return author;
}
public void setAuthor(){
this.author = author;
}
}
// Kotlin
data class Book (var title:String, var author: Author)
  • Extension Functions: Kotlin cho cung cấp khả năng mở rộng class với chức năng mới mà không cần kế thừa. Nó được thực hiện bởi chức năng mở rộng. Chúng ta cần đặt tên nó với một receiver type để khai báo, như một loại được mở rộng. Ví dụ:
fun MutableList<Int>.swap(index1: Int, index2: Int){
val tmp = this[index1]
this[index1] = this[index2]
this[index2] = tmp
}

Từ khóa “this” trong extention function tương đương với một receiver object, được truyền đến trước dấu chấm. Và giờ chúng ta có thể gọi như một hàm trong bất kỳ MutableList<Int> nào. Ví dụ:

val abc = mutableListOf(1, 2, 3)abc.swap(0, 2)
  • Smart Casts: Khi nhắc đến Casts, compiler Kotlin thực sự thông minh. Nhiều trường hợp, người ta không cần sử dụng các toán tử Cast rõ ràng trong Kotlin, nhưng giữa Java và Kotlin, Kotlin có “is-check” cho các giá trị immutable và chèn tự động khi được yêu cầu. Ví dụ:
fun demo(x:Any){
if(x is String){
print(x.length)
// x is automatically cast to string
}
}
  • Type Inference: Trong Kotlin, có một điều rất tuyệt vời là bạn không phải chỉ rõ loại của mỗi biến một cách rõ ràng (theo cách rõ ràng và chi tiết). Nhưng nếu bạn muốn xác định một loại dữ liệu một cách rõ ràng, bạn cũng có thể làm điều đó. Ví dụ:
// Not explicitly definedfun main(args: Array<String>){
val text = 10
println(text)
}
// Explicitly definedfun main(){
val text: Int = 10
println(text)
}
  • Functional Programming: Lập trình hướng chức năng là một điểm quan trọng nhất của Kotlin. Về cơ bản thì Kotlin bao gồm nhiều menthod hữu ích, bao gồm các chức năng bậc cao, lambda, operator overloading, lazy evaluation, operator overloading,… và còn nhiều thứ khác. Lập trình hướng chức năng làm cho Kotlin dễ xử lý hơn khi tập hợp chúng lại. Ví dụ:
fun main(args: Array<String>) {
val numbers = arrayListOf(15, -5, 11, -39)
val nonNegativeNumbers = numbers.filter {
it >= 0
}
println(nonNegativeNumbers)
}
  • Tốc độ biên dịch (Java vs Kotlin compilation speed):

Clean build (build codebase lần đầu): Ở điểm này, Kotlin khi compile lần đầu tiên thì nó sẽ mất thời gian nhiều hơn, Java sẽ compile nhanh hơn từ 15%-20%.

Incremental builds: Hầu hết thời gian code và cần incremental build như thay đổi 1 đoạn code, layout và build lại chúng,… ở đây thì Kotlin có tốc độ compile như Java, thậm chí còn nhanh hơn.

Để xem rõ hơn sự khác biệt giữa compilation speed của Java và Kotlin bạn có thể tham khảo bài viết dưới đây:

5. Tổng kết:

Kotlin liên kết với Java và cung cấp sự thay đổi không ngừng của code và hệ thống cấp cao sang Java và cung cấp cách Migration dễ dàng từ Java với khả năng tương thích ngược

Với các tính năng như nhiều khai báo hơn, ít code, cơ sở dữ liệu ngôn ngữ hỗn hợp và diễn cảm hơn Java, Kotlin sẽ là tương lai cho các ứng dụng doanh nghiệp và di động thời gian tới.

Trong phạm vi bài này mình đã giới thiệu một cách tổng quát về Kotlin. Nếu bạn muốn tìm hiểu sâu xa hơn thì có thể tham khao ở những bài viết mà mình sẽ để link ở dưới đây.

Reference:

--

--