Sự kiện GopherCon 2015 dành cho ngôn ngữ lập trình Go đã đưa ra 1 tuyên bố rõ ràng: Go là ngôn ngữ full-stack dành cho các mobile apps.
Từ Go 1.5, các thư viên Go có thể sử dụng trong các app Android lẫn iOS, mở ra viễn cảnh phát triển mới trong ngành mobile khi bạn đã có trong tay 1 ngôn ngữ hiện đại và gọn nhẹ có thể lập trình cả webservices cũng như các thành tố client-side.
Với Go, bạn sẽ viết được toàn bộ layer dữ liệu client (network calls, data processing, data catching), sử dụng lại như 1 thư viện dành cho cả phiên bản Android và iOS của app, trong khi vẫn có thời gian để viết giao diện người dùng native sử dụng Java (cho Android) và Swift (cho iOS). Điều này đơn giản đi rất nhiều cách thức lập trình các mobile app native, vì các mobile dev chỉ cần tập trung vào giao diện native trong khi giao tiếp client/ server và các model dữ liệu có thể được viết hoàn toàn bằng Go.
Go là gì?
Go là ngôn ngữ dạng static, tức là việc type checking sẽ được thực hiện trong khi compilation (như C, Java, Scala, Pascal) không phải trong thời gian chạy (như Javascript, PHP, Python, Ruby). Dự án ra mắt công chúng vào tháng 11/2009, và phiên bản 1.0 ra đời vào tháng 3/2012.
Cuộc cách mạng Go Mobile
Cuộc cách mạng thú vị nhất của Go chính là việc nó chính thức gia nhập vào ngành mobile với vai trò là 1 ngôn ngữ client dành cho các mobile app. Bắt đầu là 1 module thí nghiệm, kể từ version 1.5 thì các dev đã có thể code Go ở cả app Android và iOS.
Điều này mở ra viễn cảnh Go – vốn là ngôn ngữ lý tưởng cho webservices sẽ từng bước trở thành ngôn ngữ full-stack cho các mobile app. Theo Hana Kim – 1 nhân viên của Google và là thành viên của Go team) thì Go team đang phát triển 2 lựa chọn:
- Mobile app được viết hoàn toàn bằng Go
- Mobile app gồm các thư viện client Go
Lựa chọn đầu tiên khá thú vị cho các app game. Tại đây, giao diện người dùng độc quyền và không cần các thành tố native của Android hoặc iOS. Ngược lại, lựa chọn thứ hai hoàn toàn là bước phát triển mới, cho phép sử dụng lại các lib Go đã được chia sẻ cho các native app Android và iOS, đơn giản đi rất nhiều quy trình phát triển nhiều platform chéo với 1 giao diện native. Thông thường, thành tố lý tưởng để lập trình Go là data layer – tầng dữ liệu: các network call, data processing, data catching. Nó cho phép tầng dữ liệu client chỉ viết được bằng Go và được chia sẻ như 1 thư viện cho cả app Android và iOS.
Nhờ vậy, với ưu thế lớn nhất là khả năng sử dụng lại các cấu trúc dữ liệu cho cả người dùng client và server thì toàn bộ giao tiếp client/ server có thể viết bằng ngôn ngữ duy nhất là Go. Lập trình trong ngôn ngữ Native (Java – Android và Swift – iOS) trở thành thuyết bất khả tri-nguồn dữ liệu và liên kết tới thư viện client Go để lấy tất cả dữ liệu nó cần. Go libs sẽ quyết định nơi để lấy data và có cần thực hiện 1 lệnh gọi webservice hoặc sử dụng cached data. Lúc này, các mobile dev có thể tập trung vào yếu tố hoàn toàn native: giao diện người dùng.
Hiện nay, các tài liệu về Go còn khá khan hiếm, nhưng David Crawshaw – Project Manager của dự án Go Mobile, đã hứa sẽ tung các tài liệu hoàn thiện để tích hợp Android vài iOS.
Bạn có thể thảo luận và chia sẻ các ví dụ của chính mình về package Go Mobile với https://groups.google.com/forum/#!forum/go-mobile