Flutter là gì? Công nghệ thiết kế ứng dụng di động mới và so sách với React Native

Flutter là gì?

Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google phát triển. Flutter sử dụng ngôn ngữ DART cũng do Google phát triển và flutter cũng đã được sử dụng để tạo ra các ứng dụng native cho Google.

Khác biệt so với công nghệ Android?

Chắc hẳn không ít người đang thắc mắc, chẳng phải Google đã có bộ SDK cho di động, có tên gọi Android rồi hay sao. Nhưng với Google, thế giới mobile là quá rộng chỉ với một giải pháp duy nhất là Android. Với việc ra mắt phiên bản beta 1 này, giờ đây họ có trong tay hai bộ SDK cho ứng dụng di động: Android và Flutter. Và điểm khác biệt cơ bản giữa Flutter và Android: tạo ra các ứng dụng chạy trên cả iOS và Android.

Là một bộ SDK đa nền tảng, các ứng dụng Flutter có thể hoạt động trên cả iOS và Android. Nó như một thủ thuật khôn khéo để tương thích được với framework UI trên cả hai hệ điều hành này. Các ứng dụng Flutter không biên dịch trực tiếp với các ứng dụng native của Android và iOS. Thay vào đó, chúng chạy trên engine render Flutter (được viết bằng C++) và Flutter Framework (được viết bằng Dart, cũng như các ứng dụng Flutter), cả hai bộ này đều được đóng gói cùng với mọi ứng dụng. Sau đó bộ SDK sẽ đóng gói lại vào trong một ứng dụng để sẵn sàng chạy trên mỗi nền tảng. Bạn tạo ra ứng dụng của mình, một engine mới sẽ chạy các đoạn code của Flutter, và các đoạn code native vừa đủ để nền tảng Flutter chạy trên cả Android và iOS.

Đóng gói cả một engine đi kèm cùng ứng dụng sẽ làm cho kích thước bộ cài đặt lớn hơn hẳn. Trang Hỏi đáp của Flutter cho biết, một ứng dụng “trống” thông thường sẽ chỉ khoảng 6-7MB trên Android, vì vậy dù là ứng dụng nào, phần kích thước tăng lên cũng là rất nhiều. Nhưng lợi ích của việc này là các ứng dụng Flutter sẽ rất nhanh.

Flutter được thiết kế từ đầu để đạt tới tốc độ khung hình 60fps. Trong khi đây không phải là một con số hiếm gặp trên iOS, nhưng với Android, bạn có thể cảm thấy sự khác biệt rõ rệt ngay lập tức. Cũng nhờ việc xuất xưởng cùng với cả một nền tảng cho ứng dụng của mình, các nhà phát triển sẽ tránh được nhiều vấn đề về sự phân mảnh của Android.

Ưu và nhược điểm của Flutter, so sánh với React Native?

Flutter là lời đáp trả trực tiếp của Google nhắm thẳng vào React-Native của Facebook. Tuy mới ra đời sau React-Native một khoảng thời gian khá lâu nhưng hiện tại Flutter đã có 30k Github stars so với 65k Github stars và trở thành xu hướng trong cộng đồng phát triển.

Flutter

Ưu điểm

  • Mạnh về animation, performance ứng dụng rất cao.
  • Giao tiếp gần như trực tiếp với native.
  • Static language nhưng với syntax hiện đại, compiler linh động giữa AOT (for archive, build prod) và JIT (for development, hot reload).
  • Có thể chạy được giả lập mobile ngay trên web, thuận tiện khi phát triển. Các metric measure performance được hỗ trợ sẵn giúp developer kiểm soát tốt performance của ứng dụng.
  • Có thể dùng để build các bundle/framework gắn và app native để tăng performance.

Nhược điểm

  • Bộ render UI được team author gần như viết lại, không liên quan tới UI có sẵn của Framework native, dẫn đến memory sử dụng khá nhiều.
  • Phải học thêm ngôn ngữ DART, bloc pattern, DART Streaming.
  • Còn khá mới. Một số plugin chưa stable.

React Native

Ưu điểm

  • Thiên về development/hotfix nhanh (hot reload, bundle injection).
  • Sử dụng JS (quen thuộc với nhiều developer) và có thể share business logic codebase với frontend (js).
  • Backup bởi Facebook, Facebook dùng để phát triển sản phẩm hàng ngày nên developer hưởng lợi khá nhiều từ đây.
  • Hiện tại đã rất nhiều thư viện, gần như đã rất đầy đủ cho các nhu cầu phát triển ứng dụng thông dụng.

Nhược điểm

  • Giao tiếp với native thông qua các bridge, dễ bị bottleneck nếu không được kiểm soát tốt.
  • Dùng JS nên mang theo các đặc điểm của JS: rất dễ làm nhưng cũng dễ sai, dẫn tới khó bảo trì về sau.
  • Hiệu năng animation chưa tốt, muốn làm tốt phải làm từ native, tầng js chỉ call vào, setup views. Tuy nhiên với các interactive animation thì khó thực hiện.
  • Không thích hợp cho các app cần năng lực tính toán cao (hash, crypto, etc).

Các ứng dụng viết bằng flutter

Tuy ra đời sau nhưng Fullter đang là một hot trend trong giới developer nhờ những ưu điểm vượt trội của nó. Các nhược điểm về các plugin và việc phát triển cộng đồng sẽ được cải thiện theo thời gian. Người viết tin rằng ngôn ngữ này sẽ càng phát triển và được tin dùng vởi các nhà phát triển trong tương lai.

Nguồn: Tổng hợp, Nordic, Mobile day