Lập trình Kotlin - Kiến trúc Kotlin

Kiến trúc Kotlin

Kotlin là một ngôn ngữ hướng tới chạy trên máy ảo Java (Java Virtual Machine – JVM). Do vậy việc thực thi của ứng dụng Kotlin không diễn ra trực tiếp trong hệ điều hành mà trong khuôn khổ của JVM. Hai đặc điểm trên thể hiện Kotlin là một ngôn ngữ lập trình “ngang hàng” với Java. Do vậy quá trình biên dịch và thực thi ứng dụng Kotlin giống hệt như với Java hay Scala (và bất kỳ ngôn ngữ biên dịch nào hướng tới JVM). Quy trình build ứng dụng Kotlin thể hiện trong sơ đồ dưới đây

  • Trình biên dịch Kotlin thành mã bytecode có thể chạy trên JVM. Bytecode này chính xác bằng mã byte được tạo bởi tệp .class Java.
  • Bất cứ khi nào Kotlin nhắm mục tiêu JavaScript, trình biên dịch Kotlin sẽ chuyển đổi tệp .kt thành ES5.1 và tạo mã tương thích cho JavaScript.
  • Trình biên dịch Kotlin có khả năng tạo mã tương thích với nền tảng thông qua LLVM.
  • Kotlin Multiplatform Mobile (KMM) được sử dụng để tạo các ứng dụng di động đa nền với mã được chia sẻ giữa Android và iOS.

kotlin Architecture

File mã nguồn (source code) của Kotlin có phần mở rộng kt và được lưu tập trung trong thư mục src của dự án.

Chương trình dịch Kotlin đọc các file mã nguồn và chuyển thành một dạng trung gian gọi là bytecode. Các file bytecode có phần mở rộng là class.

Chương trình dịch Kotlin có tên gọi là kotlinc. Bạn có thể gọi kotlinc trực tiếp từ giao diện dòng lệnh. Tuy nhiên, bạn nên sử dụng tính năng build ứng dụng của IntelliJ IDEA.

Một nhóm các file class có thể được đóng gói vào file jar.

Các chương trình của Kotlin sử dụng bộ thư viện Kotlin runtime. Bộ thư viện này chứa định nghĩa của các class và phần mở rộng bổ sung cho Java API. Khi phân phối ứng dụng Kotlin sẽ đồng thời phải phân phối kèm bộ thư viện này.

Với đặc điểm trên, quá trình thực thi ứng dụng Kotlin hoàn toàn tương tự như một ứng dụng Java thông thường.

Có một số điểm cần lưu ý về quá trình dịch mã nguồn Kotlin:

  • Trong sơ đồ trên bạn thấy có cả nhánh Java compiler. Do Kotlin được thiết kế để đảm bảo tương thích và tương tác tối đa với Java, project Kotlin có thể chứa cả mã nguồn của Java.
  • Phần mã nguồn Java sẽ do Java compiler chịu trách nhiệm dịch.
  • Kotlin tương thích với các hệ thống build truyền thống của Java như Maven, Gradle và Ant, kể cả khi sử dụng cả hai ngôn ngữ trong dự án.
  • Hiện nay Kotlin compiler có thể dịch mã nguồn sang JavaScript hoặc mã máy của các nền tảng Windows/Linux/Mac mà không cần đến JVM. Kotlin cho Android không sử dụng JVM mà là một loại máy ảo riêng, gọi là ART (Android Runtime).

Kotlin Native

Kotlin cũng có thể được dịch trực tiếp sang mã máy của các nền tảng mà không sử dụng máy ảo Java, gọi là Kotlin/Native.

Có thể dễ dàng đưa mã Kotlin đã biên dịch vào các dự án hiện có được viết bằng C, C ++, Swift, Objective-C và các ngôn ngữ khác.

  • macOS

  • iOS, tvOS, watchOS

  • Linux

  • Windows (MinGW)

  • Android NDK

  • Many more...

Kotlin / Native chủ yếu được thiết kế để cho phép biên dịch cho đa nền tảng ví dụ: thiết bị nhúng hoặc iOS.

Có thể dễ dàng đưa mã Kotlin đã biên dịch vào các dự án hiện có được viết bằng C, C ++, Swift, Objective-C và các ngôn ngữ khác.