Kiến Thức Nhập Môn Về Cross-platform (Phần 1) – CodeLearn

Thế nào là cross-platform?

“Trong công nghệ điện toán, đa nền tảng (tiếng Anh: cross-platform hay multi-platform) là một thuật ngữ chỉ các phần mềm máy tính hay các phương thức điện toán và các khái niệm được thực thi đầy đủ và vận hành cùng nhau trên nhiều nền tảng máy tính. Phần mềm đa nền tảng có thể được chia thành hai loại; một loại yêu cầu phải thiết kế hoặc biên dịch từng phiên bản cho mỗi nền tảng nó hỗ trợ; loại kia có thể chạy trực tiếp trên bất cứ nền tảng nào mà không cần sự chuẩn bị thêm đặc biệt nào – chẳng hạn như phần mềm được viết bằng một ngôn ngữ thông dịch hay được biên dịch trước sang mã bytecode có khả năng di động bằng một trình thông dịch hay các gói run-time thường dùng hoặc là thành phần tiêu chuẩn trên mọi nền tảng”.

(Nguồn: https://vi.wikipedia.org/wiki/%C4%90a_n%E1%BB%81n_t%E1%BA%A3ng)

Đọc xong đoạn định nghĩa trên sẽ có bạn hiểu, có bạn thấy lùng bùng. Tôi xin giải thích một cách dễ hiểu như sau:

Đầu tiên phải hiểu platform là gì. Platform là “nền tảng” là móng cho công trình. Nếu coi platform là nền móng của công trình, thì software, application chính là công trình, là ngôi nhà xây trên cái móng đấy. Vậy cross platform là những kiến trúc nhà có thể dựng lên ở các nền khác nhau.

Ngoài ra, theo định nghĩa cross-platform từ wiki thì phần mềm đa nền tảng sẽ chia ra làm hai loại:

1) Loại cần phải thiết kết hoặc biên dịch cho từng nền tảng

2) Loại được viết bằng ngôn ngữ thông dịch hay dược dịch trước sang mã byte code

Trong bài viết này tôi sẽ tập trung vào loại 1. Loại 2 tôi sẽ viết ở một bài khác.

Các ví dụ về cross-platform:

Có thể kể ra đây vô vàn những ứng dụng nổi tiếng đang chạy cross-platform như:

  • Web Browser: Google Chrome, FireFox, Opera
  • Video player: VLC, Kodi, Miro, MPV, SMPlayer
  • Image Process: Gimp, Inkscape
  • Database: Tất cả các Database server đều hỗ trợ cross platform, kể cả Microsoft SQL server cũng không ngoại lệ
READ  Phim Harry Potter có mấy phần? Loạt phim Harry Potter hay nhất mọi thời đại

Ngoài ra còn rất nhiều ứng dụng cross-platform hay khác nữa. Các độc giả có thể giúp liệt kê thêm ở phần comment

Lợi ích của cross-platform

Vậy câu hỏi đặt ra là: cross-platform có ưu thế, lợi ích gì không? Câu trả lời tất nhiên là có rất nhiều lợi ích rồi. Hiện tại các hãng phần cứng (Chipset, CPU, GPU, wifi, buetooth, …) đều hỗ trợ đa nền tảng. ví dụ về đồ họa phần cứng GPU thì hầu như các hãng phần cứng đều hỗ trợ opengl, opengles. Nói thêm là hiện nay opengles được coi là chuẩn rendering cho các thiết bị nhúng, nó cũng là một cross platform framework. Nghĩa là ở mức phần cứng cũng đã “cross-platform” và có driver cho từng nền tảng. Do đó những phần mềm chạy trên các hệ điều hành (nền tảng khác nhau) vẫn có thể khai thác được hết các lợi thế phần cứng. vì vậy việc xây dựng cross-platform sẽ có các lợi ích sau:

– Mạch lạc về kiến trúc: Để xây dựng một ứng dụng cross-platform thì thiết kế phải chặt chẽ, tuân thủ theo đúng mô hình (MVC, MVVM,..). để tách biệt phần phụ thuộc vào OS, phần phụ thuộc vào phía 3rd Library (sẽ được mô tả chi tiết ở phần nâng cao). Việc này sẽ là áp lực cho nhà thiết kế, nhưng bù lại sẽ làm cho ứng dụng có hiệu năng cao, dễ dàng bảo trì trong tương lai.

– Viết code ít : Bạn chỉ cần chỉ cần code duy nhất một bộ mã (hoặc phần lớn) và có thể build và chạy trên các nền tảng khác khau. Nghĩa là công sức bỏ ra để viết mã máy sẽ được tối ưu.

– Dễ dàng bảo trì và mở rộng: Do mạch lạc về kiến trúc việc điều tra sửa lỗi cũng sẽ dễ dàng hơn, giúp cho việc bảo trì và mở rộng cũng sẽ dễ dàng hơn nhiều.

Tính tái sử dụng cao: Hiển nhiên rồi. Vì là cross-platform nên các đoạn mã sẽ dễ dàng được tái sử dụng và share cho các ứng dụng, phần mềm khác cho dù nó là cross-platform không.

READ  Những bài hát hay nhất của Hoa Vinh - Thủ thuật

Tương lai của cross-platform?

Hãy quay lại với những, framework, ứng dụng cross platform nổi tiếng hiện nay

Bài trước tác giả Tống Văn Linh đã đề cập đến Qt, tôi sẽ lấy luôn ví dụ về Qt framework. Chính vì nó là cross platform mà nó đã len lỏi vào hầu hết các lĩnh vực từ cấu hình thấp đến cấu hình cao đòi hỏi sự mượt mà về UI, UX.

Ảnh trên thể hiện những lĩnh vực mà Qt đang thống lĩnh thị trường.

Đây mới là một ví dụ về tính phổ cập, phổ dụng của cross-framework. Chúng ta còn có rất nhiều các thư viện cross platform nổi tiếng khác như: opencv (thư viện phục vụ cho xử lý ảnh), ffmpeg(thư viện phục vụ cho xử lý video), cocos2d(thư viện phục vụ cho gaming với việc sử dụng năng lực đồ họa phần cứng GPU). Tensorflow (thư viện dung cho trí tuệ nhân tạo AI). Những thư viện này đã làm thay đổi ngành công nghệ thông tin, là công cụ mạnh thúc đẩy sự sang tạo cho các lập trình viên, các nhà nghiên cứu khoa học và cả những bạn sinh viên đam mê công nghệ thông tin nữa.

Và, Windows cũng không ngoại lệ

Microsoft, với hệ điều hành windows, được cho là bảo thủ, không ủng hộ open source là giấy phép mà các cross-framework thường hay phát hành theo các chuẩn khác nhau (GPL, LGPL, Apache, BSD, MIT), từ chỗ coi Linux là u nhọt (cancer) theo lời của cựu CEO Microsoft Steve Ballmer :

“Linux is not in the public domain. Linux is a cancer that attaches itself in an intellectual property sense to everything it touches. That’s the way that the license works” (Nguồn: https://en.wikiquote.org/wiki/Steve_Ballmer)

Giờ đây Microsft đã dần cởi mở hơn với linux, cộng động open-source, tham gia và hỗ trợ thúc đẩy rất nhiều vào việc xây dựng các ứng dụng, framework đa nền tảng. Với những bước đi mang tính chất chiến lược sau:

  1. Quyết định mở mã .Net framework, C#
  2. Mua lại github, cung cấp hầu như miễn phí môi trường repository và CICD cho cộng đồng developer. Đối với dân lập trình thì chắc không ai không biết đến git và github.
  3. Tích hợp thành công nhân (kernel) vào windows 10. Với version thứ 2 của WSL (Windows Subsystem for Linux) thì các ứng dụng linux đã có thể chạy gần như native trên nền tảng Windows mà không cần thông qua máy ảo như thế hệ đầu WSL (Nguồn: https://devblogs.microsoft.com/commandline/announcing-wsl-2/)
  1. Quyết định sử dụng engine chromium (là một engine dựng trang HTML cho trình duyệt google chrome ) cho trình duyệt Edge của mình. Đây cũng là một engine open source rất nổi tiếng của google, và tất nhiên nó là cross-platform.
  2. Xây dựng một hệ điều hành mới mang tên Windows Core tương thích cao với Linux. Hiện tại vẫn chưa có thông tin chính xác về Windows Core nhưng tôi hi vọng Windows core sẽ có nhân là Linux kernel, nghĩa là lõi của windows core sẽ phủ cả linux kernel. Nếu làm được vậy thì nó sẽ thu hút được cộng đồng lập trình linux, khi đó bài toán cross-platform còn trở nên đơn giản hơn bao giờ hết.
READ  Mục tiêu đến năm 2030 của giáo dục là phát triển toàn diện con

Sâu hơn về cross-platform:

Dưới đây tôi tiếp tục phân tích trên quan điểm của người lập trình viên khi quyết định chọn cross-platform để phát triển sản phẩm của mình.

Dầu tiên hãy tưởng tượng một ứng dụng hay framework cross-platform nó như thế nào

Ảnh trên thể hiện kiến trúc tổng quát của các cross-platform application

Những câu hỏi cần được giải quyết

  1. Cross platform API là gì, nhiệm vụ của nó là gì
  2. Common API, Domain Specific API nên thiết kế như thế nào cho tối ưu
  3. Tại sao phần View có trường hợp không nên xây dựng cross platform
  4. Cách viết code cross platform như thế nào, muốn tìm hiểu thì học ở đâu?

Ở bài sau tôi sẽ trả lời 4 câu hỏi trên và đi vào những kỹ thuật lập trình chuyên sâu cộng thêm phần source code demo.

Ngoài ra nếu người viết sẽ tổng hợp những cau hỏi/comment của độc giả để trả lời cũng như cải thiện bài viết ở lần tới.