Кроссплатформенность
Кроссплатформенное программное обеспечение — программное обеспечение, работающее более чем на одной аппаратной платформе и/или операционной системе. Типичным примером является программное обеспечение, предназначенное для работы в операционных системах Linux и Windows одновременно.
Языки программирования
Кроссплатформенными можно назвать большинство современных высокоуровневых языков программирования. Например, C, С++, PureBasic и Free Pascal — кроссплатформенные языки на уровне компиляции, то есть для этих языков есть компиляторы под различные платформы. Java и C# — кроссплатформенные языки на уровне выполнения, то есть их исполняемые файлы можно запускать на различных платформах без предварительной перекомпиляции. PHP, ActionScript, Perl, Python, Tcl и Ruby — кроссплатформенные интерпретируемые языки, их интерпретаторы существуют для многих платформ.
Прикладные программы
Большое количество прикладных программ также являются кроссплатформенными. Особенно это качество выражено у программ, изначально разработанных для UNIX-подобных операционных систем. Важным условием их переносимости на другие платформы является совместимость платформ с рекомендациями POSIX, а также существование компилятора GCC для платформы, на которую осуществляется перенос.
Примеры:
- Apache
- BinkD
- CVS
- Emacs
- GIMP
- GoldEd
- Inkscape
- Lotus Notes
- Mozilla Firefox, Mozilla Thunderbird, SeaMonkey
- MySQL
- OpenOffice.org
- LibreOffice
- Opera
- VIM
Операционные системы
Современные операционные системы также часто являются кроссплатформенными. Например, операционные системы с открытым исходным кодом, например, NetBSD, Linux, FreeBSD, AROS могут работать на нескольких различных платформах, чаще всего это x86, m68k, PowerPC, Alpha, AMD64, SPARC. Microsoft Windows может работать как на платформе Intel x86, так и на Intel Itanium. Операционная система NetBSD является самой переносимой[1], она портирована на большинство существующих платформ.
Эмуляция
Если программа не предназначена для исполнения (запуска) на определённой платформе, но для этой платформы существует эмулятор платформы, базовой для данной программы, то программа может быть исполнена в среде эмулятора.
Обычно исполнение программы в среде эмулятора приводит к снижению производительности по сравнению с аналогичными программами, для которых платформа является базовой, так как значительная часть ресурсов системы расходуется на выполнение функций эмулятора.