Đa nền tảng là gì?
“Trong điện toán, đa nền tảng (tiếng Anh: cross-platform hay multi-platform) lài>phần mềm máy tính hoặc các phương pháp và khái niệm điện toán được triển khai đầy đủ và chạy 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 Một phiên bản yêu cầu mỗi phiên bản phải được thiết kế hoặc biên dịch cho từng nền tảng mà nó hỗ trợ; phiên bản kia có thể chạy trực tiếp trên bất kỳ nền tảng nào mà không cần bất kỳ sự chuẩn bị đặc biệt nào – ví dụ: bằng ngôn ngữ thông dịchPhần mềm được viết hoặc được biên dịch trước thànhbytecodedi động với gói thời gian chạy hoặc trình thông dịch thường được sử dụng hoặc dưới dạng thành phần tiêu chuẩn trên tất cả các cơ sở nền tảng. i>
(Nguồn: https://vi.wikipedia.org/wiki/%c4%90a_n%e1%bb%81n_t%e1%ba%a3ng)
Đọc định nghĩa trên xong, có người sẽ hiểu, có người sẽ thấy khó hiểu. Tôi nghĩ cách giải thích dễ hiểu như sau:
Trước tiên, hãy hiểu nền tảng là gì. Nền tảng là “móng”, nền tảng của xây dựng. Nếu coi nền tảng là nền móng của một tòa nhà thì phần mềm, ứng dụng chính là những công trình, những ngôi nhà được xây dựng trên nền móng đó. Vì vậy, đa nền tảng là những tòa nhà có thể được xây dựng trên các nền tảng khác nhau.
Ngoài ra, theo định nghĩa đa nền tảng của wiki, phần mềm đa nền tảng được chia thành hai loại:
1) Các loại cần được thiết kế hoặc biên dịch cho từng nền tảng
2) Các loại được viết bằng ngôn ngữ thông dịch hoặc được dịch trước sang mã byte
Trong bài viết này, tôi sẽ tập trung vào Loại 1. Loại 2 mình sẽ đề cập trong một bài viết khác.
Ví dụ về nhiều nền tảng:
Ví dụ: vô số ứng dụng nổi tiếng chạy trên nhiều nền tảng có thể được liệt kê tại đây:
- Trình duyệt web: google chrome, firefox, opera
- Trình phát video: vlc, kodi, miro, mpv, smplayer
- Xử lý hình ảnh: gimp, inkscape
- Cơ sở dữ liệu: Tất cả các máy chủ cơ sở dữ liệu đều hỗ trợ đa nền tảng, ngay cả máy chủ sql của microsoft cũng không ngoại lệ
- Quyết định mở mã nguồn .net framework, c#
- Mua lại github để cung cấp môi trường cicd và kho lưu trữ gần như miễn phí cho cộng đồng nhà phát triển. Đối với dân lập trình chắc hẳn không ai không biết đến git và github.
- Tích hợp kernel vào windows 10. Với phiên bản thứ hai của wsl (hệ thống con windows dành cho linux), các ứng dụng linux có thể chạy gần như nguyên gốc trên nền tảng windows mà không cần thông qua máy ảo như wsl thế hệ đầu tiên (nguồn: https://devblogs.microsoft.com/commandline/anninating- wsl-2/)
- Quyết định sử dụng công cụ chromium (công cụ hiển thị trang html cho trình duyệt google chrome) cho trình duyệt edge của tôi. Đây cũng là engine mã nguồn mở rất nổi tiếng của Google, tất nhiên là đa nền tảng.
- Xây dựng hệ điều hành mới có tên là windows core tương thích cao với linux. Hiện tại không có thông tin chính xác về lõi windows, nhưng tôi hy vọng rằng lõi windows có nhân linux, tức là lõi windows sẽ ghi đè lên nhân linux. Có như vậy thì nó mới lôi cuốn được cộng đồng lập trình linux, và khi đó vấn đề cross-platform sẽ trở nên dễ dàng hơn bao giờ hết.
- API đa nền tảng là gì và nhiệm vụ của nó là gì
- Api công khai, api dành riêng cho miền nên được thiết kế sao cho tối ưu
- Tại sao không nên xây dựng chế độ xem trên nhiều nền tảng
- Cách viết mã đa nền tảng, bạn muốn học ở đâu?
Còn rất nhiều ứng dụng đa nền tảng tuyệt vời khác. Bạn đọc có thể giúp liệt kê thêm ở phần bình luận
Lợi ích đa nền tảng
Sau đó, câu hỏi đặt ra là: Có bất kỳ ưu điểm và lợi ích nào khi sử dụng đa nền tảng không? Tất nhiên, câu trả lời là đã có rất nhiều lợi ích. Hiện nay các hãng sản xuất phần cứng (chipset, cpus, gpus, wifi, bluetooth…) đều hỗ trợ đa nền tảng. Chẳng hạn như gpu đồ họa phần cứng, hầu như tất cả các công ty phần cứng đều hỗ trợ opengl, opengles. Ngoài ra, Opengles hiện được coi là tiêu chuẩn kết xuất cho các thiết bị nhúng và nó cũng là một khung đa nền tảng. Điều này có nghĩa là cấp độ phần cứng cũng là “đa nền tảng” và mỗi nền tảng đều có trình điều khiển. Vì vậy các phần mềm chạy trên các hệ điều hành khác nhau (các nền tảng khác nhau) vẫn có thể tận dụng hết ưu điểm của phần cứng. Vì vậy, xây dựng đa nền tảng sẽ có những lợi ích sau:
– Kiến trúc nhất quán: Để xây dựng ứng dụng đa nền tảng, thiết kế phải chặt chẽ, theo đúng mô hình (mvc, mvvm),..). Tách các phần phụ thuộc vào hệ điều hành, các phần phụ thuộc vào phía thư viện thứ ba (chi tiết ở phần nâng cao). Điều này gây áp lực cho nhà thiết kế, nhưng lại làm cho ứng dụng hoạt động hiệu quả và dễ bảo trì trong tương lai.
– Viết ít mã hơn: Bạn chỉ cần viết một bộ (hoặc hầu hết) mã của mình để xây dựng và chạy trên các nền tảng khác nhau. Điều này có nghĩa là nỗ lực dành cho việc viết mã máy sẽ được tối ưu hóa.
– Dễ bảo trì và mở rộng hơn: Do có kiến trúc mạch lạc nên việc điều tra và sửa lỗi cũng dễ dàng hơn, khiến nó dễ bảo trì và cởi mở hơn. Nó cũng dễ dàng hơn nhiều.
– Có khả năng tái sử dụng cao: Rõ ràng. Bởi vì nó là đa nền tảng, nên mã này dễ dàng được sử dụng lại và chia sẻ bởi các ứng dụng và phần mềm khác, dù có đa nền tảng hay không.
Một tương lai đa nền tảng?
Hãy quay trở lại với các ứng dụng, khung và ứng dụng đa nền tảng nổi tiếng hiện nay
Tác giả tong van linh trước đây đã đề cập đến qt, và tôi cũng lấy qt framework làm ví dụ. Chính vì nó đa nền tảng nên nó đã xâm nhập 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 và những lĩnh vực này đều yêu cầu UI và UX mượt mà.
Biểu đồ trên cho thấy các lĩnh vực mà Qt thống trị thị trường.
Đây chỉ là một ví dụ về mức độ phổ biến, phổ biến của nó trên các khung. Chúng ta còn có nhiều thư viện đa nền tảng nổi tiếng khác như: opencv (thư viện xử lý ảnh), ffmpeg (thư viện xử lý video), cocos2d (thư viện xử lý game và video. Sử dụng khả năng đồ họa phần cứng gpu) . tensorflow (thư viện trí tuệ nhân tạo). Những thư viện này đã làm thay đổi ngành công nghệ thông tin và là công cụ đắc lực thúc đẩy sự sáng tạo của các lập trình viên, nhà nghiên cứu và cả những sinh viên đam mê công nghệ thông tin.
Windows cũng không ngoại lệ
Microsoft, hệ điều hành windows, được coi là bảo thủ và không hỗ trợ nguồn mở, đó là giấy phép đa khung thường được phát hành theo các tiêu chuẩn khác nhau (gpl, lgpl, apache, bsd, mit), do coi linux là căn bệnh ung thư Trong lời của cựu Giám đốc điều hành Microsoft Steve Ballmer:
“linux không thuộc phạm vi công cộng. linux là một căn bệnh ung thư, theo nghĩa sở hữu trí tuệ, bám vào mọi thứ nó chạm vào. Đó là cách hoạt động của giấy phép” (nguồn: https://en.wikiquote.org/wiki/ steve_ballmer)
Hiện microsft đã dần mở cửa cho cộng đồng mã nguồn mở Linux, tham gia và hỗ trợ nhiều ứng dụng và framework đa nền tảng. Thực hiện các bước chiến lược sau:
Đa nền tảng sâu hơn:
Tiếp theo, khi quyết định chọn phát triển sản phẩm của riêng mình trên nhiều nền tảng, tôi sẽ tiếp tục phân tích dưới góc độ của nhà phát triển.
Đầu tiên hãy tưởng tượng một ứng dụng hoặc khung đa nền tảng trông như thế nào
Hình trên cho thấy kiến trúc chung của một ứng dụng đa nền tảng
Vấn đề cần giải quyết
Trong bài viết tiếp theo, tôi sẽ trả lời 4 câu hỏi này và giới thiệu các kỹ thuật lập trình nâng cao và mã nguồn demo.
Ngoài ra, nếu lần sau tác giả sẽ tổng hợp các câu hỏi/bình luận của độc giả để giải đáp và hoàn thiện bài viết.