10/16/2021

Native với Cross Platform: ưu và nhược điểm | Sharing


Khi mà chục năm trước thì web là sự theo đuổi của bao các lập trình viên kì nay kỉ nguyên của web đang dần khép lại, khép lại không phải là không tìm được việc nữa nha, mà là nó không còn hot, không còn là trend như chục năm về trước nữa chứ việc làm thì sẽ không bao giờ là thiếu. Thay vào đó thì ngày nay thiết bị di động, các thiết bị cầm tay đang dần trở lên phổ biến, vì thế phát triển ứng dụng cho các thiết bị di động đang dần trở lên phổ biến và tương lai trong mấy năm tới phát triển ứng dụng cho thiết bị di động sẽ là một trend mới.

Hiện nay có 4,4 triệu ứng dụng trên 2 chợ ứng dụng lớn nhất là Google Play và AppStore, nhắm vào thị trường 14 tỷ thiết bị di động trên toàn thế giới (xem biểu đồ bên trên). Dự kiến tới năm 2025 thì số thiết bị di động có thể lên tới 18,2 tỷ cái. Đây rõ ràng là một thị trường màu mỡ, giàu tiềm năng mà rõ ràng là ai cũng muốn chiếm lấy. Tiền lương trả cho các lập trình viên mobile cũng không hề thấp, với các bạn từ 2-3 năm kinh nghiệm thì mức lương 40 triệu đồng / tháng là bình thường, tuy nhiên vấn đề lương là khó nói chúng ta chỉ nhìn vào để làm động lực thôi. Mình sẽ không nói tới lương nữa vì nó là vấn đề nhạy cảm, các bạn chỉ biết rằng lập trình mobile app là một xu hướng và nếu các bạn giỏi thì các công ty hoàn toàn chải thảm đỏ mời các bạn về làm mới mức lương cực kì hấp dẫn.

OK! Nói qua vậy để mọi người thấy rằng phát triển ứng dụng cho thiết bị di động sẽ là xu hướng trong các năm tiếp theo. Vậy học lập trình mobile thì phải học cái gì? Có 2 loại ứng dụng mobile app là native app và cross platform app. Chúng ta sẽ đi từng vào từng loại một nha.

Native App Development

Phát triển ứng dụng native hay ứng dụng gốc tức là đề cập tới việc xây dựng ứng dụng dành riêng cho một nền tảng bằng các ngôn ngữ dành riêng cho nền tảng đó, ví dụ như Android sẽ là Java hoặc Kotlin, iOS sẽ là Swift hoặc Objective-C. 

Các ứng dụng gốc được hỗ trợ từ trực tiếp các nhà phát triển nền tảng nên các ứng dụng native là các ứng dụng có hiệu năng cao, trải nghiệm người dùng tốt. Tuy nhiên chi phí phát triển ứng dụng native là cao vì các công ty phải phát triển ứng dụng trên cả 2 nền tảng Android và iOS là độc lập với nhau. 

Ưu điêm việc phát triển ứng dụng Native: 

  • ‍Broad Functionality: bạn sẽ có quyền truy cập vào mọi API và công cụ do nền tảng mà bạn đang làm việc cung cấp. Về mặt kỹ thuật, không có giới hạn nào về cách các lập trình viên có thể làm việc với ứng dụng mới.

  • Hỗ trợ tốt hơn từ các store: một ứng dụng native sẽ dễ dàng xuất bản và được xếp hạng cao hơn trên các chợ ứng dụng vì chúng mang lại hiệu suất và tốc độ tốt hơn.

  • Khả năng mở rộng: các ứng dụng được xây dựng cho môi trường gốc cũng có xu hướng mở rộng hơn, nhờ sự linh hoạt trong quản lý tài nguyên và hàng loạt công cụ có sẵn.‍

  • Hiệu năng cao và trải nghiệm người dùng tốt: các ứng dụng native được hỗ trợ trực tiếp từ các nhà phát triển nền tảng nên mang lại hiệu năng tốt hơn, trải nghiệm người dùng tuyệt vời hơn.

Hạn chế của phát triển ứng dụng native: 

  • Giá thành và thời gian: việc phát triển ứng dụng native chỉ giúp cho ứng dụng của bạn chạy trên 1 nền tảng, điều đó dẫn tới bạn phải có 1 team khác để build lại 1 ứng dụng khác, mới hoàn toàn để chạy trên các nền tảng khác, điều này là rất tốn kém và mất thời gian.

Cross-platform App Development

Phát triển ứng dụng đa nền tảng chỉ ra quá trình tạo ra một ứng dụng hoạt động trên một số nền tảng. Điều này được thực hiện bằng cách sử dụng các công cụ như React Native, Xamarin và Flutter, nơi các ứng dụng được tạo có thể được triển khai trên cả Android và iOS.

Khi ứng dụng được viết một lần và có thể chạy đa nền tảng thì điều này giúp cho bạn có thể tiết kiệm được thời gian cũng như tiền bạc bỏ ra so với khi xây dựng các ứng dụng Native.

Về ưu điểm và hạn chế của cross-platform? Gần như mọi thứ là ngược lại so với app native. Khi phát triển các ứng dụng platform các bạn có thể gặp khó khăn khi truy cập vào các chức năng của điện thoại thông minh như micro, máy ảnh, ... (‍Limited Functionality), các ứng dụng đa nền tảng thường chậm hơn so với các ứng dụng gốc vì chúng cần một lớp khác ở giữa bổ sung, các ứng dụng đa nền tảng không thể tận dụng các UX gỗc nên mang lại trải nghiệm người dùng không tôt.

Ưu điểm duy nhất mà cross-platform mang lại chính là tiền, chi phí. Việc phát triển ứng dụng đa nền tảng sẽ giúp bạn chỉ cần viết 1 lần mà ứng dụng có thể chạy trên các nền tảng khác nhau. Ưu điểm tuy ít nhưng nó là mấu chốt để cho các nền tảng cross-platform phát triển ngày càng mạnh.

Tại trường Đại Học Bách Khoa Hà Nội các bạn có 2 môn học là "Phát triển ứng dụng cho thiết bị di động" và "Phát triển ứng dụng đa nền tảng" là được học về phát triển mobile app. Với môn "Phát triển ứng dụng đa nền tảng" các bạn được học về các nguyên lý đa nền tảng, các framework đa nền tảng như là React Native và Flutter. Với môn "Phát triển ứng dụng cho thiết bị di động" các bạn được dạy tập chung vào phát triển ứng dụng native trên Android với công cụ Android Studio, mình sẽ nói kĩ hơn về 2 môn này trong các bài viết sau nha.

Nếu các bạn muốn theo mobile app thì nên học gì? Với ý kiến của mình các bạn nên chọn cho mình 1 nền tảng  để phát triển app native để học (Android hoặc iOS) và 1 framework hỗ trợ phát triển các app cross-platform (React Native hoặc Flutter). Đó là ý kiến của mình thôi, còn dĩ nhiên các bạn có thể học tập chung vào Android, hoặc học tập chung vào iOS hoặc là học tập chung vào 1 trong các framework đa nền tảng cũng không hoàn toàn có vấn đề gì.

Tham khảo: https://www.uptech.team/https://www.statista.com/

0 Bình luận:

Post a Comment