Кросплатформавае праграмнае забеспячэнне

Кросплатформавае (міжплатформавае) праграмнае забеспячэнне  — праграмнае забеспячэнне, якое працуе больш чым на адной апаратнай платформе і/ці аперацыйнай сістэме. Тыповым прыкладам з’яўляецца праграмнае забеспячэнне, прызначанае для работы ў аперацыйных сістэмах Linux і Windows.

 Як дабіваюцца кросплатформавасці 

 Кросплатформавыя мовы праграмавання 
Кросплатформавымі можна назваць большасць сучасных высокаўзроўневых моў праграмавання. Напрыклад, C, C++, Free Pascal — кросплатформавыя мовы на ўзроўні кампіляцыі, гэта значыць для гэтых моў ёсць кампілятары пад розныя платформы.

Не менш важныя для кросплатформавасці стандартызаваныя бібліятэкі часу выканання (). У прыватнасці, стандартам стала бібліятэка мовы С (гл. POSIX). З буйных кросплатформавых бібліятэк — Qt, GTK+, FLTK, стандартная бібліятэка шаблонаў, Boost, OpenGL, SDL, OpenAL, OpenCL.

 Кросплатформавыя асяроддзі выканання 
Яшчэ на пачатку эпохі ПК кампанія IBM зрабіла свой персанальны камп’ютар сумяшчальным з CP/M. Гэта дазволіла запускаць на ім ужо існуючыя праграмы.

PHP, ActionScript, Perl, Python, Tcl і Ruby — кросплатформавыя інтэрпрэтавальныя мовы, іх інтэрпрэтатары існуюць для многіх платформ.

Асяроддзі выканання Java Virtual Machine і .NET таксама кросплатформавыя, аднак на іх уваход падаецца не зыходны код, а прамежкавы код. Таму праграмы, напісаныя на Java і C#, можна запускаць пад разнастайнымі АС без папярэдняй перакампіляцыі.

 Кросплатформавы інтэрфейс карыстальніка 
На розных АС — незалежна ад таго, як тэхнічна дасягнута работа ў іх — стандартныя элементы інтэрфейса маюць розныя памеры. Таму простае жорсткае размяшчэнне элементаў інтэрфейса немагчыма — пад іншай АС яны могуць налазіць адзін на другі. Існуе некалькі падыходаў.

 Адзіны стыль, агульны для ўсіх АС. Праграмы выглядаюць аднолькава на ўсіх АС. Так працуюць інтэрфейсныя бібліятэкі Java падобныя да Swing.
 Плюс: можна жорстка расстаўляць элементы кіравання на манер Delphi; арыгінальны стыль.
 Мінус: сістэме даводзіцца мець свае экранныя шрыфты; стыль адрозніваецца ад стылю АС.
 Інтэрфейс з самапрыстасавальнасцю, які падстройвае сетку пад сапраўдныя памеры элементаў кіравання. Тыповыя прыклады — wxWidgets, XUL.
 Плюс: стандартны стыль АС, вельмі хуткі і наладжвальны пад Windows XP, Vista і 7; некаторая аўтаматызацыя лакалізацыі.
 Мінус: каб збудаваць самапрыстасавальную сетку, патрабуецца кваліфікаваны праграміст; ускладнена шчыльная кампаноўка.
 Гібрыдны падыход рэалізаваны ў GTK+.
 Плюс: шрыфты можна браць з сістэмы, а не «цягнуць» свае; некаторая аўтаматызацыя лакалізацыі.
 Мінус: атрымлівае ўсе недахопы ад першых двух падыходаў. Стыль адрозніваецца ад стылю АС; ускладнена шчыльная кампаноўка.

У любым выпадку, пад іншымі АС патрабуецца хаця б мінімальнае тэсціраванне, таму што магчымы памылкі кампаноўкі.

 Умоўная кампіляцыя 
Нават нягледзячы на шырокую стандартызацыю апаратнага і праграмнага забеспячэння, праграмісту часта даводзіцца наладжваць галіны пад розныя АС, уключаючы тую ці іншую з дапамогай умоўнай кампіляцыі.

Браўзер Mozilla Firefox мае розныя наборы іконак пад розныя АС.

 Прыкладныя праграмы 
Вялікая колькасць прыкладных праграм таксама з’яўляюцца кросплатформавымі. Асабліва гэтая якасць уласціва праграмам, першапачаткова распрацаваным для UNIX-падобных аперацыйных сістэм. Важнай умовай іх пераноснасці на іншыя платформы з’яўляецца сумяшчальнасць платформ з рэкамендацыямі POSIX, а таксама існаванне кампілятара GCC для платформы, на якую ажыццяўляецца перанос.

 Аперацыйныя сістэмы 
Сучасныя аперацыйныя сістэмы таксама часта з’яўляюцца кросплатформавымі. Напрыклад, аперацыйныя сістэмы з адкрытым зыходным кодам, напрыклад, NetBSD, Linux, FreeBSD, AROS могуць працаваць на некалькіх розных платформах, часцей за ўсё гэта x86, m68k, PowerPC, Alpha, AMD64, SPARC. Microsoft Windows можа працаваць як на платформе Intel x86, так і на Intel Itanium (дакладней, для Itanium ёсць толькі версіі Windows 2000/XP, Windows 2003 і Windows 2008, пасля чаго падтрымка была згорнута). Аперацыйная сістэма NetBSD з’яўляецца самай пераноснайPortability and supported hardware platforms, яна перанесена на большасць існуючых платформ.

 Эмуляцыя 
Калі праграма не прызначана для выканання (запуску) на азначанай платформе, але для гэтай платформы існуе эмулятар платформы, асноўнай для праграмы, то праграма можа быць выканана ў асяроддзі эмулятара.

Звычайна выкананне праграмы ў асяроддзі эмулятара прыводзіць да зніжэння прадукцыйнасці ў параўнанні з аналагічнымі праграмамі, для якіх платформа з’яўлялася базавай, таму што значная частка рэсурсаў сістэмы спажываецца на выкананне функцый эмулятара.

 Гл. таксама 
 Камп’ютарная платформа
 Перанос праграмнага забеспячэння
 Кросбраўзернасць
 Кроскампіляцыя

 Спасылкі 
 Усё аб кросплатформавым праграмаванні