Chọn nền tảng nào để xây dựng ứng dụng di động?
Chào các bạn,
Hiện nay, để xây dựng được một ứng dụng di động, ta có 2 cách: Sử dụng native code và cross-platform.
Native code là gì?
Xây dựng ứng dụng native tức là sử dụng ngôn ngữ của chính nền tảng đó. Ví dụ sử dụng Java xây dựng ứng dụng cho Android với IDE là Android Studio/Eclipse ; Object-C hoặc Swift cho IOS, IDE là Xcode hay C# cho Window Phone IDE là Visual Studio . Ưu điểm của cách này là đem lại cảm giác 'chân thật' nhất cho người dùng và ứng dụng có hiệu suất hoạt động tốt nhất, lập trình viên có thể truy cập sâu vào phần cứng của điện thoại.
Ngoài ra, phát triển theo hướng native cũng dễ hơn cross-platform do có rất nhiều nguồn tài liệu hỗ trợ từ nhà phát triển cũng như từ phía cộng đồng.
Nhưng nhược điểm của nó là gì? Nếu bạn muốn ứng dụng của mình hoạt động trên cả 3 nền tảng, bạn phải học 3 ngôn ngữ, học cách sử dụng các IDE mới, rất mất thời gian đúng không? Nếu bạn không học nổi mà thuê người làm thì cũng phải thuê 3 team khác nhau cho 3 nền tảng, suy ra mất tiền bạc.
Cross-platform: Đa nền tảng
Cross-platform cho phép phát triển ứng dụng một lần và có thể build ra nhiều nền nảng khác nhau. Mỗi cross-platform lại sử dụng một ngôn ngữ lập trình riêng biệt và có IDE riêng. Có thể kể đến những cross-platform tiêu biểu, đang 'hot' nhất hiện nay đó là Xamarin (C#) , PhoneGap (HTML , CSS), Ionic ( Javascript ), Qt (C++), Cordova, hay V-Play,vv Đó là mình chưa kể đến các cross-platform để phát triển game.
Ưu điểm dễ thấy là có thể giảm được thời gian xây dựng ứng dụng đáng kể. Ứng dụng Gia Sư Việt mình đã xây dựng cũng sử dụng cross-platform, một mình mình làm nó trong khoảng 100h từ frontend, backend.
Gia sư Việt - ứng dụng di động đầu tiên mình viết bằng cross-platform
Ngày càng có nhiều cross-platfrom như thế được ra đời để đáp ứng được sự thiếu hụt về lượng app trên thị trường. Thêm một ví dụ cụ thể là Tinder - ứng dụng dating đang hot hiện nay được viết bằng Ionic + Meteor. Nó cũng đẹp chẵng kém gì ứng dụng native phải không nào? Còn hiệu năng gì không cần phải lo nữa gì càng ngày cấu hình điện thoại lại manh mẽ hơn.
Vậy câu hỏi đặt ra là ai cũng theo hướng cross-platform vậy native 'bỏ xó' à?
9 người 10 ý mà, có người lại thích native hơn thì sao, hoặc họ chỉ thích phát triển trên một nền tảng thôi. Hoặc họ theo native code để phát triển ra những cross-platform mới chẳng hạn.
Tinder - Một ứng dụng được xây dựng bằng Ionic + Meteor
Vậy nên phát triển ứng dụng native hay cross-platform?
Bản thân mình không có máy Mac nên không thể theo native IOS được ( Mình không thích hackintosh hay máy ảo để chạy Xcode). Mình lại thích và học C# trước nên không theo native Android. Vì thế mình đã chọn theo hướng cross-platform. Theo quan điểm của mình, native hay đa nền tảng đều có điểm mạnh và điểm yếu riêng, tùy theo mục đích của bạn mà sử dụng. Nếu phát triển ứng dụng cho khách hàng thì có thể dùng cross-platform để đẩy nhanh tốc độ, còn nếu bạn muốn cập sâu vào phần cứng của máy thì có thể chọn theo hướng native.
Bạn đã có hướng đi cho mình chưa, comment để chia sẻ với mọi người nhé!