Kotlin đã là một bước đột phá lớn trong 2 năm qua, nó đã trở thành một chủ đề thịnh hành ở khắp mọi nơi và mức độ phổ biến của nó vẫn đang tăng lên. Và cũng chính thức rằng Google đã thúc đẩy Kotlin trở thành ngôn ngữ chính thức cho Phát triển ứng dụng Android.
Nhưng ngay cả khi đó, nhiều người vẫn thích Java hơn Kotlin để phát triển Android, tại sao vậy? Một trong những lý do chính cho điều đó là mọi người vẫn chưa thoải mái trong việc thay đổi ngôn ngữ chính mà họ lựa chọn từ Java sang Kotlin, mọi người sợ thay đổi sang những thứ mới.
Bắt đầu sử dụng Kotlin ngay bây giờ, một cách dễ dàng
Trên thực tế, rất dễ chuyển sang Kotlin từ Java, là một ngôn ngữ rất linh hoạt, bạn có thể dễ dàng viết mã Kotlin nhưng nói một cách thành ngữ, đó là Java!
Vì vậy, bây giờ, đây là một số điều cần lưu ý khi chuyển sang Kotlin từ Java:
1. Khả năng tương tác của Java
Kotlin hoàn toàn có thể tương tác với Java và ngược lại. Điều đó có nghĩa là gì, nó có nghĩa là Kotlin của bạn có thể gọi mã Java của bạn, nó làm cho mọi thứ rất dễ dàng cho việc di chuyển ứng dụng, bạn đã viết mã nửa chừng với Java? Không thành vấn đề, hãy viết mã Kotlin.
2. Không còn kiểu dữ liệu nguyên thủy
Hãy nhớ khi chọn sử dụng int hoặc Int trong java khiến bạn mất nửa ngày? Giờ đây, không có kiểu dữ liệu nguyên thủy nào nữa trong Kotlin, thay vào đó, mọi thứ đã được bao bọc trong Object.
3. Cú pháp đã thay đổi một chút (Nhưng đừng lo lắng nó dễ bắt kịp)
Một số cú pháp như khai báo biến, hàm và lớp đã được thay đổi một chút, nhưng nếu bạn đến từ nền tảng OOP chẳng hạn như Java, nó sẽ không phải là vấn đề như vậy. Ngoài ra, từ khóa void và dấu chấm phẩy (';') đã bị xóa, cảm ơn Kotlin đã xóa dấu chấm phẩy đó !!
Tôi sẽ trình bày cho bạn các ví dụ cơ bản với lớp Android:
//Inheritance and implementation is using ':' now
class BasicActivity : AppCompatActivity() {
//variables declaration is now variable name first then type
var a :Int = 10 //var is for mutable
val b :Int = 15 //val is for immutable
/*lateinit keyword must be added for initialisation of non-
primitive type without initial value in Kotlin*/
lateinit var someTextView:TextView
//Also, no more new keyword here
var gameList:List<Integer> = ArrayList()
//overriding is using keyword instead of
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_basic)
}
}
4. Nhập suy luận
Kotlin sẽ làm cho cuộc sống dễ dàng hơn bằng cách cung cấp suy luận kiểu cho các biến:
var a = 5 //will automatically infer this as integer
var b = "John" // will automatically infer this as String
5. Kiểm tra an toàn vô hiệu
Kotlin đã cung cấp kiểm tra an toàn rỗng để tránh ngoại lệ con trỏ null. Mọi biến có thể trả về giá trị null sẽ được đánh dấu (và phải được đánh dấu) bằng ?
dấu hiệu.
var a:String? = null
var b:String = null //not allowed
Nó cũng cung cấp lệnh gọi an toàn rỗng để tránh Null-Pointer Exception (Lỗi Java Billon Dollar)
//not allowed, a might be null
a.function()
// this will not throw null pointer, instead will continue the flow
a?.function()
//force function call, can cause NPE, use this only if 100% sure that this value will not be null
a!!.function()
6. Không còn từ khóa tĩnh
Từ khóa Static hiện đã được thay thế bằng từ khóa Đối tượng, dành cho cả các lớp và phương thức, cụ thể hơn là Đối tượng Đồng hành dành cho các phương thức.
7. Đã sửa đổi trường hợp chuyển đổi
Trường hợp chuyển đổi hiện đã được sửa đổi thành một từ khóa mới, được gọi là khi nào. Cái nào trông gọn gàng và linh hoạt hơn:
when (x) {
1 -> println("One")
2 -> print("Two")
else -> print("Others")
}
8. Không có ngoại lệ nào được kiểm tra nữa
Hãy nhớ khi bạn đang thực hiện một số thao tác hoặc truyền trong Java và cảnh báo màu đỏ đó xuất hiện và yêu cầu bạn thêm kiểm tra ngoại lệ ở đó? Nó đã được gỡ bỏ bây giờ trong Kotlin. Bây giờ, IDE của bạn sẽ không buộc bạn phải thực hiện bất kỳ ngoại lệ nào nữa !!
Đó là tất cả cho phần mà bạn cần bắt đầu phát triển trong Kotlin, nhưng nói một cách thành ngữ là Java.
Không khó để vào Kotlin bây giờ, phải không? Bây giờ Kotlin dường như không khác Java.
Tính năng do Kotlin cung cấp
Bây giờ, sau khi xem Kotlin và Java khác nhau như thế nào, chúng ta cũng cần xem xét các tính năng được cung cấp bởi Kotlin và cách bắt đầu từ từ làm Kotlin, theo cách của Kotlin:
1. Tính linh hoạt
Một trong những lý do chính khiến tôi yêu thích Kotlin là tính linh hoạt của ngôn ngữ. Bạn có phải là người theo chủ nghĩa OOP không? Bạn có muốn thử Lập trình chức năng hiện đang là chủ đề nóng xung quanh không? Và vì tình yêu của mã hóa Chúa ơi, bạn có thể làm cả hai điều này trong Kotlin! Mặc dù không cung cấp đầy đủ tất cả các tính năng mà FP cung cấp, nhưng nó đủ tốt để hỗ trợ nó.
2. Hỗ trợ Lambda
Vâng, tôi biết rằng bây giờ Java 8 hỗ trợ lambda, nhưng Kotlin đã đi đầu trong việc này và nó làm rất tốt trong đó. Chắc chắn, việc chuyển đổi sang sử dụng Lambda Function sẽ gặp khó khăn lúc đầu, nhưng như đã nói, Kotlin thực sự linh hoạt về điều đó. Vì vậy, này, đó là cuộc gọi của bạn!
Một số thư viện Android cũng đã bật hỗ trợ Lambda, chẳng hạn như View.OnClickListener
(Nếu bạn đến từ Nền tảng Android, tôi chắc chắn rằng phương pháp này đã rất quen thuộc với bạn):
val randomButton : Button
//using lambda function as argument
randomButton.setOnClickListener{v -> doRandomStuff(v) }
3. Lớp dữ liệu
Kotlin đã cung cấp một lớp thay thế cho lớp Model / Entity, được gọi là lớp Dữ liệu. Nó loại bỏ nhu cầu về getter setter dư thừa và cũng có sẵn phương thức ngang bằng và hàm toString mà bạn không cần phải tạo một hàm cho nó. Nó cũng rất dễ sử dụng:
data class Person(
val id:String,
val name:String = "John Doe" //Default Value
)
//Initialisation block
var person = Person("id","Not John")
4. Chức năng mở rộng
Kotlin cho phép sử dụng các chức năng mở rộng, giúp mã dễ đọc hơn. Ngoài ra, nó sẽ cho phép bạn cung cấp chức năng cho một lớp mà không cần sửa đổi chính lớp đó:
fun Int.superOperation(anotherInt:Int):Int {
val superNumber = this * anotherInt + anotherInt
return superNumber
}
//you can now call the functions
val someNumber = 5
val superNumber = someNumber.superOperation(10) //65
5. Các đối số được đặt tên và mặc định
Giống như C #, Kotlin cũng hỗ trợ các tham số được đặt tên và mặc định cho các phương thức của nó. Nó loại bỏ hoàn toàn sự cần thiết phải truyền các giá trị trong mỗi đối số. Bạn có thể chọn giá trị nào bạn muốn sửa đổi và thì đấy! Không còn phức tạp khi chuyển cùng một giá trị cụ thể cho 10 lệnh gọi hàm của bạn!
//variable declaration
fun someOperations(var x: Int, var y:Int, var z:Int = 1){
return x+y+z
}
someOperations(1,2) //return 4
someOpeartions(y = 1, x = 1) //return 3
6. Bình đẳng tham chiếu
Kotlin cũng đi kèm với đẳng thức tham chiếu ('==='), nó sẽ kiểm tra xem hai biến hiện đang tham chiếu đến cùng một Đối tượng hay không.
var a = 10
var b = 10
a == b //true
a === b //true also, primitive type object equation will only check its value
data class Person (val name: String)
val p1 = Person("John")
val p2 = Person("John")
p1 == p2 //true
p1 === p2 //false
7. Truyền thông minh
Thay vì sử dụng phiên bản của, Kotlin hiện cung cấp cú pháp dễ đọc hơn và dễ đọc hơn để sử dụng cho việc truyền hoặc kiểm tra kiểu:
//type checking
//kotlin smart cast mechanism will also automatically change the object into corresponding type if it passes the type checking
if (shape is Circle) {
println(“it’s a Circle”)
shape.radius //automatically be casted as Circle
} else if (shapeObject is Square) {
println(“it’s a Square”)
} else if (shapeObject is Rectangle) {
print(“it’s a Rectangle”)
}
Kotlin cũng có as
từ khóa để bật tính năng truyền rõ ràng:
//It's considered unsafe since it behaves simillarly like static casting
var anotherShape = shape as Circle
//This can be used instead for safe casting
var safeShape = shape as? Circle
8. Coroutines
Lệnh gọi không đồng bộ luôn là một rắc rối trong Java. Tạo Thread chiếm rất nhiều không gian mã và làm cho mã không thể đọc được. Coroutines đã được tạo ra để thay thế hoạt động luồng truyền thống, cấp một mã rõ ràng và mạnh mẽ:
import kotlinx.coroutines.*
fun main() {
// launch a new coroutine in background and continue
GlobalScope.launch {
// non-blocking delay for 1 second (default time unit is ms)
delay(1000L)
// print after delay
println("World!")
}
// main thread continues while coroutine is delayed
println("Hello,")
// block main thread for 2 seconds to keep JVM alive
Thread.sleep(2000L)
}
Coroutines cũng hỗ trợ các hoạt động phức tạp hơn như Tham gia công việc, Kênh, Bối cảnh được chia sẻ và Cha mẹ. Bạn có thể đọc chi tiết và các cách sử dụng khác tại đây.
Kết thúc nó
Tóm lại, rất dễ dàng để bắt đầu sử dụng Kotlin, bạn có thể viết mã Kotlin rất giống với cách bạn viết mã Java. Ngoài ra, Kotlin đã cung cấp một số tính năng có thể mang lại cho bạn lợi thế khi sử dụng Java.
Chắc chắn, Java vẫn đang phát triển mạnh mẽ vào thời điểm hiện tại. Nhưng không bao giờ là sai khi bắt đầu học một điều gì đó mới. Chúng ta, với tư cách là những lập trình viên, cần phải học hỏi suốt đời và không ngừng học hỏi. Điều tuyệt vời nhất về Kotlin là việc di chuyển từ Java trở nên dễ dàng như thế nào.
Cảm ơn vì đã đọc. Tôi hy vọng bạn sẽ thích và hy vọng nó sẽ được sử dụng tốt! Chúc bạn may mắn khi khám phá Kotlin và hẹn gặp lại bạn lần sau.