Ưu và nhược điểm của Kotlin so với Java

Một phần của tài liệu đồ án tốt nghiệp ứng dụng quản lý phòng trọ (Trang 31 - 35)

Java cũng là một ngôn ngữ lập trình. Trong việc phát triển ứng dụng di động cho hệ điều hành Android, Java là ngôn ngữ lựa chọn số 1 trước khi Kotlin được phát triển rộng rãi.

Hình 1.10. Mô tả các ứng dụng của ngôn ngữ Java

Java được nhiều người sử dụng bởi vì:

✓ Cú pháp dễ hiểu, lập trình được nhiều thứ-Web, mobile, ….

✓ Code Android từ Java tương thích rất tốt, rất ít lỗi.

✓ Có cộng đồng lớn, nhiều hướng dẫn và thư viện.

✓ Có nhiều công ty tuyển dụng.

Tuy có nhiều ưu điểm như thế, nhưng Java cũng có những nhược điểm chí mạng như:

✓ Các dòng code dài dòng.

✓ Lỗi NullPointerException, lỗi này xảy ra khi bạn gọi object hay phương thức bị null.

Vì Kotlin sinh sau đẻ muộn cho nên nó được cải tiến khá nhiều và khắc phục được nhiều bất cập còn tồn động trong Java. Cụ thể như sau:

a)Sự tương thích

Một trong những ưu điểm của Kotlin là Kotlin và Java có thể chứa cùng chung một dự án. Đồng thời, hai ngôn ngữ Kotlin, Java có thể gọi phương thức giữa các class với nhau. Về tính tương tác giữa Java và Kotlin là tuyệt đối.

b)Kotlin ngắn gọn hơn Java

Có thể nói đây là một lợi ích lớn nhất khi so với Java. Cũng là một bài toán logic, tuy nhiên bên Java số lượng tạo ra nhiều hơn so Kotlin.

c) Extension function

Chức năng này có thể thêm một function (tạm dịch là chức năng) cho một class

mà không cần kế thừa lại class đó.

Để hiểu rõ Extension là gì ta xem qua ví dụ dưới đây:

// Extension function. Ý nghĩa của hàm là để lấy từ đầu tiên của câu

fun String.getFirstWordOfSentences(): String =this.split(" ").get(0) / Khai báo biến tên testSentences, giá trị là chuỗi "Kotlin is so cool"

var testSentences = "Kotlin is so cool"

testSentences.getFirstWordOfSentences()// Kết quả là “Kotlin”

Thông qua ví dụ trên thấy chúng ta không hề kế thừa một class nào từ String,

nhưng thông qua Extension ta xây dựng một function mở rộng cho class String.

d) Hàm lồng nhau

Trong Kotlin, một function được định nghĩa hay được viết trong một function

được gọi là hàm lồng nhau. Sau đây là một số ví dụ về hàm lòng nhau: //Tạo một class Object User có 3 trường dữ liệu

class User(val id: Int, val name: String, val address: String) //Tạo một hàm lưu object user vào cơ sở dữ liệu

fun saveUserToDb(user: User) {

//Xây dựng thêm một hàm xác thực value có đang bị trống không? fun validate(user: User, value: String, fieldName: String) {

if (value.isEmpty()) {

throw IllegalArgumentException("Can't save user ${user.id}: empty $fieldName")

} }

validate(user, user.name, "Name") validate(user, user.address, "Address")

/Save user to the database ...

Một ví dụ khác sử dụng hàm lồng hàm khi sử dụng các Collection có trong Kotlin.

//khởi tạo một danh sách với kiểu dữ liệu là chuỗi có 4 giá trị ban đầu. val numbers = listOf("one", "two", "three", "four")

//Sử dụng một hàm filter để lọc dữ liệu từ danh sách ban đầu ra một danh dánh sách mới.

val longerThan3 = numbers.filter { it.length > 3 } println(longerThan3)

val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key11" to 11)

val filteredMap = numbersMap.filter { (key, value) -> key.endsWith("1") & value > 10}

println(filteredMap)

e)Lập trình an toàn hơn

Trong Kotlin, xử lý lỗi NullPointerException ở compile-time (tạm dịch là đang thực hiện biên dịch code) chứ không cần đợi tới lúc ứng dụng build (tạm dịch là khởi

chạy).

f) Đa nền tảng

Với tham vọng lớn là sử dụng ngôn ngữ Kotlin có thể biên dịch ra nhiều nền tảng khác nhau: Android, IOS, Window, …. Nhưng nó chỉ đang trong giai đoạn chạy thử

nghiệm.

Một phần của tài liệu đồ án tốt nghiệp ứng dụng quản lý phòng trọ (Trang 31 - 35)