← Back to list

Điểm khác biệt giữa ứng dụng Android được viết bằng Flutter và Native

Có bao giờ bạn nghỉ ứng dụng được viết trên nền flutter có tốt hơn ứng dụng được viết native hay không? Bài viết này sẽ cũng cấp cho bạn…

codelife · 2024-01-05 04:52 · 0 claps · 3.1 min read
#flutter #flutter-cơ-bản #android #mr555
Open on Medium ↗
Wiki topics: 📱 · Mobile Development

Điểm khác biệt giữa ứng dụng Android được viết bằng Flutter và Native

Có bao giờ bạn nghỉ ứng dụng được viết trên nền flutter có tốt hơn ứng dụng được viết native hay không? Bài viết này sẽ cũng cấp cho bạn kiến thức để giải đáp thắc mắc này.

I. Ứng dụng Android được lưu dưới dạng Byte code

Khi bạn viết ứng dụng Android bằng Java hoặc Kotlin, chương trình của bạn sẽ được biên dịch thành mã bytecode Java (.class), và máy ảo Java (JVM) sẽ thực thi mã bytecode này.

Nói một chút về mã byte code đây là một mã trung gian giữa mã nguồn và mã máy (native code) của hệ điều hành. Mã bytecode không phải là mã máy trực tiếp, mà là một loại mã trung gian được sử dụng để giảm thiểu sự khác biệt giữa các nền tảng và các kiến trúc phần cứng khác nhau. Sử dụng mã bytecode cho phép ứng dụng của bạn chạy trên nhiều nền tảng khác nhau mà không cần phải biên dịch lại từ đầu cho mỗi nền tảng.

Trong quá trình phát triển ứng dụng Android, bạn sử dụng một IDE (Integrated Development Environment) như Android Studio để viết mã nguồn, thực hiện biên dịch và kiểm tra ứng dụng trên máy tính của mình. IDE sẽ xử lý việc biên dịch mã nguồn code của bạn thành mã bytecode Android (đuôi .apk) và đóng gói tất cả các tài nguyên (như hình ảnh, âm thanh, XML, vv.) vào file APK. Khi ứng dụng được thi trên thiết bị thì Dalvik hoặc ART sẽ có nhiệm vụ chuyển mã bytecode này thành mã native khi ứng dụng được cài đặt hoặc khi ứng dụng đang được chạy (ART vẫn sử dụng một hình thức biên dịch thêm khi ứng dụng được chạy gọi là Just-in-Time).

Kotlin cũng có thể biên dịch thành Java bytecode

Nếu bạn nghĩ kotlin sẽ khác với java thì bạn đã sai. Kotlin cũng được biên dịch thành bytecode Java, tương tự như Java và các ngôn ngữ lập trình khác trong hệ sinh thái Java. Tuy nhiên nó cũng có thể được biên dịch thành mã máy để trực tiếp thực thi trên hệ điều hành mà không cần phải thông qua máy ảo.

Khi ứng dụng Kotlin khi cài trên Android không cần máy ảo Java để biên dịch chương trình. Tuy nhiên máy ảo java có thể được dùng để chạy ứng dụng trong quá trình phát triển ứng dụng.

II. Ứng dụng Android cần máy ảo để thực thi

Để có thể chạy được ứng dụng android hệ thống cần Java Virtual Machine (JVM) là một phần mềm giả lập được tạo ra để thực thi các chương trình.

Nó có nhiệm vụ chính là biên dịch mã byte code của ứng dụng android qua mã máy để thiết bị android của bạn có thể thực thi được chương trình. Chính vì lý do này mà hiệu suất của ứng dụng android luôn thua các ứng dụng ios trên iphone.

Nói một chút về máy ảo Java:

Máy ảo Java chỉ được sử dụng để chạy ứng dụng Android được viết bằng ngôn ngữ Java. Ứng dụng Java được biên dịch thành mã byte, sau đó được máy ảo Java (JVM) thông dịch thành ngôn ngữ máy của điện thoại Android.

III. Ứng dụng Flutter cũng cần máy ảo để biên dịch code

Tất nhiên ứng dụng được viết bằng Flutter cũng sử dụng máy ảo (DVM) để chuyển những đoạn mã của chương trình mà chúng ta viết thành bytecode tương tự như ứng dụng native.

Khi ứng dụng Flutter được cài đặt thì mã dart đã chuyền thành bytecode. Mã bytecode Dart này sẽ được Flutter Engine đọc và biên dịch thành mã máy native tại thời điểm chạy hoặc thời điểm cài đặt ứng dụng.

Tóm lại, ứng dụng Flutter cần trải qua quá trình biên dịch khi được cài đặt trên thiết bị Android. Mã nguồn Dart của ứng dụng được biên dịch thành mã bytecode Dart, và sau đó mã bytecode Dart được Flutter Engine biên dịch thành mã máy native tại thời điểm chạy (JIT compilation).

Bài viết trước:

Flutter có phải là framework đơn luồng? | by mr555 | Jan, 2024 | Medium

⚠️ Nếu thấy bài viết hữu ích đừng quên nhấn follow để ủng hộ mình và có thể đọc được các bài viết khác của mình trong tương lai 😄😄😄

Bạn có thể đọc chuỗi bài viết của mình về Flutter tại đây 👇👇👇

[embed]Flutter cơ bản Edit descriptionmedium.com


메타데이터
post_id
f76ffd759ef0
slug
điểm-khác-biệt-giữa-ứng-dụng-android-được-viết-bằng-flutter-và-native-f76ffd759ef0
url
https://medium.com/@cuongdinh008/%C4%91i%E1%BB%83m-kh%C3%A1c-bi%E1%BB%87t-gi%E1%BB%AFa-%E1%BB%A9ng-d%E1%BB%A5ng-android-%C4%91%C6%B0%E1%BB%A3c-vi%E1%BA%BFt-b%E1%BA%B1ng-flutter-v%C3%A0-native-f76ffd759ef0
canonical_url
https://medium.com/@cuongdinh008/%C4%91i%E1%BB%83m-kh%C3%A1c-bi%E1%BB%87t-gi%E1%BB%AFa-%E1%BB%A9ng-d%E1%BB%A5ng-android-%C4%91%C6%B0%E1%BB%A3c-vi%E1%BA%BFt-b%E1%BA%B1ng-flutter-v%C3%A0-native-f76ffd759ef0
author_url
https://medium.com/@cuongdinh008
status
ok
fetched_at
2026-06-28 10:39:35