Đa nền tảng

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.
Lấy ví dụ, một ứng dụng đa nền tảng có thể chạy trên cả Microsoft Windows với kiến trúc x86, Linux với kiến trúc x86 và Mac OS X với cả kiến trúc PowerPC hay x86 trên các hệ thống Macintosh. Một ứng dụng đa nền tảng có thể chạy trên từ 2 nền tảng khác nhau cho đến mọi nền tảng đang tồn tại.
Các nền tảng.
Một nền tảng là một sự kết hợp từ hai yếu tố phần cứng và phần mềm được dùng để chay các phần mềm ứng dụng. Một nền tảng có thể được miêu tả đơn giản như một hệ điều hành hay kiến trúc máy tính, hay sự kết hợp của cả hai. Một nền tảng thường thấy nhất có lẽ là Microsoft Windows chạy trên kiến trúc x86. Những nền tảng máy tính cá nhân quen thuộc khác bao gồm Linux và Mac OS X (chính cả hai hệ điều hành này cũng là đa nền tảng). Tuy nhiên cũng có nhiều thiết bị như điện thoại di động cũng là những nền tảng máy tính thường thấy tuy chúng ít khi được nói đến trên phương diện này. Phần mềm ứng dụng có thể được viết phụ thuộc vào các đặc điểm của một nền tảng đặc biệt - hoặc phần cứng, hoặc hệ điều hành, hoặc máy ảo nó chạy trên đó. Nền tảng Java là một nền tảng máy ảo chạy trên nhiều hệ điều hành và nhiều loại phần cứng, và là một nền tảng quen thuộc cho việc viết các phần mềm chạy trên nó.
Các nền tảng phần cứng.
Một nền tảng phần cứng có thể nói đến một kiến trúc của một máy tính hay kiến trúc bộ xử lý. Ví dụ, kiến trúc CPU x86 và x86-64 là một kiến trúc máy tính thường thấy nhất trong các máy tính cá nhân hiện nay. Những máy tính này thường chạy dòng hệ điều hành Microsoft Windows, mặc dù chúng có thể chạy những hệ điều hành khác như Linux, OpenBSD, NetBSD, Mac OS X và FreeBSD.
Các nền tảng phần mềm.
Các nền tảng phần mềm có thể là một hệ điều hành hoặc môi trường lập trình, nhưng thông thường hơn cả là sự kết hợp cả hai. Một ngoại lệ quen thuộc là ngôn ngữ Java, sử dụng một máy ảo độc lập với hệ điều hành trong việc biên dịch mã của nó, thường được gọi trong thế giới Java là bytecode. Những ví dụ về các nền tảng phần mềm bao gồm:
Phần mềm đa nền tảng?
Để một phần mềm được gọi là đa nền tảng, nó phải có khả năng hoạt động trên nhiều hơn một kiến trúc máy tính hay hệ điều hành. Trong đó thời gian hay hiệu quả của tác vụ có thể khác nhau do các hệ điều hành khác nhau có các giao diện lập trình ứng dụng (API) khác nhau (ví dụ, Linux sử dụng một API cho phần mềm ứng dụng khác với của Microsoft Windows).
Vì một hệ điều hành đặc thù có thể chạy trên các kiến trúc máy tính khác nhau, nên không có nghĩa phần mềm được viết cho một hệ điều hành sẽ tự động làm việc trên tất cả các kiến trúc mà hệ điều hành đó hỗ trợ. Một ví dụ là vào tháng 8 năm 2006, OpenOffice.org, đã không chạy trên các dòng vi xử lý AMD64 hay EM64T vốn là các tiêu chuẩn x86-64 64-bit cho các máy tính; điều này sau đó đã được thay đổi, và bộ phần mềm OpenOffice.org hầu như được điều chỉnh tương thích với các hệ thống 64-bit . Điều này cũng có nghĩa là nếu một phần mềm được viết bằng những ngôn ngữ lập trình thông dụng như C hay C++ thì cũng không có nghĩa là nó sẽ chạy trên tất cả các hệ điều hành hỗ trợ ngôn ngữ lập trình đó.