Marek Olejniczak
Wieloplatformowe środowiska
i narzędzia programistyczne
Żyjemy w świecie, w którym
konkurencja i różnorodność idei przyczynia się do rozwoju społecznego,
kulturalnego i technicznego. Dotyczy to każdej dziedziny, również
informatyki. W informatyce i programowaniu różnorodność przejawia się
między innymi poprzez wielość języków programowania oraz platform
programistycznych (czyli systemów operacyjnych). Ów motor napędowy
postępu może stać się jego hamulcem, jeśli jedna dominująca technologia
staje się tak hermetyczna, że użytkownicy są zmuszeni z takich, czy
innych względów tylko z niej korzystać. W programowaniu owa szkodliwa
hermetyzacja sprowadza się do zmuszania użytkownika do używania
określonej platformy systemowej i określonego systemu operacyjnego tylko
z tego powodu, że istniejące oprogramowanie dostępne jest tylko na tę
jedną "słuszną" platformę.
Użytkownik stosuje określony program po
to, aby zrealizować konkretne zadanie: napisać tekst, wykonać
obliczenia, przygotować prezentację multimedialną. Tak długo, dopóki
jakość funkcjonowania programu użytkowego nie zależy od środowiska, w
którym się ten program wykonuje, dla użytkownika tego narzędzia jest
całkowicie obojętne, czy ów program wykona się działając pod kontrolą
systemu operacyjnego Windows, Linux, FreeBSD, czy Solaris. Przecież
system operacyjny i platforma sprzętowa stanowią jedynie środowisko, w
którym wykonuje się program i same w sobie, w oderwaniu od
oprogramowania użytkowego, są bezużyteczne.
Na początek trochę filozofii
Większość firm produkujących
oprogramowanie, poza kilkoma niechlubnymi wyjątkami, stosuje politykę
udostępniania swojego oprogramowania dla różnych platform systemowych.
Daje to użytkownikowi swobodę decyzji w zakresie doboru odpowiedniego
środowiska pracy.
Inaczej się dzieje w sytuacji, gdy
użytkownik zmuszony zostaje do zakupu określonego systemu operacyjnego
tylko z tego powodu, że na tę właśnie platformę istnieje potrzebne mu
oprogramowanie. Być może ów program jest mu potrzebny do wykonania
określonego zadania jedynie raz w miesiącu lub rzadziej. I aby wykonać
tę pracę, musi zakupić oddzielny komputer wraz z określonym systemem
operacyjnym tylko dlatego, że firma dostarczająca potrzebne mu
oprogramowanie nie chce lub nie potrafi przenieść tej aplikacji na inną
platformę. Tego typu podejście niektórych firm jest szkodliwe i powinno
być tępione, gdyż stanowi hamulec w rozwoju oprogramowania i bije
użytkowników końcowych po kieszeni. W przypadku pojawienia się pytań o
przyczynę niedostępności określonego programu na inną platformę, często
pojawia się argument mówiący o niskiej popularności lub mniejszym
rozpowszechnieniu tejże platformy. Jest to jednak argument całkowicie
chybiony, gdyż dana platforma jest popularna nie sama z siebie, lecz z
powodu dostępności na nią określonego oprogramowania użytkowego.
Tworząc oprogramowanie na określoną tylko platformę, firma przyczynia
się do powstania tak zwanego efektu "kuli śnieżnej": ponieważ na daną
platformę jest oprogramowanie, to ta platforma staje się z konieczności
bardziej popularna niż inna, co z kolei powoduje, że inne firmy
programistyczne tworzą oprogramowanie tylko na tę "popularną"
platformę, co pogłębia jeszcze bardziej ten efekt. Tym samym
popularność danego środowiska jest często spowodowana nie tyle jego
jakością, co dostępnością oprogramowania działającego w tym środowisku.
Ten stan rzeczy spowodowany może być wieloma przyczynami:
- Chęcią utrzymania monopolistycznej pozycji na rynku. Ten
przypadek zachodzi przede wszystkim w sytuacji, gdy producent
oprogramowania jest jednoczesnie producentem systemu operacyjnego.
- Brakiem wśród programistów odpowiedniej wiedzy na temat
funkcjonowania różnych systemów operacyjnych. Program tworzony jest pod
określone środowisko pracy i jego przeniesienie na inną platformę
wymaga wykonania na kodzie programu określonych prac dostosowawczych,
co pociąga za sobą konieczność poniesienia określonych nakładów
finansowych. Do wykonania tych prac często brak jest odpowiedniej
wiedzy.
- Brakiem wiedzy na temat istnienia odpowiednich narzędzi
ułatwiających tworzenie oprogramowania łatwego do przeniesienia na
inne platformy oraz takich narzędzi, które umożliwiają tworzenie
oprogramowania niezależnego od środowiska (systemu operacyjnego,
sprzętu).
W tym artykule chciałbym pokazać, że
tworzenie oprogramowania funkcjonującego na wielu platformach, pod
kontrolą wielu systemów operacyjnych, jest możliwe bez jakichklowiek
nakładów finansowych i czasowych. Obecnie dostępne są takie narzędzia i
środowiska programistyczne, które pozwalają przenosić oprogramowanie
między różnymi systemami operacyjnymi praktycznie bez wprowadzania
jakichkolwiek zmian w kodzie programu. Dostępne obecnie technologie
powodują, że tłumaczenie o niemożności dostarczenia oprogramowania
funkcjonującego pod różnymi systemami operacyjnymi staje się wymówką
świadczącą o niewiedzy lub chęci utrzymania monopolistycznej pozycji na
rynku.
Jak można tworzyć oprogramowanie wieloplatformowe?
Mottem, które będzie nam przyświecać,
niech będzie sentencja zaczerpnięta ze strony domowej projektu FOX,
która brzmi: "Write Once, Compile
Anywhere", co w wolnym przekładzie oznacza "Napisz program jeden raz, a następnie
skompiluj go pod dowolnym systemem operacyjnym". Obecnie
dostępnych jest wiele narzędzi umożliwiających wcielenie w życie tego
hasła. Można je podzielić na następujące grupy:
- Wieloplatformowe biblioteki umożliwiające tworzenie kodu
binarnego funkcjonującego na wielu platformach, bez potrzeby
wprowadzania zmian w kodzie źródłowym programu. Istotnym elementem
całości jest wieloplatformowy kompilator, który potrafi
wytworzyć binaria dla różnych platform bez konieczności wprowadzania
znaczących zmian w opisie projektu (np. pliku Makefile). Niezwykle
poszukiwaną grupą tego typu narzędzi są kompilatory skrośne
(ang. cross compilators), które pozwalają utworzyć kod
wynikowy dla innej platformy, niż ta, na której kompilator działa. Na
przykład, programista może pod Linuksem utworzyć binaria dla platformy
Windows.
- Wieloplatformowe narzędzia GUI (Graphics User Interface),
które umożliwiają utworzenie interfejsu użytkownika łatwego do
przeniesienia między różnymi platformami sprzętowo-programowymi.
- Wieloplatformowe narzędzia IDE (Integrated Development
Environment) oraz RAD (Rapid Application Development) umożliwiające
przyspieszenie procesu projektowania oprogramowania. Dzięki
wieloplatformowości zespół programistów w procesie tworzenia
oprogramowania nie jest przywiązany do konkretnej platformy
programowo-sprzętowej. Efekt końcowy ich pracy może zostać w łatwy
sposób przeniesiony na dowolną platformę docelową. Narzędzia tego typu
pozwalają optymalnie zorganizować pracę zespołu programistów, gdyż
każdy z nich pracuje w ulubionym przez siebie środowisku (np. Linux,
Solaris, Windows, MacOS, itd.), a cząstkowe efekty ich pracy mogą
zostać zintegrowane i przeniesione na dowolną platformę docelową.
Narzędzia IDE oraz RAD nie są
niezbędne do tworzenia oprogramowania wieloplatformowego, jednak
znakomicie ułatwiają proces projektowania i zwiększają elastyczność
pracy zespołu programistów - programiści mogą pracować na swoich
ulubionych platformach.
Inną drogą do uzyskania oprogramowania
funkcjonującego na różnych platformach jest zastosowanie języków
interpretowanych, które nie wymagają kompilacji. Spośród wielu
języków interpretowanych funkcjonujących na wielu platformach, na
szczególną uwagę zasługują: Perl, Python oraz (w połączeniu z
serwerem WWW Apache) bardzo popularny PHP. Języki skryptowe są
mało lubiane przez programistów tworzących komercyjne aplikacje ze
względu na brak możliwości ukrycia kodu źródłowego. Wprawdzie dostępne
są również kompilatory wspomnianych wyżej języków interpretowanych,
jednak ich popularność nie jest jeszcza zbyt duża. Na osobną uwagę
zasługuje język Java, który pod wieloma względami spełnia wszystkie
wymagania stawiane aplikacjom wieloplatformowym: jest kompilowany (co
daje możliwość ukrycia kod źródłowego) i w zasadzie niezależny od
platformy. Ten ostatni postulat nie jest spełniony w sposób doskonały,
gdyż brak błędów w funkcjonowaniu aplikacji napisanych w języku Java
zależy od wersji maszyny wirtualnej Javy. W praktyce oznacza to
konieczność dostarczania wraz z kodem programu konkretnej maszyny
wirtualnej.
wxWindows
WxWindows to wieloplatformowa
biblioteka klas pozwalająca kompilować na wielu platformach programy
napisane w języku C++. Przeniesienie oprogramowania na inną platformę w
większości przypadków nie wymaga wprowadzania zmian w kodzie źródłowym
programu lub wymagane zmiany są minimalne. Biblioteka dostarcza wspólny
dla wszystkich platform interfejs API, lecz wykorzystuje rodzimy dla
danej platformy graficzny interfejs użytkownika (GUI), dzięki czemu
aplikacja uzyskana przy wykorzystaniu tej biblioteki zachowuje szatę
graficzną typową dla danej platformy.
WxWindows wywodzi się z Intytutu
Sztucznej Inteligencji Uniwersytetu w Edinburgh, gdzie został
zainicjowany w 1992 roku przez Juliana Smarta. Przez wiele lat
dynamicznego rozwoju osiągnął obecny stan, który pozwala tworzyć
wysokiej jakości programy na platformach Unix, Linux, Windows i MacOS.
Biblioteka posiada wszystkie komponenty niezbędne do utworzenia
nowoczesnego interfesju użytkownika i śmiało może konkurować z
produktami komercyjnymi. Na uwagę zasługuje bardzo dobra i szczegółowa
dokumentacja oraz duża ilość dodatkowych narzędzi wspomagających
tworzenie aplikacji. Biblioteka wxWindows posiada cechy, które
wyróżniają ją spośród innych bibliotek tego typu, w tym także bibliotek
i narzędzi komercyjnych. Na szczególną uwagę zasługują: wbudowana
obsługa HTML poprzez wbudowane klasy, wspomaganie dla OpenGL, obsługa
wirtualnych systemów plików, obsługa plików graficznych w wielu
formatach, interfejs ODBC do baz danych, wielowątkowość, obsługa
protokołów sieciowych (TCP/IP, HTTP, FTP, itd.), znacznie bardziej
przejrzysty i efektywniejszy niż w Microsoft MFC system obsługi zdarzeń.
Tworzenie aplikacji CASE ułatwione jest dzięki wbudowanej bibliotece Object
Graphics Library.
WxWindows może być użyty z wieloma
rodzajami kompilatorów. Pod Windows biblioteka może być używana z
wolnymi (na licencji GPL) kompilatorami Cygwin oraz Mingw32,
wywodzącymi się od GNU GCC, oraz z 16-bitowymi wersjami Visual C++
oraz Borland C++. W środowisku Unix wxWindows współpracuje ze
wszystkimi kompilatorami C++, wykorzystującymi biblioteki graficzne GTK,
Motif, Lestiff oraz OpenMotif. Ten uniwersalny pakiet umożliwia
tworzenie profesjonalnych aplikacji, które mogą być kompilowane na
następujących platformach:
- Linux i inne platformy uniksowe, na których funkcjonuje
biblioteka GTK+.
- Linux i inne platformy uniksowe, na których funkcjonuje
biblioteka Motif lub jej wolne odpowiedniki Lesstif oraz OpenMotif.
- Windows 3.1, Windows 95/98, Windows NT, Windows 2000, Windows ME.
- Macintosh (MacOS 8.x, 9.0 oraz MacOS X).
- Porty dla OS/2 oraz BeOS są w trakcie realizacji.
Ponadto dostępne są pakiety osadzone
na niektórych popularnych platformach. Na uwagę zasługują następujące
projekty:
- wxX11 - wxWindows dla X11.
- wxGTK - wxWindows dla GTK+.
- wxX11 - wxWindows dla X11.
- wxWinCE - wxWindows dla MS Windows CE.
W odróżnieniu od większości innych
wolnych i komercyjnych międzyplatformowych bibliotek, wxWindows nie
zajmuje się rysowaniem grafiki na ekranie, lecz stanowi zbiór klas
opakowujących rodzime widgety dla danej platformy. Dzięki temu aplikacje
utworzone przy wykorzystaniu wxWindows zachowują charakterystyczny
wygląd platformy na której działają.
WxWindows posiada bogaty zbiór klas
umożliwiających konstruowanie złożonych programów. Z ważniejszych klas
wymienić należy:
- Klasy okien dialogowych: wxWindow, wxFrame, wxDialogBox, wxPanel,
itd.
- Klasy kontrolek (widgetów): wxButton, wxCheckbox, wxChoice,
wxListBox, wxListCtrl, wxTextCtrl, itd.
- Klasy typów danych: wxList, wxString, wxHashTable, wxDate, itd.
- Klasy strumieni: wxInputStream, wxDataStream, wxTextStream,
wxFileStream, wxSocketStream, itd.
- Klasy interfejsu urządzenia graficznego GDI (ang. Graphics
Device Interface): wxPen, wxBrush, wxFont, wxBitmap, wxImage, itd.
- Klasy obsługi zdarzeń i komunikatów: wxCommandEvent,
wxMouseEvent, wxKeyEvent, itd.
- Klasy komunikacji międzyprocesowej: wxClient, wxConnection,
wxSocket, wxServer, itd.
- Klasy obsługi wielu dokumentów MDI (ang. Multiple Document
Interface): wxMDIFrame, wxMDIChildFrame, itd.
- Klasy obsługi dokumentów: wxDocument, wxView, wxDocManager, itd.
- Klasy obsługi wydruku: wxPreviewFrame, wxPrintDialog, wxPrinter,
itd.
- Klasy obsługi wątków: wxThread, wxMutex, itd.
- Oraz wiele innych klas, np. klasy obsługi języków narodowych,
logów systemowych, zarządzania pamięcą, wykrywania wycieków pamięci,
itd.
Z alfabetyczną listą wszystkich klas
obsługiwanych przez poszczególne porty biblioteki wxWindows można się
zapoznać pod adresem
http://wxwindows.org/supported.htm
(plik liczy 430 kB długości).
 |
 |
 |
 |
 |
 |
| Panel kontrolek wxWindows pod Win95 |
Panel kontrolek wxWindows pod Unix/Motif |
Panel kontrolek wxWindows pod Linux/GTK+ |
Panel kontrolek wxWindows pod Unix/X11 |
Okno pomocy wxWindows pod Win9x |
Okno pomocy wxWindows pod Linuksem |
Niezwykle cenną cechą wxWindows jest możliwość kompilacji skrośnej
(cross-compilation), czyli generowania kodu dla innego środowiska niż
to, w którym działa kompilator. Oznacza to, że pracując np. pod Linuksem
można otrzymać binaria np. dla platformy Windows. Tę zaletę docenią
wszyscy programiści, którzy pracują na codzień w środowisku Unix/Linux
i muszą wygenerować kod dla Windows. Więcej szczegółów na temat
kompilacji skrośnej pod Linuksem można znaleźć na stronie
http://wxwindows.org/technote/crosscmp.htm.
Dla programistów używających wxWindows
dostępnych jest wiele narzędzi wspomagających ich pracę. W pakiecie
dostępny jest edytor dialogów wspomagający tworzenie estetycznych
okien dialogowych i paneli sterujących. Dostępne są także narzędzia
typu RAD (Rapid Applications Development), nie będące częścią
dystrybucji wxWindows, wspomagające tworzenie aplikacji przy
wykorzystaniu tej biblioteki. Na uwagę zasługują następujące projekty:
- WxDesigner (http://www.roebling.de/)
jest komercyjnym narzędziem GUI oraz RAD dla wxWindows, wxPython
oraz wxPerl. Dostępna za darmo wersja demonstracyjna nie ma
możliwości zapisu projektów na dysk. Cena liczencji wynosi od 29,00 do
399,00 Euro.
- WxWorkshop (http://wxworkshop.sourceforge.net/)
jest wyśmienitym i zaawansowanym narzędziem RAD wydanym w oparciu o
licencję GPL. To wieloplatformowe narzędzie IDE oraz RAD jest
całkowicie napisane w wxWindows. WxWorkshop zawiera PMF (Project
Management Framework) pozwalający budować własne aplikacje IDE,
przez co wxWorkshop jest cennym i bogatym w funkcje narzędziem dla
programistów. Pakiet zawiera edytor programisty z podświetlaniem
składni, umożliwia zarządzanie projektami, tworzenie interfejsu
użytkownika metodą WYSWIG, bezpośrednią obsługę kompilatora języka C++
oraz biblioteki wxWindows.
- WxStudio (http://wxstudio.sourceforge.net/),
podobnie jak wxWorkshop świetnie nadaje się do tworzenia
zaawansowanych aplikacji przy wykorzystaniu wxWindows.
- WxHatch (http://biolpc22.york.ac.uk/wx/wxhatch/help/)
to narzędzie do szybkiego tworzenia interfejsu użytkownika (GUI).
|
Internacjonalizacje (lokalizacje) programów napisanych przy
wykorzystaniu biblioteki wxWindows łatwo przeprowadzić za pomocą
programu poEdit
służącego do wygodnej edycji plików .po zawierających komunikaty
wyświetlane przez program. |
WxWindows dla Perla i Pythona
Duża popularność oraz produkcyjna
jakość kodu uzyskanego przy pomocy biblioteki wxWindows zaowocowały
pojawieniem się wielu dodatkowych narzędzi i portów. Ze wspaniałych
możliwości wxWindows mogą korzystać nie tylko programiści C++,
lecz również miłośnicy coraz bardziej popularnych wieloplatformowych
języków Perl oraz Python. Na ich potrzeby powstały
projekty wxPerl oraz wxPython, które umożliwiają
tworzenie graficznych interfejsów użytkownika (GUI) dla programów
napisanych w Perlu oraz Pythonie.
WxPerl jest modułem Perla
pozwalającym zintegrować programy napisane w Perlu z GUI wxWindows.
Dzięki modułowi wxPerl (http://wxperl.sourceforge.net)
można połączyć bogactwo języka Perl z mocą klas wxWindows. Na uwagę
zasługuje bogata dokumentacja oraz duża ilość przykładów pokazujących
sposób łączenia biblioteki wxWindows z Perlem.
WxPython (http://www.wxpython.org/)
umożliwia łączenie klas C++ biblioteki wxWindows z językiem Python i
funkcjonuje bez żadnych modyfikacji na platformach Unix/Linux oraz
Windows. Do instalacji i funkcjonowania wymaga następujących
komponentów:
- Systemy operacyjne Unix/Linux. Niezbędne są biblioteki Glib,
GTK+ oraz biblioteka wxGTK (http://www.freiburg.linux.de/~wxxt/)
będąca wersją GTK+ biblioteki wxWindows. Jeśli planuje się tworzenie
grafiki 3D, należy dodatkowo mieć zainstalowaną bibliotekę graficzną Mesa3D
(http://www.mesa3d.org/)
lub OpenGL, moduł Pythona PyOpenGL (http://PyOpenGL.sourceforge.net/)
oraz interpreter Pythona.
- Systemy operacyjne Windows98/NT/2000 nie wymagają żadnych
dodatkowych składników poza opcjonalną biblioteką OpenGL.
- System operacyjny Windows95 wymaga zainstalowania Winsock2.0,
OpenGL oraz pakietu HTML Help Viewer, które można pobrać ze
strony firmy Microsoft.
Dostępne są pakiety binarne oraz źródłowe pakietu wxPython dla
wszystkich platform. Dostępne są także liczne przykłady oraz szczegółowa
dokumentacja.
Programiści piszący w języku Python
mają do dyspozycji jeszcze jedno narzędzie o groźnie brzmiącej nazwie Boa
(http://boa-constructor.sourceforge.net/).
Boa jest narzędziem IDE ze zintegrowanym kreatorem graficznego
interfejsu użytkownika (GUI). W swoim wyglądzie wzorowany jest na Delphi
Borlanda. Wyposażony jest w debugger i zintegrowany system pomocy. Do
funkcjonowania wymaga modułu wxPython w wersji 2.3.2 oraz interpretera
Python. Za pomocą Boa możliwe jest szybkie i efektywne tworzenie
wieloplatformowych aplikacji okienkowych w języku Python.
 |
 |
 |
 |
 |
 |
| Aplikacja
wxWindows C++ z osadzonym interpreterem Pythona |
Jedno
z okien wxPython |
wxWindows,
wxPython i wxHTML pozwalają tworzyć dynamiczne dokumenty HTML |
Debugger
wxPython |
wxPython
IDE |
Przegląd
klas wxPython |
Kto używa wxWindows
Jak łatwo się zorientować, biblioteka
wxWindows zapewnia szerokie możliwości tworzenia nowoczesnych aplikacji
okienkowych pisanych w językach C++, Python oraz Perl dla platform
Unix/Linux, Windows, MacOS oraz OS/2. Bogactwo dodatkowych narzedzi i
rozszerzeń powoduje, że staje się cennym narzędziem nie tylko dla
programistów piszących aplikacje wieloplatformowe. O wysokiej jakości
tej biblioteki świadczy szerokie grono jej użytkowników oraz pozytywne
recenzje, z którymi można się zapoznać pod adresem
http://wxwindows.org/users.htm.
Przeważa opinia, że wxWindows przewyższa jakością wiele produktów
komercyjnych, włącznie z tymi, które są uważane za wiodące na rynku
oprogramowania. Użytkownicy podkreślają dużą szybkość działania
aplikacji, przejrzystą konstrukcję biblioteki, łatwość programowania i
brak błędów zagrażających stabilności aplikacji. Jednoznacznie stwierdza
się, że wxWindows nadaje się do tworzenia złożonych projektów, od
których wymaga się stabilności, niezawodności i funkcjonowania w wielu
środowiskach. Biblioteka wxWindows jest używana do realizacji wielu
zaawansowanych technologicznie projektów. Wśród użytkowników pakietu
znaleźć można instytuty naukowo-badawcze (np. California Institute of
Technology (USA), Carnegie Mellon University, Center for Naval
Analyses (USA), German Research Centre for Artificial Intelligence
(Niemcy), Institute of Nuclear Research of the Hungarian Academy of
Sciences (Węgry), Swiss Center for Scientific Computing (Szwajcaria)),
instytucje rządowe (np. NASA Glenn Research Center (USA), National
Human Genome Research Institute (USA), National Defense Research
Establishment (Szwecja)), firmy przemysłu elektronicznego i
informatycznego (Compaq Alpha Microprocessor Development Group, Red Hat
U.K. Ltd., SciTech Software, Inc. (USA), Xerox (USA), MySQL AB
(Finlandia), Motorola Semiconductor, Hitachi Europe Ltd.) oraz przemysł
wojskowy i lotniczy (np. Lockheed Martin (USA), Daimler-Benz Aerospace
AG (Niemcy)).
W oparciu o tę bibliotekę opracowano
wiele zaawansowanych projektów, z niektórymi z nich można zapoznać się
na stronie domowej projektu. Biblioteka jest popularna zarówno wśród
projektów komercyjnych, jak również wśród projektów Open Source.
Przykładowo, w oparciu o wxWindows opracowano wieloplatformowego klienta
e-mail o nazwie Mahogany (http://mahogany.sourceforge.net/),
który w swej funkcjonalności odpowiada programowi MS Outlook.
 |
 |
| Mahogany
swój wygląd zawdzięcza wxWindows |
Dzięki
wxWindows Mahogany nie ma kłopotów z językami obcymi |
Na wxWindows świat się nie kończy
Biblioteka wxWindows zdobyła uznanie
wśród wielkiej rzeszy programistów dzięki bogactwu dostępnych klas,
dodatkowych narzędzi programistycznych, integracji z innymi
międzyplatformowymi językami programowania oraz wysokiej jakości kodowi,
który pozwala tworzyć za jej pomocą niezawodne, efektywne i efektowne
oprogramowanie. Choć przez wielu programistów pakiet wxWindows uważany
jest za najlepszy spośród bibliotek umożliwiających tworzenie
wieloplatformowych aplikacji, to nie można zapomnieć o innych pakietach
tego typu, których możliwości są porównywalne z biblioteką wxWindows.
Na uwagę zasługują następujące projekty:
FOX, Fast Light Toolkit (FLTK), OpenGUI dla C/C++
,
GLOW (GUI dla OpenGL i
Mesa) oraz bliźniacze projekty z
Object Central:
- V C++ GUI
- C++ GUI dla Windows, Linux/Unix oraz OS/2,
- V IDE
- IDE dla GNU g++ oraz Java.
FOX
FOX jest
narzędziem do konstruowania graficznego interfejsu użytkownika dla
programów napisanych w języku C++. Dzięki integracji z OpenGL pozwala
tworzyć efektowne aplikacje 3D. Jest niezależny od platformy na której
działa. Uruchamiany był z powodzeniem pod kontrolą systemów operacyjnych
Linux, FreeBSD, IRIX, SGI, HP-UX, AIX, SUN Solaris, Tru64 Unix, Windows
95/98, Windows NT, Windows ME oraz Windows 2000. Ponieważ znakomita
większość implementacji FOX jest niezależna od platformy, oprogramowanie
utworzone za jego pomocą można bez zmian przenosić na inne platformy.
Kod uzyskany za jego pomocą jest szybki i efektywny. Współpracuje z
kompilatorem GNU GCC (systemy Unix) oraz kompilatorami Visual C++ 6.0,
Borland C++ Builder, GNU Cygwin32, GNU Mingw32 oraz IBM VisualAge C++
(Windows). Dużą zaletą pakietu FOX jest możliwość kompilacji skrośnej,
np. na platformie Linux możliwe jest uzyskanie kodu dla Windows. Więcej
szczegółów na temat cross-kompilacji znajdzie czytelnik w FAQ dostępnym
na stronie domowej projektu.
 |
 |
| FOX
- okno dialogowe drukowania |
FOX i OpenGL |
Narzędzia V
Innymi wieloplatformowymi narzędziami
służącymi do projektowania aplikacji w języku C++ są wydane na bazie
licencji GNU LGPL programy o nazwie V. W chwili pisania artykułu
V umożliwia tworzenie aplikacji na platformach Unix/Linux (kompilator
GNU GCC) oraz Windows. Na platformie Windows pakiet V współpracuje z
kompilatorami Borland C++, Watcom C++ oraz VC++. Port dla OS/2 oraz
Motif jest w trakcie realizacji. W skład narzędzi V z Object
Central wchodzą:
- V C++ GUI
Framework, pakiet służący do projektowania
wieloplatformowych graficznych interfejsów użytkownika (GUI).
- VIDE (V
Integrated Development Environment), środowisko programistyczne
ułatwiające tworzenie złożonych aplikacji.
Wraz z pakietem użytkownik otrzymuje
liczącą ponad 150 stron dokumentację oraz przykładowe programy. Ponieważ
obsługa pakietów V jest intuicyjna, to nauka tworzenia aplikacji nie
powinna zająć wprawnemu programiście C++ więcej niż jeden dzień. Oprócz
większości standardowych elementów spotykanych w innych tego typu
narzędziach, V C++ GUI Framework umożliwia budowanie aplikacji
opartych o bibliotekę OpenGL.
VIDE umożliwia efektywne opracowywanie
programów w językach C/C++ oraz Java oraz dokumentacji w formacie HTML.
VIDE posiada następujące funkcje:

VIDE - V Integrated Development Environment
|
- Edytor z podświetlaniem składni dla C/C++, Java, Perl,
Fortran, TeX oraz HTML i wieloma innymi dodatkowymi możliwościami,
jak na przykład definiowaniem własnych makr.
- Zarządzanie projektami.
- Obsługa kompilatorów GNU GCC oraz Borland C++ w wersji 5.5.
- Podświetlanie błędów w kodzie źródłwoym programu.
- Zintegrowana obsługa debuggerów gdb (dla GNU GCC)
oraz jdb (dla Java).
- Zintegrowana obsługa V GUI Framework.
- Wspomaganie tworzenia dokumentacji w HTML.
- Obsługa WeditRes (Windows Resource Editor),
darmowego edytora zasobów dla Windows wchodzącego w skład
kompilatora LCC-Win32.
|
VIDE znajduje się w ciągłym rozwoju i
w następnych wydaniach należy oczekiwać kolejnych udogodnień.
Zapowiadany jest interfejs do polecenia grep, wspomaganie
systemu kontroli wersji CVS, sprawdzanie pisowni, przeglądarka
klas C++ oraz interfejs do profilera GNU GCC.
GLOW
Programiści chcący tworzyć przenośne,
wieloplatformowe aplikacje graficzne 3D mają do dyspozycji kilka
pakietów. Na uwagę zasługuje pakiet
GLOW, który jest
wieloplatfromowym narzędziem służącym do budowania interaktywnych
aplikacji wykorzystujących bibliotekę OpenGL lub Mesa. GLOW jest
wrapperem dla pakietu
GLUT (GL
Utility Toolkit) i funkcjonuje na wszystkich platformach, dla których
istnieją porty pakietu
GLUT
oraz
OpenGL lub
Mesa.
 |
 |
 |
| Aplikacja
Mesa + GLOW pod Linuksem |
Aplikacja
GLOW pod WindowsNT |
Aplikacja
GLOW pod MacOS |
Podsumowanie
W artykule przedstawiłem niektóry
tylko aspekty tworzenia oprogramowania wieloplatformowego. Nie sposób
omówić szczegółowo wszystkich pakietów, bibliotek i narzędzi
wspomagających programistę w tym względzie. Przedstawione narzędzia
stanowią reprezentatywną próbkę tego, czym dysponują programiści chcący
w wygodny sposób tworzyć aplikacje, które łatwo można przenosić między
różnymi platformami programowo-sprzętowymi. Większość z nich dostępna
jest na licencji GPL lub LGPL, a więc za darmo, z dostępnym kodem
źródłowym. Jakość zaprezentowanych bibliotek i oprogramowania
narzędziowego w niczym nie ustępuje produktom komercyjnym i śmiało można
z nich korzystać nawet w zaawansowanych technologicznie projektach
komercyjnych. Mam nadzieję, że przedstawione w tym artykule
wieloplatformowe narzędzia znajdą szersze zastosowanie w praktyce i
powoli odejdzie w niepamięć jeszcze dziś często spotykane stwierdzenie,
że "tej platformy nasze oprogramiowanie nie wspomaga".
Linki
- Strona domowa wxWindows: http://wxwindows.org/
- Porty wxWindows:
- Narzędzia IDE, RAD oraz edytory dialogów dla wxWindows
Cygwin: http://freshmeat.net/projects/cygwin/
GNU MinGW32: http://www.mingw.org/
Dev-C++ - IDE dla Win32 oraz Linuksa (świetne narzędzie, godne oddzielnego
artykułu): http://www.bloodshed.net/
OpenGUI - biblioteka C/C++: http://freshmeat.net/projects/opengui/
Open Perl IDE: http://open-perl-ide.sourceforge.net/
O autorze:
Dr inż. Marek Olejniczak zajmuje się
programowaniem dla systemów Linux oraz Windows, a także sztuczną
inteligencją i systemami ekspertowymi. Zajmuje się także wdrażaniem
systemu operacyjnego Linux i jego administracją. W swojej pracy korzysta
z Linuksa i szeroko stosuje oprogramowanie Open Source.
Z autorem można skontaktować się pod adresem e-mail:
marek@olmar.poznan.pl