Wieloplatformowość

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

Wieloplatformowość - termin odnoszący się do 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 | edytuj kod]

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 | edytuj kod]

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 | edytuj kod]

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

oraz maszyny wirtualne:

Wieloplatformowe oprogramowanie[edytuj | edytuj kod]

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, że fakt iż system działa na wielu architekturach, nie musi oznaczać, że program napisany dla tego systemy 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. 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 | edytuj kod]

Wieloplatformowe biblioteki i narzędzia programistyczne[edytuj | edytuj kod]

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

  • 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 Mac 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 | edytuj kod]

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 Mac 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.