У области рачунарства, вишеплатформски софтвер (енгл. cross-platform software, познат и као multi-platform software, platform-agnostic software или platform-independent software) представља рачунарски софтвер који је дизајниран тако да функционише на више рачунарских платформи. Разликујемо вишеплатформске софтвере који захтевају засебну изградњу за сваку платформу и оне које је могуће директно покретати на било којој платформи без посебне припреме, јер су написани у интерпретираном програмском језику или су компајлирани у преносиви бајткод (енгл. bytecode), за који су интерпретатори или извршна окружења (енгл. run-time packages) уобичајене или стандардне компоненте свих подржаних платформи.

На пример, једна вишеплатформска апликација може да ради на оперативним системима као што су Linux, macOS и Microsoft Windows. Вишеплатформски софтвер може бити намењен великом броју платформи, али може бити намењен и само за две. Неки од оквира (енгл. frameworks) за развој вишеплатформских апликација су Codename One, Ark UI-X, Kivy, Qt, GTK, Flutter, NativeScript, Xamarin, Apache Cordova, Ionic и React Native.

Платформе Платформа се може односити на тип процесора (CPU) или другог хардвера на којем се извршава оперативни систем (OS) или апликација, на тип оперативног система, или на комбинацију ова два. Пример уобичајене платформе је Андроид, који функционише на архитектури породице АRM. Друге познате платформе су Linux/Unix, macOS и Microsoft Windows и све оне могу бити део вишеплатформског окружења. Апликације могу бити развијене тако да зависе од карактеристика одређене платформе - било хардвера, оперативног система или виртуелне машине (VM) на којој се извршавају. На пример, Јава платформа представља уобичајену VM платформу која функционише на више оперативних система и хардверских архитектура.

Хардвер Хардверска платформа може се односити на архитектуру скупа инструкција. На пример, АRМ или х86 архитектура. Ове машине могу да покрећу различите оперативне системе.

Паметни телефони и таблети углавном користе АRМ архитектуру, при чему најчешће покрећу Андроид, iOS или друге мобилне оперативне системе.

Софтвер Софтверска платформа може бити оперативни систем или програмско окружење, али најчешће представља њихову комбинацију. Изузетак је Јава, која користи виртуелну машину независну од оперативног система за извршавање Јава бајткода. Неке софтверске платформе су:

Андроид ChromeOS Општа језичка инфраструктура (енгл. Common Language Infrastructure) развијена од стране Microsoft-а HarmonyOS iOS iPadOS Јава Линукс Microsoft Windows PlayStation 4, PlayStation 3 и PlayStation Vita Solaris Web browsers

и многи други.

Имплементација Да би се софтвер сматрао вишеплатформским, мора функционисати на више од једне архитектуре или оперативног система. Развој таквог софтвера може бити временски захтеван зато што различити оперативни системи имају различите апликативне програмске интерфејсе (API).

Софтвер написан за један оперативни систем не мора аутоматски радити на свим архитектурама које тај систем подржава. Чак и када је софтвер писан у неком од популарних програмских језика као што су C и C++, то не значи да ће он радити на свим оперативним системима који подржавају ове језике, па ни на другачијим верзијама истог оперативног система.

Програмирање Вишеплатформско програмирање подразумева поступак писања и развоја софтвера који ће радити на више платформи.

Приступи Постоје различити начини на које може да се напише вишеплатформска апликација. Један приступ подразумева креирање више верзија истог софтвера у различитим изворним стаблима (енгл. source trees) - другим речима, верзија апликације за Microsoft Windows може имати један скуп изворних датотека, верзија за Macintosh други, док системи типа FOSS *nix могу имати трећи. Иако је овај приступ једноставан, у поређењу са развојем за једну платформу може бити знатно скупљи, јер захтева већи тим или доводи до споријег издавања производа. Такође, може резултовати већем броју грешака (енгл. bugs) које је потребно пратити и исправљати.

Други приступ је коришћење софтвера који прикрива разлике између платформи. Овај апстракциони слој изолује апликацију од конкретне платформе, чинећи је платформски независном (енгл. platform agnostic). Апликације које се извршавају у оквиру Јава виртуелне машине граде се на овај начин.

Неке апликације комбинују различите методе вишеплатформског програмирања како би се добило коначно решење. Пример је веб-прегледач Firefox, који користи апстракцију за изградњу појединих компоненти нижег нивоа, док се за имплементацију функционалности специфичних за платформу (као што је графички кориснички интерфејс - GUI) користе одвојена изворна стабла. Поред тога, примењује се више скриптних језика ради лакшег преноса софтвера између платформи. Firefox користи XUL, CSS и JavaScript за проширење функционалности прегледача, као и класичне додатке у стилу Netscape прегледача. Велики део самог прегледача написан је у XUL-у, CSS-у и JavaScript-у.

Алати и окружења У пракси, постоји велики број алата који могу да се користе приликом програмирања вишеплатформског софтвера. У наставку ћемо дати само неке од њих:

AppearIQ: оквир (енг. framework) који подржава ток рада развоја и имплементације апликација у пословном окружењу. Boden: UI оквир писан за C++. Cairo: библиотека слободног софтвера која се користи за обезбеђивање API-ја заснованог на векторској графици, независног од уређаја. Cocos2d: алат отвореног кода и гејм енџин (енгл. game engine) за развој 2D и једноставних 3D вишеплатформских игара и апликација. Eclipse: развојно окружење отвореног кода. Имплементирано је у програмском језику Јава са конфигурабилном архитектуром која подржава бројне алате за развој софтвера. Доступни су додаци за више програмских језика, укључујући Јава и C++. Flutter: вишеплатформски оквир за развој корисничког интерфејса (UI) за iOS, Android, macOS и Windows, који развија компанија Google. Godot: развојни пакет (енг. Software Development Kit - SDK) који користи Godot Engine. LEADTOOLS: вишеплатформске библиотеке (SDK) које омогућавају интеграцију технологија за препознавање, рад са документима, медицинске и сликовне обраде, као и мултимедију, у апликације за Windows, iOS, macOS, Android, Linux и веб. PureBasic: власнички програмски језик и интегрисано развојно окружење (IDE) за израду апликација за macOS, Windows и Linux. UnoPlatform: платформа за развој апликација која подржава Windows, macOS, iOS, Android, WebAssembly и Linux, користећи програмски језик C#. wxWidgets: алат отвореног кода за рад са графичким компонентама (widget toolkit) који уједно представља и оквир за развој апликација.

Изазови Постоје бројни изазови са којима се можемо сусрести приликом израде вишеплатформског софтвера. Неки од њих су:

Тестирање вишеплатформских апликација може бити знатно сложеније, јер различите платформе могу испољавати суптилно различита понашања или скривене грешке. Програмери су често ограничени на коришћење најнижег заједничког скупа функционалности који је доступан на свим платформама. То може утицати на перформансе апликације или онемогућити коришћење најнапреднијих могућности појединачних платформи. Различите платформе често имају различите конвенције корисничког интерфејса, које вишеплатформске апликације не поштују увек. Скриптни језици и бајткод виртуелних машина морају се преводити у извршни машински код при сваком покретању, што може утицати на перформансе. Овај недостатак се може ублажити техникама као што је just-in-time компилација, али одређени рачунарски трошак је често неизбежан. Различите платформе захтевају употребу нативних формата пакета, као што су RPM и MSI. Вишеплатформски инсталатери, попут InstallAnywhereInstallAnywhere, настоје да реше овај проблем. Вишеплатформска извршна окружења могу такође бити подложна безбедносним пропустима који се јављају на више платформи, што може створити повољно окружење за развој вишеплатформског злонамерног софтвера.

Види још

Веб апликација Софтверско инжењерство Портовање

Референце

Категорија:Софтвер