Sự khác nhau cơ bản giữa Java và Kotlin

Nếu các bạn đã làm việc với Java thì việc bắt đầu với Kotlin rất dễ dàng, bởi vì Kotlin ra đời để improve những điều không cần thiết của Java, giúp chúng ta focus về business của ứng dụng thay vì phải viết rất nhiều dòng code.

Chẳng hạn, với ứng dụng Hello World với main() method để in dòng chữ “Hello World”:

  • Với Java chúng ta cần tạo mới một tập tin .java, sau đó thì định nghĩa class đi kèm với tập tin .java này. Tiếp nữa thì tạo mới một main() method để sử dụng System.out.println() in ra dòng chữ “Hello World”:
  • Với Kotlin thì, các bạn cũng cần tạo mới tập tin .kt nhưng không cần phải định nghĩa tên class. Các bạn có thể viết thẳng phương thức static main() để in dòng chữ “Hello World”:

Các bạn thậm chí không cần phải có dấu chấm phẩy ở cuối nữa!

Ở đây, như các bạn thấy trong ví dụ trên, phương thức trong Kotlin sẽ bắt đầu với keyword “fun”. Tham số của phương thức thì bắt đầu với tên tham số, rồi mới đến kiểu dữ liệu của tham số này. Tên tham số và kiểu dữ liệu ngăn cách bởi dấu hai chấm “:”.

Các bạn có thể remove tham số args trong phương thức main() ở trên luôn, vì trong body của phương thức, chúng ta đang không sử dụng tham số này:

Kết quả vẫn như vậy:

Nếu trong Java, phương thức main() mà các bạn remove tham số (String[] args) thì Java sẽ hiểu phương thức main() này không phải là phương thức main() để chạy ứng dụng.

Kotlin sử dụng các wrapper cho những code common trong Java. Trong ví dụ trên để in dòng chữ “Hello World”, thì như các bạn thấy, thay vì viết:

trong Java, thì giờ chúng ta chỉ cần viết:

trong Kotlin.

Nếu phương thức của các bạn có trả về kết quả thì trong Kotlin, cách viết cũng khác. Chúng ta sẽ đưa kiểu dữ liệu trả về ngay sau phần khai báo tên phương thức và tham số, ngăn cách bằng dấu hai chấm, như sau:

Ví dụ:

Code rất ngắn gọn phải không các bạn?

Trong Kotlin, chúng ta không sử dụng toán tử new để khởi tạo một đối tượng. Kotlin lược bỏ bớt toán tử này, nhưng chúng ta cũng có thể khởi tạo mới đối tượng, ví dụ như sau:

Class Student có nội dung như sau:

Chúng ta sẽ khai báo biến bắt đầu với keyword val và với Getter hoặc Setter method, chúng ta cũng không cần gọi thẳng các phương thức này, chỉ cần gọi tên biến với thuộc tính là được. Thật ra thì Kotlin cũng sẽ biên dịch ra bytecode giống Java nhưng chỉ là lược bỏ cho gọn thôi các bạn!

Kết quả cũng giống như chúng ta làm trong Java, như sau:

Code đơn giản phải không các bạn?

Trong Kotlin thì chúng ta có thể sử dụng wrapper arrayListOf() để khởi tạo mới một đối tượng ArrayList. Việc access tới các phần tử trong ArrayList này cũng dễ dàng hơn nhiều:

Kết quả:

Cú pháp giống như khi làm việc với mảng trong Java.

Như các bạn thấy, chúng ta cũng không cần phải sử dụng phương thức get() để access tới các phần tử trong List. Chỉ cần sử dụng dấu ngoặc vuông và chỉ định index của phần tử cần access là được.

Đối với Exception thì trong Kotlin, chúng ta không có sự phân biệt giữa Checked Exception và Runtime Exception.

Tất cả exception trong Kotlin đều là Runtime Exception. Nếu trong Java thì đoạn code sau, các bạn phải handle exception:

Chúng ta handle exception này bằng cách sử dụng try…catch hoặc thêm throws IOException

Trong Kotlin, thì các bạn không cần làm điều này:

IDE không yêu cầu các bạn phải handle exception

Tất nhiên là các bạn cũng có thể sử dụng try … catch để handle những exception. Nhưng không bắt buộc ở compile time.

Còn rất nhiều sự khác nhau giữa Java và Kotlin nữa. Các bạn hãy tìm hiểu thêm nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *