Aus Linux-Magazin 01/2003

Borlands Kylix 3: Rapid Application Development unter Linux

Mit der aktuellen Version 3 hat Kylix an Stabilität und Reife gewonnen und unterstützt jetzt auch C++. Beim Import alter Projekte und Tools zur Zusammenarbeit von Entwicklern hapert es aber noch.

Borlands Entwicklungswerkzeuge gehören unter Windows schon seit jeher zum beliebtesten Handwerkszeug für viele Programmierer, vor allem Delphi und der C++-Builder. Kylix in Version 3 fasst beide Sprachen in einer Entwicklungsumgebung für Linux zusammen. Anhänger des Rapid Application Development haben nun noch mehr Grund zum Umstieg.

Basis von Kylix sind die Borland-eigenen Delphi- und C++-Compiler nebst Debugger sowie die Komponenten-Bibliothek CLX (Component Library for Cross Platform). Die mit ihr geschriebenen Programme lassen sich mit nur wenigen Anpassungen auch unter den Windows-Pendants kompilieren. Aus diesem Grund ist Kylix ideal für die Crossplattform-Entwicklung geeignet.

Beim Test ging es um das Enterprise-Paket von Kylix 3. Es ist die größte und mit etwa 3000 Euro auch die teuerste Ausbaustufe. Eine Leistungsebene tiefer trifft man auf die mit 325 Euro deutlich günstigere Professional-Variante. Wer gar kein Geld ausgeben will, kann gegen eine Registrierung bei Borland die so genannte Open Edition kostenlos aus dem Internet herunterladen.

Open Edition zum Reinschnuppern

Die Open Edition ist im Umfang der mitgelieferten Komponenten deutlich eingeschränkt, die mit ihr erstellten Programme dürfen auch nur unter der GPL vertrieben werden. Damit aber noch nicht genug: Wie bei der Vorversion wird die erstellte Software wohl auch dieses Mal bei jedem Programmstart einen Zwangshinweis einblenden (Abbildung 1). Zum Reinschnuppern bleibt die Open Edition dennoch ideal.

Die Enterprise- und Professional-Varianten werden mit einer identischen, gedruckten Dokumentation ausgeliefert. Dazu zählen das ausführliche Entwicklerhandbuch, eine Delphi-Sprachreferenz, eine kurze Einführung sowie ein Poster im A2-Format mit der gesamten Objekthierarchie der CLX. Benutzer der Open Edition müssen auf die PDF-Versionen und die Online-Hilfe ausweichen. Eine detaillierte Aufstellung aller Unterschiede ist auf den Internetseiten von Borland zu finden.[1]

Auf der Verpackung fallen sofort zwei neue Merkmale auf: Zum einen spricht Kylix jetzt C++, zum anderen ziert ein großer silberner Aufkleber mit der Aufschrift “.NET interoperability” die Vorderseite. Tatsächliche .NET-Bestandteile wie beispielsweise Teile des Frameworks sind zwar nicht vorhanden. Dennoch ist das Paket in der Lage, eine .NET-Umgebung einzubinden. Das klappt jedoch dank der mitgelieferten Komponenten für die gängigen Standardprotokolle wie SOAP auch mit anderen Komponentenmodellen für plattformübergreifende, verteilte Anwendungen, zum Beispiel Corba oder Sun One.

In diesem Zusammenhang soll nicht unerwähnt bleiben, dass auch ein anderer Begriff, mit dem Borland offensiv wirbt, den Entwickler etwas in die Irre führt: Das Two-Way-Tool Kylix erstellt zwar im Hintergrund den Programmcode für die grafisch zusammengeklickten Komponenten, umgekehrt wird jedoch bei einer Änderung des Quellcodes die grafische Ansicht nicht automatisch aktualisiert.

Eineinhalb-Wege-Tool

Entfernt man beispielsweise die von Kylix generierte Definition einer Schaltfläche, bleibt das grafische Pendant auf dem Formular erhalten. Versucht man das Programm in diesem Zustand auszuführen, bedankt es sich mit der Ausgabe einer Exception. Obwohl es für den Compiler leicht wäre, diesen Fehler bereits zur Übersetzungszeit zu entlarven, läuft die Kompilierung ohne jegliche Fehlermeldung durch.

Nach der mit fast 500 MByte recht großen Komplettinstallation – wohlgemerkt ohne die Beigaben wie Applikations-Server und Datenbank – liegen auf der Platte zwei Entwicklungsumgebungen. Jeweils genau eine für Delphi- und C++-Programmierer – sie gleichen sich fast wie ein Ei dem anderen. Wer simultan mit Delphi und C++-Programmen arbeitet, hantiert also im schlimmsten Fall mit zwei IDEs gleichzeitig. Aussehen und Position der Fenster sind aber frei bestimmbar. Durch die Speicherung der Anordnungen in Profilen, liegt für verschiedene Situationen stets das passende Layout parat.

Herr, wirf RAM vom Himmel!

Die Systemanforderungen sind übrigens unbedingt ernst zu nehmen. Nicht nur bei dem als Minimum angegebenen Pentium II 500 mit 256 MByte RAM wird das Arbeiten sonst schnell zur Qual. Insbesondere die Hilfe beansprucht eine Menge Systemressourcen. Der Grund für diese Gefräßigkeit ist schnell entdeckt: Die IDE von Kylix wird nach wie vor unter dem Windows-Emulator Wine betrieben[5]. Da die IDE vollständig mit Hilfe des CLX-Vorgängers VCL (Visual Component Library) erstellt wurde, drängt sich hier der Verdacht auf, dass die CLX immer noch nicht den gesamten Umfang der auf Windows ausgerichteten VCL erreicht hat.

Hinzu kommt noch, dass die verwendete Wine-Bibliothek nach wie vor nicht ganz ausgereift ist. So kommt es immer mal wieder zu Darstellungsfehlern und einige der neu aufspringenden Fenster versteckten sich gekonnt im Hintergrund. Die eigenen Entwicklungen sind davon allerdings nicht betroffen, schließlich erzeugen die Borland-Compiler native Linux-Programme.

Der Umfang der mitgelieferten Dokumentation fällt Borland-typisch aus: üppig, mit Fehlern gespickt, dabei inhaltlich äußerst knapp gehalten. Somit endet – frei nach Murphys Gesetz – die Information der Hilfetexte grundsätzlich immer genau da, wo eine Antwort auf ein Problem eigentlich hätte folgen müssen. Immer mal wieder trifft man auf nicht oder falsch übersetzte Stellen. Besonders deutlich wird dies bei den nur als PDF-Datei vorliegenden, aber sonst sehr guten Tutorials.

Die an sich äußerst hilfreiche, automatische Quellcode-Ergänzung (Tooltipp-Hilfe) verschluckt sich schon mal, sobald sich in einer höher liegenden Zeile ein Fehler befindet. Die Folge: Ab sofort hagelt es Fehlermeldungen bei den weiteren Ergänzungsversuchen. Hinzu kommt, dass Borland diesmal die Zahl der mitgelieferten Beispielprogramme kräftig reduziert hat. Früher war man nicht so geizig.

Alles bleibt anders

Für alte Delphi-Programmierer hat sich in der neuen Version nur wenig geändert. Wie die Umbenennung der Programmiersprache Object Pascal in Delphi fallen die meisten anderen Neuerungen in die Sparte Produktpflege. So kann der Delphi-Compiler ab sofort Pentium-4-Inline-Assembler übersetzen (Assembler-Anweisungen innerhalb von Delphi-Quellcode).

Der ohnehin schon sehr gute, nahtlos integrierte Debugger erlaubt nun die Einteilung der überwachten Ausdrücke in Gruppen. Außerdem kann man das zu testende Programm neuerdings bis zum Ende einer Funktion ausführen lassen oder es sogar vom Debugger trennen. Letzteres bedeutet, dass das erstellte Programm als eigenständiger Prozess weiterläuft. Zum Debuggen von Webserver-Anwendungen liegt extra ein Webanwendungs-Debugger bei, der allerdings beim Test einmal das Zeitliche segnete und dabei gleich die ganze IDE mit in den Tod riss. Sonst lief Kylix auf dem Testrechner sehr stabil.

Abbildung 1: In fertigen Programmen zeigt Kylix in der Open Edition bei jedem Start ein Hinweisfenster an.

Abbildung 1: In fertigen Programmen zeigt Kylix in der Open Edition bei jedem Start ein Hinweisfenster an.

Kylix in drei
Versionen

Kylix Enterprise Edition

Preis: etwa 3000 Euro

Umfang: IDE, Delphi-Compiler (früher Object Pascal), C++-Compiler, Komponentenbibliothek CLX, Interfaces für Oracle und DB 2 sowie andere Datenbanken, Visibroker 4.5, Borland Enterprise-Server, Datasnap-Middleware, eingeschränkte Interbase-Lizenz.

Besonderheiten: Externe Werkzeuge wie etwa GNU-Tools lassen sich einbinden, erzeugt auch GNU-kompatible Makefiles. Auch zahlreiche Werkzeuge zur Web- und XML-Entwicklung (Datasnap, Bizsnap).

Kylix Professional Edition

Preis: etwa 325 Euro

Umfang: Wie Enterprise Edition, aber weniger CLX-Komponenten, ohne Unterstützung für Oracle und DB 2, weniger XML-Support, gedruckte Dokumentation wie Enterprise-Version (230 Seiten Sprachreferenz, etwa 1000 Seiten Entwicklerhandbuch).

Besonderheiten: Erlaubt das Erstellen von Closed-Source-Software, Web-Entwicklung nur eingeschränkt, Datenbank-Anbindung an PostgreSQL, MySQL und Interbase ist möglich.

Kylix Open Edition

Preis: kostenlos, kann von Borlands Website nach erfolgter Registrierung heruntergeladen werden

Umfang: Gegenüber Professional und Enterprise stark eingeschränkt, keine Unterstützung von SQL, XML, externen GNU-Tools und GNU-Makefiles, zudem weniger als halb so viele CLX-Komponenten wie Professional, weniger Debugging-Möglichkeiten.

Besonderheiten: Erlaubt nur das Erstellen von GPL-Program-men, die dann mit einem Kylix-Splashscreen starten.

Der neue Diagrammeditor geht sogar noch einen Schritt weiter: In ihm lassen sich die Beziehungen der Komponenten grafisch darstellen. Diese an sich gute Idee wurde leider nicht konsequent zu Ende geführt. Noch zu verschmerzen ist, dass hier nicht die mittlerweile zum Standard gewordene UML-Notation eingesetzt wird. Es kommt aber leider hinzu, dass sich die Beziehungen nicht dynamisch an neue Situationen und Veränderungen anpassen. Wird eine Komponente auf dem Formular versehentlich entfernt und per »Bearbeiten | Rückgängig« wieder zum Leben erweckt, glänzt sie in der Diagrammansicht auch weiterhin durch Abwesenheit.

Die ganze Dokumentationsarbeit bleibt somit wieder mal beim Programmierer hängen, der die Diagramme außerdem immer wieder auf Fehler kontrollieren muss. An dieser Stelle zeigt sich deutlich, dass Kylix 3 lediglich auf den Stand von Delphi 6 gebracht wurde – denn das neue Delphi 7 Studio unterstützt in der Enterprise-Version die UML-Notation von Haus aus.

Entwicklung für Autisten

Aber es gibt noch mehr zu meckern: Eine vernünftige Versionsverwaltung, die zudem die Möglichkeit der Gruppenarbeit bietet, ist auch in Kylix 3 nicht anzutreffen. Lediglich die gemeinsame Nutzung von erstellten Objekten (wie zum Beispiel von Formularen, Dialogfenstern oder Datenmodulen) ist vorgesehen. Das zugrunde liegende Austauschsystem fußt dabei auf der Rechtevergabe des Linux-Dateisystems.

Auch die Möglichkeiten zur Internationalisierung und Lokalisierung sind beschränkt. Borland bringt hier lediglich einige Tipps im Entwicklerhandbuch und die Unterscheidung verschiedener Ressourcenmodule. Letztere enthalten alle Ressourcen, etwa Buttons oder Formulare, die jeweils zu einer Sprache gehören. Das Anlegen mehrere Module erfolgt äußerst umständlich über ein Kommandozeilentool. Da sich dieses System zudem nur auf Ressourcen beschränkt, muss man auch weiterhin auf korrekte Datumsangaben und anders funktionierende Sortierungen selbst achten.

Bei einer Installationsroutine oder einer Hilfe für die fertige Software ergibt sich kein wesentlich anderes Bild. Das Handbuch hält zwar ein paar Hinweise bereit, wie man eine Distribution zusammenstellt, ein Installationsprogramm oder wenigstens eine Routine, die das Projekt in ein hübsches RPM-Paket verpackt, fehlt jedoch.

Die Veränderungen in den Komponenten fallen nicht besonders dramatisch aus. So erlauben etwa »TOpenDialog« und »TSaveDialog« die Voransicht von Dateien und die grundlegende Datenbankkomponente »dbExpress« spricht ab sofort mit Oracle 9i und Informix SE. Die Unterstützung einer universellen Datenbankschnittstelle wie UnixODBC fehlt aber. XML hingegen kommt an allen Ecken und Enden zur Sprache, zumindest bei den kostenpflichtigen Versionen. Neu ist eine Websnap-Komponente, die dynamische Dokumente auf der Basis von XSL-Templates erzeugt.

Abbildung 2a: Die Kylix-3-Programmierumgebung (IDE) für Delphi-Programme ...

Abbildung 2a: Die Kylix-3-Programmierumgebung (IDE) für Delphi-Programme …

Abbildung 2b: ... und das Pendant für C++-Entwickler. Mit dem Objektinspektor links unten lässt sich an allen Eigenschaften der markierten Komponente schrauben.

Abbildung 2b: … und das Pendant für C++-Entwickler. Mit dem Objektinspektor links unten lässt sich an allen Eigenschaften der markierten Komponente schrauben.

Wer sich die Professional- oder Enterprise-Version zulegt, erhält auch den Quellcode der meisten Komponenten. Ein Teil der CLX wird unter dem Namen FreeCLX als Open-Source-Projekt unter[2] vorangetrieben. Somit steht zumindest dieser Teil auch allen anderen Interessenten offen. Unter Linux baut die CLX übrigens auf einer inzwischen veralteten und von Borland modifizierten Qt-Version auf, sodass man bei der Weitergabe seiner eigenen Applikationen diese Bibliothek auf keinen Fall vergessen sollte.

Zur Programmierung von Internetanwendungen kommen neben den Borland-eigenen Serverkonzepten Webbroker und Websnap die Komponenten von Nevrona Indy 9.1 zum Einsatz. Ihr Quellcode lässt sich ebenfalls unter[3] einsehen. Die Webbroker- und Websnap-Komponenten ermöglichen die schnelle und einfache Erstellung von Internet-Serveranwendungen. Demgegenüber kapseln die Indy-Komponenten (Indy, Internet Direct) alle wichtigen Übertragungsprotokolle – sogar das alte Gopher ist noch mit dabei.

Mit dem Plus

C++-Liebhaber, die schon lange neidisch auf die schnellen Delphianer geschielt haben, müssen leider (noch) ein paar bittere Pillen schlucken. Besonders die Umsteiger, die nicht vom C++-Builder kommen, werden in der Anfangszeit den Hersteller oft verfluchen. Denn die CLX-Bibliothek ist selbstverständlich in Delphi geschrieben, wer sich näher damit befassen muss, sollte also auch diese Sprache beherrschen.

Damit man die CLX aber überhaupt von C++ aus benutzen kann, hat Borland die Sprache selbst ergänzt. Einigen C++-Anhängern werden sich etwa beim zusätzlichen »__published«-Block in der Klassendeklaration die Nackenhaare sträuben. Er führt alle Eigenschaften auf, die von der IDE zur Entwurfszeit verändert oder festgelegt werden. In die gleiche Kategorie fallen auch die unter Delphi und der CLX verwendeten so genannten Interfaces, ein zu Java ähnlicher Ableitungsmechanismus, der Mehrfachvererbung ohne Konflikte erlaubt. Dank des Schlüsselworts »__interface« kommt nun auch C++ in den Genuss dieses Konzepts.

Es gibt noch weitaus mehr Unterschiede und Anpassungen, die in einem eigenen, 34 Seiten starken Unterkapitel des Entwicklerhandbuchs ausführlich behandelt werden. Betroffen sind insbesondere die virtuellen Methoden, die Konstruktion und Destruktion von Objekten sowie die aus Delphi übernommenen Datentypen.

Die einzelnen CLX-Komponenten müssen zwingend mit »new« angelegt werden; das Ansprechen der Objekte erfolgt also ausschließlich über Zeiger. Netterweise kann man in den Optionen alle Borland-Erweiterungen deaktivieren. Das führt allerdings zu dem durchschlagenden Erfolg, dass der Compiler beim Anbindungsversuch der CLX nur so vor Fehlermeldungen sprudelt. Wenn wir schon beim Thema Bibliotheken sind: Für die immer noch unterstützte Sprache C existiert hingegen eine vollständige und gut dokumentierte Standard-C-Bibliothek.

Bestehende C++-Projekte, die nicht mit dem C++-Builder erstellt wurden, haben es dagegen bei der Konvertierung schwer. So wurde die zum C++-Standard gehörende Standard Template Library (STL) nicht wie unter Windows üblich von Rogue Wave lizenziert. Stattdessen kommt die freie STLport-Variante zum Einsatz[4], sie bringt ihre eigene, nicht in das Hilfesystem eingebettete HTML-Dokumentation mit und ist auch nicht ganz vollständig. Insbesondere fehlt die allseits beliebte »string«-Klasse, zu der Borland selbst keine Alternative bereitstellt.

Abbildung 3: Solche Grafikfehler tauchen dank der Wine-Emulation in der IDE von Kylix immer mal wieder auf.

Abbildung 3: Solche Grafikfehler tauchen dank der Wine-Emulation in der IDE von Kylix immer mal wieder auf.

Abbildung 4: Die Online-Hilfe im Windows-Look geht sehr verschwenderisch mit den Ressourcen um. Die Hilfetexte sind dagegen recht mager.

Abbildung 4: Die Online-Hilfe im Windows-Look geht sehr verschwenderisch mit den Ressourcen um. Die Hilfetexte sind dagegen recht mager.

Import-Beschränkungen

Selbst ältere C++-Builder-Projekte lassen sich nicht einfach importieren. Sie müssen erst per Hand in ein neu angelegtes Projekt umkopiert und manuell an die neuen Gegebenheiten angepasst werden. Hat man es endlich geschafft und das Projekt lässt sich ohne Fehlermeldungen öffnen, sind garantiert noch einige Units beziehungsweise Header-Dateien umzubenennen.

Das gilt sogar für Projekte, die auf der CLX aufbauen und somit laut Werbung eigentlich mühelos portierbar sein sollten. Aus “Graphics” unter Windows wird zum beispiel “QGraphics” unter Linux. Wünschenswert wäre hier ein Assistent beziehungsweise ein Skript, das einige der notwendigen Anpassungen automatisch vornimmt.

Außerdem wird der C++-Programmierer gegenüber den Delphi-Kollegen beim Umfang der IDE benachteiligt. So fehlen der Projekt-Browser und der Code-Explorer (Abbildung 2a und 2b). Auch der Compiler macht – zumindest subjektiv – einen gemächlicheren Eindruck im Vergleich zur wahrhaft rasanten Delphi-Variante. Zum Ausgleich sind die Binaries etwas kleiner (siehe Kasten “Auf die Größe geschaut”).

Eine weitere Stolperfalle für C++-Einsteiger verbirgt sich in der Terminologie. So werden in der Regel die unter Delphi geprägten Begriffe verwendet, etwa “Units”. Neben den allseits bekannten, gemeinsam genutzten Bibliotheken (dynamisch mit der Endung ».so«, statisch ».a«) kommen noch “Packages” hinzu, von denen es auch noch Entwurfszeit- und Laufzeitpackages gibt. Packages sind nichts anderes als Bibliotheken, die sowohl in Anwendungen als auch in der IDE einsetzbar sind. Sie sind besonders für alle Entwickler von Interesse, die eigene Komponenten weitergeben möchten. Letztere passen dann bequem in nur ein Package.

Fazit

Abbildung 5: Die neue Objekthierarchie.

Abbildung 5: Die neue Objekthierarchie.

Kylix 3 richtet sich an drei Anwendungsgruppen: Zum einen die Anwender von früheren Kylix-Versionen, sie müssen selbst entscheiden, ob sie immerhin etwa 170 Euro für das Update der Professional- oder etwa 1800 Euro für die Enterprise-Variante ausgeben wollen. Die Gruppe der Crossplattform-Entwickler wird Kylix sicherlich als sehr nützlich empfinden. Bleiben noch die Um- oder Neueinsteiger. Für die Delphi oder Pascal-Kundigen unter ihnen gibt es für Linux zurzeit keine bessere Alternative. Für sie bleibt Kylix ein Rundum-sorglos-Paket – wenn auch ein recht teures. Wer hier die hohen Kosten scheut, sollte sich nach einem der freien Pascal-Compiler umschauen, die aber in der Regel nicht so gut ausgestattet und komfortabel zu bedienen sind.

Auf die
Größe geschaut

Mit Kylix erstellte Programme nutzen die Libc nicht direkt, sondern linken den Kern einer Laufzeitbibliothek direkt ins Programm. Hier die Größe eines einfachen “Hello World”-Programms mit verschiedenen Compilern (die dynamisch gelinkten Bibliotheken stehen in Klammern, ermittelt von »ldd« auf SuSE 7.2).

GCC 2.9.5.3 G++: 14190 Bytes (libstdc++ -libc6.2-2.so.3, libm.so.6, libc.so.6, /lib/ld -linux.so.2)

Kylix C++: 5808 Bytes (libborcrtl.so., libborunwind.so.6.0, libborstl.so, libc.so.6, /lib/ld-linux.so.2)

Kylix Delphi: 29104 Bytes (/lib/libNoVersion.so.1, libpthread.so.0, libdl.so.2, libc .so.6, /lib/ld-linux.so.2)

Borland-Bibliotheken mit »bor« im Namen sind Teil von Kylix.

C++-Builder-Anwender, die mit den Borland-eigenen Anpassungen bereits vertraut sind, können ebenfalls mit Kylix liebäugeln. Alle anderen C++-Programmierer sollten vor dem Kauf erste Gehversuche mit der kostenlosen Open Edition wagen. Für Unternehmen, die in die Software-Entwicklung für Linux einsteigen und schnell Produkte auf den Markt bringen müssen, ist Kylix spätenstens ab Version 3 ein ernsthafter Kandidat als Entwicklungsplattform, ob es hingegen nennenswert in den Bereich der Open-Source-Projekte eindringen wird, bleibt auch weiterhin fraglich.

Die kommerziellen Pakete sind teuer, die freie Kylix-Variante hat einen zu geringen Umfang, um für größere Projekte in Frage zu kommen. Die nur in Ausnahmen gelockerte Closed-Source-Strategie wird zudem vielen Anhängern freier Software sauer aufstoßen. Was bleibt, ist ein komplettes System zur schnellen Entwicklung von Delphi- und C++-Programmen, das aber immer noch Ecken und Kanten hat. (uwo)

Abbildung 6: Der etwas spartanisch geratene Diagrammeditor in Aktion.

Abbildung 6: Der etwas spartanisch geratene Diagrammeditor in Aktion.

Infos

[1] Homepage von Borland: [http://www.borland.de]

[2] Das Projekt FreeCLX auf Sourceforge: [http://sourceforge.net/projects/freeclx/]

[3] Die Indy-Komponenten von Nevrona: [http://www.nevrona.com/indy/]

[4] STLport, eine freie Implementierung der Standard Template Library (STL): [http://www.stlport.org/]

[5] “Entwicklungsfähig – Kylix 1.0: Delphi für Linux”, Linux-Magazin, Ausgabe 5/01: [https://www.linux-magazin.de/Artikel/ausgabe/2001/05/kylix/kylix.html]

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben