Wieloplatformowość

Wieloplatformowość – cecha aplikacji, języków programowania, systemów operacyjnych oraz innego oprogramowania i jego implementacji, pracujących na różnych platformach sprzętowych. Przykładowo, wieloplatformowa aplikacja będzie działać pod kontrolą systemu Microsoft Windows na architekturze x86 oraz systemu Linux na architekturze ARM.

Platformy

edytuj

Platforma to kombinacja sprzętu i oprogramowania, na którym uruchamiamy aplikacje. Mówiąc najprościej, platforma to system operacyjny lub architektura procesora.

Aplikacja może być napisana dla konkretnej platformy (zarówno w rozumieniu sprzętu, jak i oprogramowania), lub maszyny wirtualnej, na której jest uruchamiana.

Platforma sprzętowa

edytuj

Platforma sprzętowa to ogólne pojęcie, odnoszące się zarówno, do architektury procesora lub architektury komputera. Kilka najpopularniejszych obecnie architektur procesorów:

Platforma systemowa

edytuj

Platforma systemowa może być systemem operacyjnym lub maszyną wirtualną, zwykle jednak jest kombinacją obydwu. Najpopularniejsze systemy operacyjne:

oraz maszyny wirtualne:

Wieloplatformowe oprogramowanie

edytuj

Aplikacja jest wieloplatformowa, gdy działa na więcej niż jednym systemie operacyjnym i architekturze komputera. Rozwój takiego oprogramowania jest zazwyczaj bardzo trudny i czasochłonny, chociażby ze względu na to, że różne systemy operacyjne posiadają odmienne API. Trzeba mieć również na uwadze, iż fakt że system działa na wielu architekturach, nie musi oznaczać, iż program napisany dla tego systemu będzie z powodzeniem działał na wszystkich architekturach sprzętowych, obsługiwanych przez ów system. Przykładem jest pakiet biurowy OpenOffice.org, który wciąż nie ma swojego natywnego portu na architekturę x86-64.[1] Podobnie jest z językami programowania. Program napisany w tak popularnych językach jak C lub C++, nie musi działać na wszystkich systemach operacyjnych, które obsługują ten język programowania.

Rozwój aplikacji wieloplatformowych

edytuj

Wieloplatformowe biblioteki i narzędzia programistyczne

edytuj

Oto kilka najważniejszych przedstawicieli bibliotek i narzędzi dostępnych na wielu platformach:[2]

  • Simple DirectMedia Layer — biblioteka napisana w C, przeznaczona dla gier komputerowych i aplikacji multimedialnych. Udostępnia niezależne od platformy API, pozwalające kontrolować dźwięk, grafikę czy urządzenia wejścia wyjścia.
  • wxWidgets — biblioteka przeznaczona dla języka C++, udostępniająca jednolite, niezależne od systemu API do tworzenia GUI. Cechą biblioteki jest to, że na każdym systemie korzysta z natywnych elementów jego interfejsu.
  • Qt — biblioteka napisana w języku C++ pozwalająca tworzyć jednolite GUI niezależnie od platformy.
  • GTK+ — kolejna biblioteka umożliwiająca tworzenie aplikacji „okienkowych” napisana w C dostępna dla Linuksa, Microsoft Windowsa i eksperymentalnie dla OS X.
  • Mono (projekt) (otwarta implementacja Microsoft .NET) — wieloplatformowe środowisko do uruchamiania i tworzenia aplikacji w języku C#

Problemy związane z wieloplatformowością

edytuj

Rozwój aplikacji wieloplatformowych ma kilka istotnych wad:

  • Programowanie aplikacji wieloplatformowej jest trudne i czasochłonne. Programista musi znać API oferowane przez wszystkie systemy operacyjne, co znacznie utrudnia pracę, ponieważ różnice w implementacjach mogą być bardzo duże.
  • Programista jest ograniczony do używania zestawu funkcji dostępnych na wszystkich docelowych platformach, co w efekcie może nawet uniemożliwić tworzenie zaawansowanych aplikacji.
  • Testowanie wieloplatformowego programu musi być przeprowadzone na każdej obsługiwanej platformie. Jest to kłopotliwe, z tego względu, że na każdej platformie mogą ujawnić się różne błędy, a ponadto ten sam błąd może zachowywać się inaczej na każdej z nich.
  • Tworząc aplikacje z GUI, trzeba mieć na uwadze rozmaite konwencje interfejsów użytkownika. Standard GUI (rozmieszczenie i kolejność przycisków, umiejscowienie menu itd.) jest inna w systemie Microsoft Windows, środowisku GNOME, KDE, czy Aqua (domyślne środowisko graficzne w OS X).
  • Aplikacje napisane w języku skryptowym lub w językach kompilowanych do kodu bajtowego (np. Java lub C#) muszą być za każdym razem tłumaczone na kod wykonywalny na danej platformie. Taka technika, mimo tak istotnej zalety jak niezależność od platformy, negatywnie odbija się na wydajności programu.

Przypisy

edytuj
  1. Porting to x86-64 (AMD64, EM64T) – Apache OpenOffice Wiki [online], wiki.openoffice.org [dostęp 2022-09-07].
  2. Wayback Machine [online], web.archive.org, 26 października 2009 [dostęp 2022-09-07] [zarchiwizowane z adresu 2009-10-26].