Kylix nadchodzi

Na początku 1999 roku w firmie Inprise/Borland rozpoczęto prace nad projektem o kodowej nazwie Kylix, który traktowany wstępnie jako projekt badawczy, szybko przerodził się w konkretny produkt i dzisiaj, po niespełna dwóch latach rozwoju, doczekał się spektakularnej premiery.

Na początku 1999 roku w firmie Inprise/Borland rozpoczęto prace nad projektem o kodowej nazwie Kylix, który traktowany wstępnie jako projekt badawczy, szybko przerodził się w konkretny produkt i dzisiaj, po niespełna dwóch latach rozwoju, doczekał się spektakularnej premiery.

Kylix to zbudowane na wzór Delphi środowisko programistyczne do szybkiego tworzenia aplikacji (RAD) do systemu Linux. Dziedziczy ono wszystkie najlepsze cechy wersji windowsowej i wprowadza nowe, właściwe systemowi uniksowemu: wizualne, oparte na systemie komponentów środowisko projektowe w połączeniu z szybkim kompilatorem optymalizującym, tworzącym rzeczywisty kod maszynowy (binaria ELF) oraz obszerną biblioteką gotowych do użycia elementów. Oferują one całą funkcjonalność wymaganą podczas tworzenia profesjonalnych, sieciowych, współpracujących z bazami danych, wreszcie rozproszonych aplikacji typu klient/serwer. To narzędzie programistyczne, pozwoli łatwo i szybko dostarczać kompletne rozwiązania dla tego coraz bardziej popularnego systemu.

Kylix nie jest jednak narzędziem uniwersalnym, które mogłoby zastąpić wszystkie inne dotychczas stosowane. Przeciwnie, został pomyślany w jednym konkretnym celu, a mianowicie, żeby tworzyć wysokiej jakości aplikacje, które będą działać na gotowej platformie sprzętowo-programowej, którą wspólnie tworzą Linux i Internet. Nie jest więc przeznaczeniem Kyliksa tworzenie rozszerzeń jądra, sterowników urządzeń czy jakichkolwiek innych narzędzi działających na poziomie systemu. Do tych wszystkich zadań trzeba nadal stosować język C, korzystając np. z kompilatora GCC i edytora Emacs.

Do pisania aplikacji Kylix wykorzystuje język Delphi (właściwie Object Pascal, który jednak został na tyle rozwinięty, że ze starym Pascalem ma już niewiele wspólnego), co z początku może wydawać się trochę dziwne, zwłaszcza że sam Linux i wszystkie jego programy narzędziowe zostały napisane w C. Istnieją jednak bardzo przekonujące powody, dla których wybrano właśnie ten język.

Linux potrzebuje teraz, bardziej niż kiedykolwiek, ogromnego zaplecza w postaci łatwych w obsłudze, porządnych programów użytkowych oraz profesjonalnych aplikacji. Tylko w ten sposób może stać się systemem uniwersalnym, działającym w prawie każdym domowym komputerze, zwłaszcza że konkurencyjny (czy aby na pewno?) system Windows od dawna cieszy się ogromną popularnością właśnie ze względu na dostępność oprogramowania.

Potrzebne jest narzędzie, które pozwoli wykorzystać umiejętności bardzo licznej grupy programistów Windows w tworzeniu aplikacji do Linuksa. Taki właśnie jest Kylix. Pozwala wizualnie zaprojektować GUI aplikacji, tak jak w Visual Basicu, oraz łatwo je programować, stosując czytelną składnię języka Delphi. Dzięki temu ma bardzo realne szanse przyciągnąć użytkowników dwóch bardzo popularnych systemów programistycznych, jakimi są Microsoft Visual Basic i Borland Delphi. Dlaczego właśnie Basic i Delphi? Otóż oba te języki są obiektywnie łatwe, a ponadto, jak wynika z ankiety przeprowadzonej przez firmę Borland, liczba użytkowników tych systemów znacznie przewyższa liczbę programistów korzystających z Borland C++Builder. Niech ci ostatni nie tracą jednak nadziei. Wkrótce powinna pojawić się wersja oparta na C++, a docelowo Kylix będzie korzystał zarówno z języka Delphi, jak i C++ (Kylix Enterprise Studio).

Jednak bez względu na język programowania, najważniejsze cechy Kyliksa to możliwość szybkiego dostarczania aplikacji, korzystania ze złożonych technologii, tworzenia rodzimych plików wykonywalnych (które oczywiście wykonują się szybciej, niż np. skrypty Perla lub kod pośredni Javy) oraz budowania aplikacji działających na kilku platformach. Kolejne windowsowe wersje Delphi i C++ Buildera będą umożliwiały tworzenie aplikacji, które łatwo będzie przenosić w obie strony pomiędzy systemami Windows i Linux.

Pomimo że na razie sam Kylix nie jest produktem typu Open Source, jedna z jego wersji będzie dostępna za darmo. Kylix Open Edition, bo o nim mowa, będzie oczywiście ograniczony w stosunku do dwóch pozostałych wersji komercyjnych (Kylix Desktop Developer i Kylix Server Developer) i będzie mógł być wykorzystywany jedynie do tworzenia bezpłatnych aplikacji rozprowadzanych na licencji GPL.

Kylix określany jest czasami jako Delphi do Linuksa, czego nie należy jednak interpretować dosłownie. Jest to bowiem kompletnie nowy system, który tworzy czyste aplikacje linuksowe, korzystające z zupełnie nowej, niezależnej od platformy biblioteki komponentów CLX. Zawiera ona wszystkie komponenty potrzebne do tworzenia aplikacji wieloplatformowych. Przenoszenie starej VCL było z jednej strony niemożliwe ze względu na zbyt silne powiązania z systemem Windows, a z drugiej bezcelowe, ponieważ CLX nie miał być tylko wersją linuksową, lecz nowoczesną, rzeczywiście niezależną od platformy biblioteką, którą w przyszłości będzie można stosować także w innych systemach. CLX jest biblioteką naprawdę uniwersalną, zwłaszcza że w kolejnych wersjach Delphi i C++ Buildera zastąpi VCL wykorzystywany w Windows.

Biblioteka CLX składa się z czterech głównych części. Podstawowa, BaseCLX, stanowi bazę do wszystkich pozostałych komponentów, zawiera definicje głównych typów danych, najważniejsze funkcje systemowe oraz definicje podstawowych klas (na ich podstawie tworzone są klasy potomne, z których powstają konkretne obiekty). Drugi w kolejności, Visual CLX, jest najciekawszym elementem biblioteki, ponieważ odpowiada za jednakowy wygląd aplikacji w różnych systemach. Jest jednocześnie najtrudniejszy do zaimplementowania, ponieważ już w samym Linuksie istnieje duża różnorodność graficznych interfejsów użytkownika, nie wspominając nawet o innych platformach.

Żeby uniezależnić GUI od platformy, wykorzystano gotową bibliotekę Qt firmy Trolltech, która w ujednolicony sposób pozwala sterować elementami graficznymi. Qt jest napisana w C++, w pełni obiektowa i wyposażona we własne niezależne od systemu mechanizmy komunikacyjne. Podczas gdy Windows posługuje się niewygodnymi funkcjami typu callback, biblioteka Qt wykorzystuje system sygnałów i tzw. slotów. Sygnały wysyłane są przez obiekty, gdy zmienia się ich stan; natomiast sloty to zwyczajne funkcje przypisane do odpowiednich sygnałów. Zarówno sloty, jak i sygnały mogą przyjmować dowolną liczbę dowolnych argumentów. Nie ma więc problemów ze zgodnością typów przy funkcjach callback ani niebezpieczeństwa wywołania procedury wskazywanej przez pusty wskaźnik. Jest to rozwiązanie znacznie bardziej niezawodne i gwarantujące większą stabilność aplikacji. Ponadto Qt jest już obsługiwana na bardzo wielu platformach, począwszy od 32-bitowych wersji Windows, poprzez wszystkie odmiany Linuksa, aż po komercyjne wersje Uniksa. Oparte na niej jest także znane linuksowe środowisko graficzne KDE.

DataCLX zawiera wszystkie działające po stronie aplikacji klienckiej komponenty, które oferują dostęp do danych. Współpracują one z jednej strony z wersjami data-aware zwykłych elementów VisualCLX, a z drugiej z nowym silnikiem bazodanowym dbExpress, którego głównym zadaniem jest komunikacja z odpowiednimi sterownikami baz danych i przesyłanie ich do elementów DataCLX. Nowy dbExpress zastępuje dotychczasowy BDE i zapewnia jednakowy sposób dostępu do baz danych, niezależnie od rodzaju aplikacji (lokalna, klient/serwer, wielowarstwowa). W przypadku bazy lokalnej dbExpress odwołuje się bezpośrednio do odpowiednich plików, w modelu klient/serwer komunikuje się z serwerem baz danych, a w przypadku aplikacji wielowarstwowych działa na serwerze pośredniczącym, który pobrane z serwera dane przesyła do aplikacji (tzw. cienkiego klienta, pozbawionego własnych mechanizmów dostępu do baz danych) za pomocą systemu MIDAS, wykorzystując protokół SOAP (Simple Object Access Protocol). Dane te mogą być przesyłane w wewnętrznym formacie MIDAS lub w XML.

Obsługiwane przez Kylixa systemy baz danych to MySQL i InterBase, które dostępne są jednak dopiero w wersji Desktop Developer, a dodatkowa współpraca z IBM DB2 oraz Oracle 8i możliwa będzie tylko przy wykorzystaniu wersji Server Developer. Kylix nie będzie natomiast obsługiwał formatów dBase i Paradox, wobec tego zaleca się przeniesienie danych do baz MySQL lub Interbase.

Ostatnia część biblioteki CLX to NetCLX, czyli zestaw komponentów sieciowych. Kylix Server Developer zawiera gotowe elementy do tworzenia aplikacji współpracujących z serwerem WWW Apache, przy czym komunikacja odbywa się niezależnie od API serwera (wykonywalne aplikacje CGI lub Apache .dso). W skład NetCLX wchodzą także komponenty implementujące protokół TCP/IP oraz narzędzia, które pozwalają łatwo przekształcić lokalną bazodanową aplikację w jej wersję sieciową działającą pod kontrolą przeglądarki.

Kolejne wersje Delphi, C++ Buildera i Kyliksa będą coraz bardziej zdążały ku sobie, oferując możliwość tworzenia aplikacji do jednego systemu, po czym przeniesienia jej do innego. Jednak bez względu na stopień automatyzacji tego procesu, zawsze znajdą się elementy programu, których przenieść się nie da, jak np. biblioteka VCL (tylko częściowo przekształcona w CLX), technologie stosowane wyłącznie w Windows (OLE) czy bezpośrednie wywołania Win32 API. Jednak mimo tych obiektywnych trudności, Kylix wciąż jest jedynym narzędziem, które pozwala tak łatwo i szybko dostarczać profesjonalne aplikacje na bardzo chłonny rynek linuksowy.


Zobacz również