-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local

Nâng đôi cánh Java!
Thực sự là tình yêu của mình dành cho #Java là rất lớn, mà khi yêu ai rồi thì mình chỉ biết có người đó thôi, người ta gọi đó là mù quáng. Nhưng khi bước vào dự án thực tế với #kotlin, quan điểm của mình đã thực sự thay đổi, và bây giờ, tất cả các dự án, nếu có thể mình sẽ sử dụng #kotlin, vậy kotlin có gì mà hay ho vậy?
Giới thiệu
Kotlin được thiết kế và xây dựng với #JetBrains vào năm 2011, mục tiêu của nó là cung cấp khả năng lập trình cùng lúc với
- Hướng đối tượng (#OOP)
- Hướng function (#FP) Và theo mình, sự kết hợp này là hoàn hảo, nó tạo cảm giác thoải mái khi lập trình, có thể ví như chúng ta vừa đọc sách, vừa uống Café vậy
Những cải tiến
Kotlin đã wrap lại rất nhiều hàm của #java và giúp chúng ta tiết kiệm được rất nhiều dòng code, nó cũng sinh ra hẳn 1 style code mới theo kiểu chain (viết các lệnh nối tiếp nhau) và ơn giời #Kotlin giúp chúng ta thoát khỏi cơn ác mộng check null và giúp chúng ta tránh được rất nhiều lỗi tỉ đô với NullPointerException
Kotlin mang đến 2 thứ mà mình cho là quan trọng nhất:
- Extension function: Giúp chúng ta mở rộng các đối tượng mà không cần can thiệp vào code cũ
- Coroutines: giúp chúng ta thoát khỏi việc khởi tạo thread và tạm quên đi sự phức tạp của xử lý đa luồng
Ví dụ
Cùng lấy 1 vài ví dụ để chúng ta thấy được sức mạnh củ kotlin so với java nhé
Extension Function
Ví dụ để chuyển từ đối tượng java.util.Date
sang java.time.LocalDateTime
trong java chúng ta sẽ cần tạo ra một lớp để viết hàm static kiểu này:
public final class DateConverter {
private DateConverter() {}
public static LocalDateTime toLocalDateTime(Date date) {
return ZonedDateTime
.ofInstant(date.toInstant(), ZoneId.systemDefault())
.toLocalDateTime();
}
}
Chúng ta phải tốn 8 dòng code có ký tự (chưa kể những dòng trắng).
Nào bây giờ với kotlin chúng ta chỉ đơn giản thế này thôi:
fun Date.toLocalDateTime() =
ZonedDateTime
.ofInstant(toInstant(), ZoneId.systemDefault())
.toLocalDateTime()
Bạn thấy không, chỉ với 4 dòng code chúng ta đã giải quyết được cùng một vấn đề với Java (ít hơn 4 dòng code)
Coroutines
Với java để in một dòng Hello World
với thread pool, chúng ta cần làm thế này:
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() ->
System.out.println(Thread.currentThread().getName() + ": Hello World")
);
Chúng ta phải mất tới 3 dòng code, nhưng với kotlin coroutines chỉ đơn giản là một dòng code mà thôi.
launch { println("${Thread.currentThread().name}: Hello World") }
Kết luận
Ban đầu chỉ sử dụng cho Android thì đến thời điểm hiện tại Kotlin đã đang bắt đầu dần phổ biến để viết các ứng dụng thay cho Java vì sự đơn giản của nó. Cá nhân mình tin rằng Kotlin sẽ nâng đôi cánh cho Java bay cao hơn nữa, nếu bạn đang có ý định viết ứng dụng chạy trên JVM thì hay cân nhắc thử kotlin xem sao nhé.
Tham khảo
-
Design Pattern
- Singleton Design Pattern
- Factory Design Pattern
- Factory Method Design Pattern
- Abstract Factory Design Pattern
- Builder Design Pattern
- Prototype Design Pattern
- Object Pool Design Pattern
- Chain of Responsibility Design Pattern
- Command Design Pattern
- Interpreter Design Pattern
- Iterator Design Pattern
- Mediator Design Pattern
- Memento Design Pattern
- Observer Design Pattern
- Observer Design Pattern - Xử Lý Exception
- Strategy Design Pattern
- Template Method Design Pattern
- Visitor Design Pattern
- Null Object Design Pattern
- Adapter Design Pattern
- Bridge Design Pattern
- Composite Design Pattern
- Decorator Design Pattern
- Flyweight Design Pattern
- Proxy Design Pattern
- S.O.L.I.D
- Clean code
- Lập trình socket
- Java Core
- Multi-Thread
- Spring
- Java Web
- Memory Caching
- Message Queue
- DevOps
- Xây dựng một nền tảng
- MongoDB
- MySQL timestamp
- Properties vs yaml
- Kotlin
- Lập Trình Machine Learning với PyTorch
- Mã Nguồn Mở
- Ezy HTTP
- Free Chat
- Một số kinh nghiệm với Git
- Review cho đồng nghiệp!
- Setup Dev Environment
- Hello World
- Create a Server Project
- Handle Client Requests
- Using ezyfox-server-csharp-client
- Using ezyfox-es6-client
- Client React.js Interaction
- Build And Deploy In Local