Roadmap dành cho phát triển app di động – hướng đi nào cho lập trình viên?

3455

Có 2 hướng đi mà bạn có thể chọn

Nếu bạn đang tập trung vào việc xây dựng ứng dụng cho người dùng của một nền tảng duy nhất, thì cách hiệu quả nhất sẽ là phát triển các công nghệ có nguồn gốc từ nền tảng đó (chúng ta sẽ thảo luận sau).

Các ứng dụng cần nhiều quyền truy cập phần cứng sẽ phải được xây dựng riêng cho từng nền tảng. Ví dụ: nếu bạn đang cố gắng xây dựng một ứng dụng để quản lý việc sử dụng RAM của thiết bị, thì bạn sẽ phải phát triển độc lập cho từng nền tảng. Bạn sẽ không thể phát triển ứng dụng này bằng các công cụ phát triển đa nền tảng.

Nhưng nếu ứng dụng di động của bạn hoạt động như một giao diện cho người dùng cho các tác vụ không phụ thuộc vào phần cứng, thì bạn có thể sử dụng các công cụ phát triển đa nền tảng để đạt hiệu quả. Điều này sẽ giảm đáng kể tổng thời gian phát triển của bạn trong việc tạo ứng dụng cho mỗi nền tảng.

Có hai loại công cụ để phát triển ứng dụng đa nền tảng: Hybrid ApplicationNative Application nhưng chúng ta sẽ thảo luận về điều này sau.

Single Platform

Trước tiên, hãy tìm hiểu về việc phát triển các ứng dụng cho từng hệ điều hành di động bằng cách sử dụng các công cụ riêng của chúng, bao gồm: Android, iOS và Windows Phone.

Thật ra thì còn có các Hệ điều hành khác như FireFox Mobile và Ubuntu Mobile OS, nhưng chỉ chiếm tỉ lệ rất nhỏ.

Android

Android chiếm tỉ lệ lớn nhất trong số các hệ điều hành di động và do đó, số lượng ứng dụng được phát triển cho Android vượt quá số còn lại. Một HĐH Android thường sử dụng Linux kernel với một số API cấp cao hơn, được viết bằng C.

Tuy nhiên, hầu hết các ứng dụng gốc được phát triển trong Android đều được lập trình bằng Java và chạy trên máy ảo Dalvik, sử dụng trình biên dịch đúng lúc (just-in-time compilation) và biên dịch trước thời gian (ahead-of-time compilation) để dịch mã byte Java sang mã dex của Dalvik. Song song đó, hầu hết các nhà phát triển sử dụng Android Studio IDE của Google để phát triển ứng dụng của họ. Tuy nhiên, bạn cũng có thể sử dụng IDE Eclipse.

Tuy nhiên, kể từ đầu năm 2017, có một xu hướng mới trong việc sử dụng Kotlin để lập trình các ứng dụng Android. Đối với những người không biết Kotlin là gì, đây là ngôn ngữ lập trình statically-typed chạy trên JVM (Java Virtual Machine – Máy ảo Java). Ngay cả Google cũng đang thúc giục các nhà phát triển sử dụng Kotlin thay vì Java.

Theo quan điểm của tôi, bạn nên học Kotlin nếu muốn theo trend còn không hãy chọn Java vì có rất nhiều nguồn học hướng dẫn vô cùng chi tiết và đầy đủ.

iOS Mobile

Apple iOS là hệ điều hành di động lớn thứ 2 được sử dụng rộng rãi. Không cần phải nói, vì nó là một sản phẩm của Apple nên HĐH này không phải nguồn mở. Tuy nhiên, việc phát triển ứng dụng được thực hiện bằng iOS SDK (Bộ công cụ phát triển phần mềm) mà Apple cung cấp.

Bạn có thể sử dụng ngôn ngữ Swift hoặc Objective-C để lập trình ứng dụng iOS gốc trên XCODE IDE

Trong đó, Swift là một ngôn ngữ lập trình được phát triển bởi Apple dành riêng cho phát triển ứng dụng.

Windows Phone

Windows phone là hệ điều hành di động lớn thứ 3 được sử dụng rộng rãi. Tuy nhiên, Microsoft gần đây đã tuyên bố rằng họ sẽ không còn phát triển trên Windows Phone để tập trung vào Surface Tablets đang trở nên phổ biến.

Trong khi đó, phiên bản Windows 10 mới nhất có một tính năng được gọi là Universal Windows Platform (UWP), một nền tảng cơ bản duy nhất cho tất cả các thiết bị chạy HĐH của Windows. Do đó, chúng ta có thể phát triển các ứng dụng hoạt động đồng thời trên PC, máy tính bảng, điện thoại và Xbox.

Windows cung cấp Windows SDK để phát triển ứng dụng Windows. Do đó mà các developer thường sử dụng XAML để thiết kế ứng dụng và lập trình nó bằng ngôn ngữ C # trong Visual Studio IDE.

Cross-Platform

Nếu bạn đang có kế hoạch phát triển một ứng dụng di động trên hai hoặc nhiều nền tảng, thì các công cụ phát triển đa nền tảng chắc chắn sẽ giúp bạn.

Có hai loại kỹ thuật phát triển đa nền tảng là: Hybrid Application và Native Application

Hybrid Application

Các công cụ phát triển Hybrid application vốn được tạo ra để giúp các nhà phát triển web dễ dàng phát triển và triển khai các ứng dụng lên nền tảng di động. Hybrid application thực ra chính là một ứng dụng HTML5 cho nền tảng di động.

Nói cách khác, hybrid application sẽ được lập trình bằng HTML5, CSS và Javascript sau đó được triển khai bằng một số cách riêng cho mỗi HĐH di động.

Các hybrid application được sử dụng rất nhiều bởi công ty và startup, những người có ứng dụng web và muốn triển khai các native mobile application cho chính web đó. Các ứng dụng này không thể truy cập nhiều tính năng phần cứng của thiết bị nhưng có thể hoạt động như một giao diện người dùng dễ dàng. Vì vậy mà hầu hết các công cụ phát triển hybrid application chỉ áp đặt một số trình bao bọc xung quanh ứng dụng HTML5 mà nhà phát triển có thể xây dựng và triển khai nó lên các nền tảng di động.

Một ví dụ về ứng dụng Hybrid mà bạn có thể dễ dàng tìm thấy là ứng dụng di động Amazon, vốn chỉ là một trình bao bọc xung quanh ứng dụng HTML5.

Native Application

Chúng ta đã thấy một ứng dụng Hybrid là gì: Một ứng dụng web có layer phủ trên nó. Tuy nhiên, có một phương pháp khác để tạo ứng dụng đa nền tảng.

Các native application compilation tool giúp bạn lập trình ứng dụng của mình theo một ngôn ngữ cụ thể và sau đó cung cấp các công cụ để bạn biên dịch ứng dụng các thành phần gốc cho mỗi nền tảng.

Những ứng dụng được xây dựng bằng các công cụ này sẽ có hiệu quả phần cứng cao hơn nhiều so với các hybrid application vì nó sử dụng chính các thành phần gốc của hardware. Đây cũng là điểm yếu của hybrid application vì đôi khi có thể tạo ra các lỗi khó chịu và không thể truy cập các tính năng phần cứng một cách có hiệu quả.

Techtalk via hackernoon