Đ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:

 MS-DOS (x86), DR-DOS (x86), FreeDOS (x86)....
 Microsoft Windows (x86, x64)
 Linux (x86, x64, PowerPC, và nhiều kiến trúc đa dạng khác)
 Mac OS X (PowerPC, x86)
 OS/2, eComStation
 AmigaOS (m68k), AROS (x86, PowerPC, m68k), MorphOS (PowerPC)
 Java
 1C:DOANH NGHIỆP

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 đó.

Xem thêm 
 Máy ảo
Nền Java
 Các ngôn ngữ lập trình:
 Các loại:
 Các ngôn ngữ biên dịch
 REALbasic trình biên dịch đa nền cho Windows, Macintosh và Linux
 trình biên dịch đa nền
 Các ngôn ngữ văn lệnh
 Các ngôn ngữ thông dịch
 Perl, PHP, Python, Tcl, JavaScript, XUL, ECMAScript—một số ngôn ngữ thông dịch/văn lệnh thường dùng trong các phần mềm ứng dụng đa nền.
 wxWidgets, Qt, GTK+, Tk, FLTK—một số bộ công cụ đa nền
 Các thư viện lập trình:
 Allegro—một thư viện multimedia đa nền viết bằng C
 Kiến trúc máy tính
 Các ví dụ:
 C-Kermit, bản hiện thực giao thức Kermit.
 Firefox—một trình duyệt web đa nền, với mã nguồn mở
 Free Pascal—một trình biên dịch đa nền, với mã nguồn mở, cho Pascal và Object Pascal
 Info-ZIP, bản hiện thực hoá định dạng file zip
 Pixel Image Editor, trình biên tập ảnh giống Photoshop viết bằng Free Pascal
 KPTools Skeet—tường lửa đa nền với mã nguồn mở
 OpenOffice.org—gói phần mềm văn phòng mã nguồn mở
 Blender—phần mềm đồ hoạ 3 chiều đa nền, với mã nguồn mở
 MAME—giả lập trò chơi điện tử hộp
 Linux, NetBSD, OpenBSD, FreeBSD—các hệ điều hành đa nền với mã nguồn mở
 MySQL, PostgreSQL—các hệ quản trị cơ sở dữ liệu đa nền với mã nguồn mở
 VLC—các trình đa phương tiện đa nền với mã nguồn mở

Chú thích 

Nền tảng máy tính
Phần mềm đa nền tảng