Bob Swart (aka Dr.Bob)
Van Delphi naar Kylix

Kylix staat op het punt van uitkomen (of is op het moment dat u dit leest misschien zojuist uitgekomen). In dit artikel wil ik onder andere wat aandacht besteden aan mogelijkheden om Delphi toepassingen voor Windows met Kylix om te zetten naar Linux (en terug).

Linux
De eerste release van Kylix die we kunnen verwachten zal te vergelijken zijn met Delphi Professional, maar dan voor Linux in plaats van voor Windows. We krijgen Kylix Desktop Developer Edition en de Kylix Server Developer Edition. Dat houdt dus in dat we geen Enterprise zaken vergelijkbaar met SQL Links, CORBA (VisiBroker for Delphi) of MIDAS terug zullen vinden in deze eerste release van Kylix. Dat is overigens niet helemaal waar, want een klein stukje van MIDAS (de ClientDataSet component) zal vanaf versie 6 ook in de Professional versies van Delphi en C++Builder zitten, maar dat is het onderwerp van een ander verhaal.
Kylix zal werken onder de meest recente editie van Linux; dus bijvoorbeeld SuSE, Mandrake of Red Hat 7.0 (zoals in mijn geval), en zal daarbij dan zowel de GNOME als de KDE desktops ondersteunen. Wat betreft de zogenaamde desktop thema's van GNOME en KDE is het op dit moment nog niet duidelijk of er 100% support in de eerste release van Kylix zal zitten, maar men is hier wel stevig mee bezig (de Kylix demonstraties her en der laten in ieder geval zien dat de Kylix ontwikkelomgeving zelf zonder problemen draait onder GNOME of KDE).

Kylix = Delphi voor Linux
Kylix is een codenaam voor een heel project, dat als een van de resultaten een native ontwikkelomgeving voor Linux heeft. Deze ontwikkelomgeving zal in de eerste release te vergelijken zijn met Delphi Professional (zoals ik hierboven al aangaf). De tweede release van Kylix zal de C++Builder Professional voor Linux zijn, terwijl de derde release een soort combinatie van deze twee is, die bovendien de Enterprise zaken (zoals MIDAS en CORBA enzo) zal bevatten. Deze laatste Kylix Enterprise Studio verwacht ik zelf pas over een jaar, dus richt ik me voorlopig maar op de eerste release, die overigens ook een native command-line compiler DCC zal bevatten, en native Linux x86 machine code zal genereren (met Linux x86 bedoel ik Linux draaiend op Intel compatible hardware, dus niet bijvoorbeeld op een SUN Sparc, of DEC machine die Linux draait).

Windows en Linux
Naast de Kylix ontwikkelomgeving zelf, is een van de andere doelstellingen van Project Kylix (het mogelijk maken van) het porteren van toepassingen van Windows naar Linux en weer terug. De huidige Visual Component Library (VCL) van Delphi is bovenop de Windows API gebouwd, zowel wat routines betreft (kijk maar eens naar de Windows en SysUtils units) als wat de visuele componenten betreft (de VCL componenten zijn in feite bovenop de Windows "controls" gebouwd). En ook de Borland Database Engine (BDE) is alleen maar voor Windows gebouwd. Voor het ombouwen van de volledige VCL en BDE van Windows naar een Linux editie zou ontzettend veel tijd en moeite nodig zijn geweest. In plaats daarvan is besloten om een geheel nieuwe benadering te kiezen onder de naam CLX, wat staat voor Component Library X-platform. CLX bestaat uit een aantal onderdelen - daar kom ik zo op terug - en zal zowel onder Linux als onder Windows beschikbaar komen. Dus zowel met Kylix (de Delphi voor Linux) als met de toekomstige versie van Delphi voor Windows (die dan waarschijnlijk zowel met VCL als met CLX zal kunnen werken).

CLX
CLX kan gezien worden als een cross-platform VCL. Maar het is veel breder dan de VCL, want CLX bevat niet alleen maar "visuele" componenten, maar het hele scala aan cross-platform ontwikkelbouwstenen. De onderdelen van CLX heten BaseCLX, VisualCLX, DataCLX en NetCLX. In BaseCLX zit de standaard zaken, zoals conversieroutines, systeemroutines (schijf en bestandsoperaties), etc. Ook non-visuele componenten zoals een TStringList zullen we straks in BaseCLX terug kunnen vinden.
VisualCLX bevat alle visuele componenten. Dit onderdeel van CLX is voor een deel gebaseerd op Qt, een cross-platform library van Trolltech die door Borland in licentie is genomen. Qt is beschikbaar voor Windows en Linux (en nog andere platforms, waardoor VisualCLX potentieel ook op andere platforms beschikbaar zou kunnen komen in de toekomst). Je moet bij VisualCLX overigens niet alleen denken aan de TButton en TEdits, maar ook aan de data-aware componenten zoals TDBEdit en TDBGrid. Alle visuele componenten zitten in VisualCLX.
Waar VisualCLX onder andere de data-aware componenten bevat, zal DataCLX juist de data-access componenten bevatten. Niet door gebruik te maken van de BDE, want die zal niet naar Linux geport worden, maar door gebruik te maken van een nieuwe data access laag die dbExpress zal heten. Via dbExpress kunnen we straks bijvoorbeeld praten met InterBase en mySQL (en wellicht ook met Oracle 8i onder Linux, maar daar heb ik nog niks definitiefs over gehoord).
Het vierde en laatste onderdeel van CLX heet NetCLX en zal in feite alle internet en web-gerelateerde componenten bevatten. Dus zowel de FTP, POP3, SMTP en andere internet protocollen (in de vorm van de Indy componenten die de NetManage internet componenten op het component palette van Delphi zal vervangen), maar ook de WebBroker componenten zoals de PageProducer en TableProducers. Voeg daarbij de specifieke mogelijkheid om met zowel Kylix (onder Linux) als Delphi (voor Windows) straks web server toepassingen te kunnen maken voor de veelgebruikte Apache web server, en je begrijpt misschien dat daar erg naar wordt uitgekeken (in ieder geval door mijzelf).

Cross-platform
Wie straks met Kylix gaat werken, heeft geen keus maar zal CLX gebruiken. En zal daarmee cross-platform toepassingen bouwen die zowel onder Linux werken, als in de toekomstige versie van Delphi onder Windows zullen compileren en werken. En da's fijn, want daarmee kun je plotseling voor een veel breder publiek je toepassingen beschikbaar maken (uiteraard zul je moeten wachten tot Delphi 6 uit is voordat je je CLX toepassing onder Delphi 6 kunt compileren, maar mijn persoonlijke verwachting is dat Delphi 6 slechts enkele maanden na Kylix beschikbaar zou kunnen komen).

Van VCL naar CLX
Stel je wilt niet wachten tot Kylix uit is, of je hebt een bestaande toepassing en wilt die straks omzetten van Windows naar Linux. Wat voor narigheid kun je dan allemaal verwachten? Vooral de mensen die ooit wel eens Borland Pascal source code naar Delphi hebben geport, of later van 16-bit Delphi naar 32-bits moesten weten dat het porten van toepassingen niet altijd een even fijne bezigheid is. En geloof me, porten van het ene besturingssysteem (Windows) naar het andere (Linux) maakt de zaak er niet eenvoudiger op, al is het maar omdat je moeite zult hebben om beide versies naast elkaar te draaien.
Als we uitgaan van het porten van een Delphi VCL toepassing, dan is een belangrijke bron van informatie de lijst van zaken die niet ondersteund zullen worden door Kylix onder Linux. Deze zaken zullen dus op een andere manier geïmplementeerd moeten worden. Het betreft alle native Windows code, zoals aanroepen van direkte Window APIs (een MessageBox, TimeGetTime of kortweg alles wat in de Windows unit staat). Hetzelfde geldt voor alle hoger niveau Windows specifieke zaken zoals DDE, OLE, COM, DCOM, COM+, ActiveX controls, ActiveForms, Active Server Pages, ISAPI DLLs en ADO. Wow, dat is nogal een lijst. Wat blijft er dan over, want we hadden al gezien dat ook de BDE niet onder Linux beschikbaar zal zijn? Gelukkig valt het allemaal wel mee. InterBase is bijvoorbeeld zowel onder Windows als Linux aanwezig, en ook de meeste "normale" VCL componenten zullen ook als een vergelijkbare CLX component beschikbaar komen. Meestal met vergelijkbare properties, events en methods zodat de huidige VCL gebruikers (zowel de programmeurs als de toepassingen) met weinig aanpassingen van VCL naar CLX kunnen overstappen - mits de betreffende VCL component inderdaad in CLX voorkomt.

VCL vs. CLX
Moeten straks alle VCL toepassingen omgezet worden naar CLX? Is dit het einde van de VCL? Nee, natuurlijk niet. De VCL zal nog steeds verder ontwikkeld worden voor Delphi onder Windows, en zal daarbij juist alle nieuwe native Windows zaken gaan bevatten (in Delphi 6 zullen waarschijnlijk heel wat nieuwe Windows 2000 features in de VCL terug te vinden zijn, zoals COM+ support en dat soort nieuwe zaken). Wil je dus een echte Windows toepassing schrijven, en daarbij gebruik maken van alle toeters en bellen, dan is CLX niet geschikt, maar moet je gewoon de VCL blijven gebruiken. CLX is met name geschikt voor cross-platform toepassingen, waar de VCL voor de echte Windows toepassingen de beste keuze blijft.
Een vraag die nu natuurlijk naar boven komt is of CLX voldoende "native" ondersteuning biedt voor zowel Linux als Windows om de toepassingen er toch "echt" uit te laten zien, en niet maar halfbakken. Die laatste angst zal waarschijnlijk eenvoudig de wereld uit geholpen kunnen worden, aangezien met name de visuele componenten uit VisualCLX voor een deel gebasseerd zijn op de Qt bibliotheek van Trolltech die al enkele jaren beschikbaar is als cross-platform omgeving.

Cross-platform Tips
Wie zich nu al wil voorbereiden op het gebruik van Kylix en CLX moet nog even geduld hebben. Aan de andere kant zijn er wel al bepaalde zaken betreffende de Windows en Linux besturingssystemen waar nu al vast rekening mee gehouden kan worden (en dan heb ik het nog niet eens over de componenten die straks onder Linux niet aanwezig zullen zijn). Zo is een van de grootste verschillen tussen Linux en Windows de case-sensitive bestandsnamen. Dat wil zeggen dat "file.txt" en "file.TXT" onder Windows naar hetzelfde wijst, maar onder Linux niet. En ik durf niet met zekerheid te zeggen dat alle toepassingen die ik in het verleden heb geschreven hier goed mee om gaan. En hetzelfde geldt straks als iemand onder Kylix een toepassing maakt die van het bestand "file.txt" een backup maakt in "file.TXT" (wat onder Linux immers een ander bestand is). Als CLX toepassing zal het onder Windows meteen compileren en opnieuw werken, maar een ander (waarschijnlijk ongewenst) resultaat hebben. En als je nu denkt "dit zal mij niet overkomen", denk dan eens aan de namen en de corresponderende bestandnamen van je Units. Als je unit "MyUnit" heet dan zal hij ook echt in "MyUnit.pas" moeten staan, en niet in "myuniy.pas", want anders zal de compiler onder Linux hem niet vinden. Tja, en voldoen dan al je oude Delphi projecten nog aan deze regels? Ik zal er toch even extra naar moeten kijken (gelukkig is dit laatste probleem iets makkelijker te constateren; je programma zal immers niet compileren en je precies vertellen welke units er niet gevonden kunnen worden). Uiteraard blijft de ObjectPascal taal zelf onveranderd, en kun je daar rustig een variabele met naam "waarde" declareren en als "Waarde" of zelfs "WaarDe" gebruiken.
Verder zijn er verschillen in het gebruik van drive letters onder Windows (dat kent Linux niet), en wordt de datum en tijd intern op een andere manier opgeslagen. Dit heeft ook gevolgen voor de bestands datum/tijd velden die je bijvoorbeeld met FindFirst en FindNext terug krijgt. Tot slot nog een belangrijk verschil is het feit dat we onder Windows altijd een \ gebruiken (een back-slash), terwijl het onder Linux een / is (een slash). Om hier toch portable code voor te schrijven is het de bedoeling dat iedereen gebruik gaat maken van de constante "PathSeparator" die backslash zal zijn onder Windows en slash onder Linux. Daarnaast zal iedereen die nu al gebruik maakt van de routines IsPathDelimiter, IncludeTrailingBackslash, ExcludeTrailingBackslash en ExtractFilePath uit de SysUtils unit merken dat die onder Linux ook goed werken (maar dan met een slash).

En verder...
Kylix is meer dan alleen maar Delphi voor Linux. Het is een project dat als doel heeft om cross-platform toepassingen te ontwikkelen voor zowel Windows als Linux, en daarmee een hele nieuwe wereld (en markt) aan te boren. Ook de Linux wereld zelf zal profiteren van Kylix - direct of indirect. In directe zin zal dit zijn door duizenden ervaren en minder ervaren Delphi ontwikkelaars die in Kylix een ontwikkelomgeving onder Linux zullen aantreffen waarmee ze snel en efficient native toepassingen voor Linux kunnen maken. Dat doen ze echter niet alleen met Kylix, en dat is het indirecte nut voor de Linux markt: al sinds begin maart 2000 is een Kylix Kickstart initiatief door Borland bezig, met als doel om alle externe partijen die componenten, hulpmiddelen, boeken, cursussen en wat dan ook op het gebied van Delphi (voor Linux) willen bouwen zoveel mogelijk te ondersteunen met informatie en technische support zodat zij hun produkten (vrijwel) klaar kunnen hebben op het moment dat Kylix zelf beschikbaar komt. Op dat moment komen er dus naar verwachting een paar honderd componenten, hulpmiddelen, boeken en andere produkten beschikbaar voor Linux. Wat alleen maar een goede zaak is, of je nu Kylix wilt gebruiken of niet.

Meer Informatie
Mocht iemand nog vragen, opmerkingen of suggesties hebben, dan hoor ik die het liefst via . Voor meer informatie over Kylix heeft Borland een officiële Kylix pagina ingericht te www.borland.com/kylix (met artikelen en FAQs over Kylix). Daarnaast loont het altijd wel de moeite om een kijkje op mijn eigen Kylix Kicks pagina te nemen op www.drbob42.com/kylix (met het laatste nieuws en een verslag van Kylix presentaties en demonstraties).


This webpage © 2001-2006 by webmaster drs. Robert E. Swart (aka - www.drbob42.com). All Rights Reserved.