Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Chọn ngôn ngữ lập trình phù hợp cho phát triển Mobile App

Nếu bạn muốn phát triển ứng dụng di động, bạn sẽ cần biết ngôn ngữ lập trình cho phát triển mobile. Nhưng việc chọn ngôn ngữ tốt nhất (hoặc các ngôn ngữ) cho một dự án có thể khó khăn. Có nhiều lựa chọn, và trong bài này tôi sẽ giúp bạn thu hẹp chúng để bạn có thể chọn tốt nhất.

Lựa chọn ngôn ngữ lập trình phụ thuộc vào những gì bạn đang xây dựng. Đối với một số app, mobile developer có thể không cần tất cả tính năng của một ngôn ngữ cụ thể. Trong tình huống khác, một app đơn lẻ có thể yêu cầu hơn một ngôn ngữ. Trong hướng dẫn này, tôi sẽ đi qua các ngôn ngữ phát triển mobile và highlight một số chi tiết có thể giúp bạn đưa ra quyết định đúng.

Ngôn ngữ Native Android

Java

Theo TIOBE Index, Java là ngôn ngữ lập trình phổ biến thứ ba tính đến tháng 1/2022. Nếu bạn muốn phát triển app Android, bạn sẽ khả năng cao gắn bó với Java. Nó có cộng đồng developer lớn và thành lập, nghĩa là bạn dễ dàng nhận hỗ trợ kỹ thuật và giúp đỡ.

Vì vậy, khi phát triển mobile với Java, bạn tự do tạo ra bất kỳ loại app nào bạn nghĩ ra. Giới hạn chỉ là trí tưởng tượng và trình độ Java của bạn.

Kotlin

Kotlin được thiết kế và phát triển bởi JetBrains, công ty Czech nổi tiếng với IDE IntelliJ IDEA. Team Android của Google tuyên bố năm 2017 họ chính thức hỗ trợ ngôn ngữ Kotlin.

Kotlin được phát triển để giải quyết một số vấn đề trong Java. Theo người hâm mộ ngôn ngữ, cú pháp Kotlin đơn giản, sạch hơn, và dẫn đến ít code bloat hơn. Điều này giúp bạn tập trung hơn vào giải quyết vấn đề thực, thay vì đấu tranh với cú pháp verbose. Cũng, bạn có thể dùng Kotlin và Java cùng nhau trong cùng project, và điều đó làm nó thực sự mạnh mẽ.

Ngôn ngữ Native iOS

Swift

Nếu bạn muốn phát triển cho thiết bị iOS, Swift có thể là ngôn ngữ cho bạn. Ra mắt 2014 và open source 2015, Swift đã trở thành ngôn ngữ thống trị cho iOS developer.

Theo TIOBE index tháng 1/2022, Swift là ngôn ngữ phổ biến thứ 10.

Apple thêm tính năng tuyệt vời trong Swift 5.5, bao gồm async/await, structured concurrency, actors, và hơn thế. Nỗ lực lớn của Apple để promote Swift rõ ràng cho thấy họ muốn ngôn ngữ mới này trở thành mainstream cho app ecosystem của họ.

Objective-C

Objective-C là ngôn ngữ phát triển gốc cho iOS. Mặc dù Swift là state of the art cho iOS development, nhiều project vẫn phụ thuộc Objective-C. Vì vậy chuyển đổi từ Objective-C sang Swift hơi chậm, và bạn có thể vẫn cần cả hai cho một số project.

Ngôn ngữ Cross-Platform

JavaScript với React Native

JavaScript có lịch sử lâu đời từ ngày đầu World Wide Web. Ngôn ngữ front-end và server-side rất phổ biến, cho phép web developer làm mọi thứ từ tăng trải nghiệm người dùng đến xây dựng complete web app.

Hôm nay, có một số framework JavaScript nhắm cụ thể vào platform mobile development, và framework như vậy là React Native.

React Native là framework cho phép web developer truyền thống kết hợp JavaScript và React syntax để build app cho iOS, Android, và web từ một codebase đơn lẻ. Điều này nghĩa là dev chỉ phải viết một phiên bản app, và nó chạy trên cả iOS và Android.

React Native cảm giác giống React DOM cho web, nhưng thay vì dùng HTML và DOM làm building block cho UI, nó dùng native component bạn tìm thấy trên iOS và Android.

Triết lý sau React Native là "learn once, write anywhere". Nghĩa là khi bạn học React, bạn có thể viết app cho web, Android, và iOS.

JavaScript với Ionic (Cho Hybrid App)

Framework khác cho cross-platform app là Ionic. Ionic cho phép mobile developer xây dựng hybrid mobile app với web technology hiện có như HTML, CSS, và JavaScript.

Ý tưởng sau Ionic là viết code một lần và chạy trên nhiều platform seamlessly. Hybrid application về cơ bản chỉ là web app được nhúng trên thiết bị native qua WebView. Hybrid app không thể giao tiếp trực tiếp với nhiều native device feature, nên nó dùng bridge gọi là Apache Cordova wrap native code trong JavaScript API để web app truy cập.

Ionic framework có lợi trong việc tạo app thanh lịch dùng pre-designed UI component, theme, typography, và element khác.

Dart với Flutter

Flutter là UI framework phát triển app trên iOS, Android, web, và desktop. Năm 2015, Google phát hành version đầu Flutter, và 2018 ra version stable đầu tiên.

Sự phổ biến tăng của Flutter được驱动 bởi mảng tính năng lớn. Ở lõi, framework kết hợp high-performance graphics engine với ngôn ngữ Dart. Trong dev, Dart cung cấp full type safety và hot reload giúp bạn build app đáng tin cậy nhanh chóng.

Trong production, Dart compile ra native machine code. Nghĩa là graphics của bạn sẽ render đẹp trên mọi platform.

Flutter không cần bridge thêm để làm việc trên thiết bị khác nhau, và không giống WebView framework như Ionic. Flutter có technology riêng compile source code trực tiếp ra machine code. Setup này cải thiện tốc độ và hiệu năng lớn.

Ngôn ngữ khác

C

C là ngôn ngữ lâu đời nhất trong danh sách, nhưng nó vẫn thường xuyên là một trong những ngôn ngữ phổ biến nhất trên TIOBE index. Giống Java, cộng đồng đầy dev dày dạn kinh nghiệm có thể cho bạn lời khóa giá trị về viết code không bug.

Được tạo bởi Dennis Ritchie khi làm việc cho Bell Labs, C là ngôn ngữ được adopt rộng rãi và mạnh mẽ cho phép bạn thao tác trực tiếp low-level operation của máy tính. Nếu bạn muốn dùng Android NDK (Native Development Kit), bạn sẽ cần làm quen với C.

C++

Nếu bạn quen với C, bạn sẽ thực sự thích đọc và viết code C++. C++ là extension của C, với nhiều high-level feature hơn và hỗ trợ object-oriented programming. C++ cũng là ngôn ngữ yêu thích của Android NDK developer. Bạn có thể dùng C++ phát triển Windows Mobile app. C++ đối đầu Java trong software development, và thực sự đáng để master.

Cách phân loại ngôn ngữ

Mobile app có thể chia thành ba category: native, hybrid, và native cross-platform. Native app tận dụng đầy đủ OS facility và feature, và nhanh nhất về performance. Tuy nhiên, bạn phải maintain codebase khác nhau cho platform khác nhau, vì mỗi platform dùng ngôn ngữ khác.

Ví dụ, Android dùng Java hoặc Kotlin cộng C/C++ cho native app. Platform iOS của Apple dựa trên Objective-C và Swift như native language. Tất cả native app language này là compiled, không phải interpreted.

Hybrid mobile app thực sự là website thiết kế để làm việc với mobile device. User truy cập qua mobile browser như access website trên desktop. Kết hợp HTML5, CSS, JavaScript là lựa chọn rõ ràng cho web app. Ionic là ví dụ platform WebView-based.

Gần đây, batch mới mobile cross-platform framework xuất hiện. Chúng kết hợp feature tốt nhất của native và hybrid–nhanh, nhẹ, và truy cập đầy đủ sức mạnh native device. Hầu hết được code với JavaScript và web language khác, nên nhiều code có thể reuse giữa platform. React Native là ví dụ dẫn đầu class này.

So sánh tính năng

Trước khi đi sâu vào chi tiết tính năng ngôn ngữ, bạn phải chọn platform. Bạn có thể tham khảo bài Mobile Development Platforms để hiểu các platform và cách chọn phù hợp. Giả sử bạn đã chọn platform, hãy xem ngôn ngữ so sánh như thế nào.

Native Android

Nếu bạn muốn dev native Android, Java và Kotlin là lựa chọn rõ ràng. Hãy xem chúng.

Null Safety

Kotlin kiểm soát tốt hơn Null reference, nên bug NullPointerException nổi tiếng (phổ biến trong Java) dễ loại bỏ hơn. Giảm dev time và cải thiện năng suất.

Concurrency

Mặc dù Java hỗ trợ concurrent operation, code liên quan có thể bị ảnh hưởng nặng về readability và maintainability. Kotlin giải quyết bằng coroutines. Code kết quả dễ đọc và dễ hiểu.

Type System

Type system Java không consistent, đôi khi dẫn đến confusion. Đặc biệt, primitive type như integer, boolean cần handle như special case. Ngược lại, Kotlin có type system đơn giản và versatile hơn, minimize lỗi programmer.

Supported Programming Styles

Mặc dù Java theoretically hỗ trợ nhiều programming style, một số dev tin nó overly promote OOP. Kotlin không enforce style cụ thể, nên dev có tự do chọn approach phù hợp. Tuy nhiên, Kotlin dev cần kiến thức sâu về software architecture và development principle.

Chọn cái nào?

Tóm lại, Kotlin dường như tốt hơn Java, nhưng có thể mất thời gian để chuyển đổi hoàn toàn. Thách thức: programmer quen thinking pattern của Java. Thứ hai: Kotlin ngôn ngữ mới, một số feature vẫn experimental.

Dù sao, Google đã announce họ support hoàn toàn Kotlin. Thực tế, Android Studio, IDE chính thức Android, có full support Kotlin. Feature và capability mới liên tục thêm vào Kotlin. Những năm tới, chúng ta sẽ trải qua giai đoạn chuyển đổi từ Java sang Kotlin, ít nhất ở native Android development.

Native iOS

Objective-C và Swift là hai lựa chọn cho iOS development. Hãy xem feature của mỗi cái.

Code Syntax

Swift có cú pháp đơn giản, rõ ràng hơn giúp programmer đạt mục tiêu với tối thiểu dòng code. Điều này cũng giúp giảm lỗi programmer và dễ bug fixing.

Memory Management

Swift thắng Objective-C rõ rệt về memory management. Swift enforce cơ chế kiểm soát robust và reliable hơn, cho phép programmer tránh memory leak không mong muốn.

Performance

Thực thi Swift code nhanh hơn Objective-C nhiều. Dẫn đến app performance nhanh hơn và UX tốt hơn.

Supported Programming Styles

Khác Objective-C, Swift có built-in support cho functional programming. Vì vậy dev không phải giới hạn trong predefined programming style. Điều đó giúp dev hiểu vấn đề rõ và tìm giải pháp tốt hơn.

Chọn cái nào?

Giống như Kotlin từ từ thay thế Java trong native Android, Swift chắc chắn sẽ thrive trong native iOS, buộc Objective-C nghỉ hưu. Apple đã bắt đầu support rộng rãi Swift, và sẽ tốt hơn trong tương lai. Giống Android dev, iOS dev cũng đang trải qua giai đoạn chuyển đổi.

Mặc dù có tool migrate code, có thể không thể fully convert Objective-C project sang Swift không issue. Đôi khi workaround cụ thể cần thiết, và cần kiến thức Objective-C. Vì vậy chiến lược tốt nhất: ưu tiên Swift, học chút Objective-C chỉ khi absolutely necessary. Cũng phải theo dõi Swift development và trend mới.

Cross-Platform Apps

JavaScript (kết hợp HTML5 tech khác) là ngôn ngữ cross-platform mobile development phổ biến nhất. Có ngôn ngữ khác như Dart, nhưng JavaScript có range support và adoption rộng nhất.

Nếu bạn muốn thử cutting-edge mobile development với Flutter, hãy học Dart. Nhưng không đảm bảo platform Flutter vẫn còn vài năm nữa. Nếu bạn muốn thứ tried-and-true, hãy gắn với JavaScript hoặc type-augmented sibling, TypeScript.

Kết luận

Chọn mobile development language có thể tricky nếu không hiểu feature của từng cái, cùng industry trend hiện tại. Với kiến thức này, dễ thấy chọn language phụ thuộc nặng vào mobile development platform cụ thể.

Tôi chắc chắn bây giờ bạn có bức tranh rõ ràng hơn về mobile app development language và có thể match relevance của feature chúng với latest development trend. Vì vậy hãy bắt đầu code app tiếp theo với tự tin!

Nếu muốn giúp đỡ bắt đầu ngôn ngữ mới, check tutorial và video course link xuyên suốt bài, hoặc bài khác về mobile development!

Bài này đã cập nhật với đóng góp từ Kingsley Ubah. Kingsley đam mê tạo content educate và inspire reader. Sở thích: đọc, bóng đá, đạp xe.