Nach einem 12 Jahre währenden Reifeprozess haben die Entwickler der Free-Pascal-IDE Lazarus die stabile Version 1.0 der weitgehend Delphi-kompatiblen Entwicklungsumgebung veröffentlicht.
Bereits 1972 entwarf Niklaus Wirth an der ETH Zürich Pascal, das eigentlich als Lehrsprache zum Erlernen strukturierter Programmierung gedacht war. Seitdem haben Generationen von Programmierern und Ingenieuren ihre ersten Schritte ins Entwicklerleben mit Pascal gemeistert. Nennenswerten kommerziellen Erfolg erlangte es mit den von Borland erstmals für Turbo Pascal 5.5 eingeführten Erweiterungen zur objektorientierten Programmierung (Object Pascal), die den ursprünglichen Sprachstandard stark veränderten.
Nichtsdestotrotz brachten es Borlands Produkte Turbo Pascal sowie dessen Weiterentwicklungen Borland Pascal und Delphi unter Windows zu einer großen Popularität. Noch heute entwickeln vor allem kleinere Firmen Software zum Eigenbedarf der Einfachheit und Schnelligkeit halber in Delphi (das heute allerdings Embarcadero gehört).
Object Pascal dient mittlerweile quasi als Standard-Dialekt und kommt auch in Free Pascal [1] zum Einsatz, das als Grundlage von Lazarus dient. Zwar hat Pascal heute an wirtschaftlicher Bedeutung eingebüßt – Stellenangebote für Pascal-Programmierer werden Sie vergeblich suchen. Dennoch lohnt es sich nach wie vor, das Programmieren anhand von Pascal zu lernen. Auch für Delphi an sich sowie dessen Visual Component Library (VCL) im Besonderen lassen sich aber durchaus ernstzunehmende Argumente finden. Die gelten auch für die Lazarus-IDE [2] samt ihrer VCL-kompatiblen Lazarus Component Library (LCL).
Wiedererweckt
Bei Lazarus handelt es sich wie beim Sprachstandard Free Pascal um Open Source. Sie können mit Lazarus aber trotzdem kommerzielle Programme entwickeln und diese dann vertreiben, denn während die IDE selbst der GPL unterliegt, kommt für die LCL-Klassenbibliothek die LGPL zum Einsatz, sodass man die resultierende Software auch als Closed Source vertreiben kann. Lazarus linkt dazu die LCL statisch an die von Ihnen entwickelte Object Pascal-Anwendung.
Die Kompatibilität von Lazarus und der LCL zu Delphi und der VCL ermöglicht ein ähnlich komfortables visuelles Zusammenklicken von grafischen Oberflächen wie unter Delphi — insbesondere wenn für Sie die Sprache für die eigentliche Programmlogik nur eine untergeordnete Rolle spielt. Ebenfalls für Lazarus spricht, dass sich in der Umgebung mit wenig Aufwand plattformübergreifende Programme schreiben oder vorhandene Delphi-Programme portieren lassen. Lazarus’ Unterstützung der jeweiligen Widget-Bibliotheken bewegt sich auf einem sehr hohen Abstraktionsgrad, außerdem unterstützt die IDE die Datenbanksysteme MySQL, PostgreSQL, dBase/FoxPro, Interbase/Firebird und MS SQL Server.
Der Haupteinsatzzweck von Lazarus dürfte aber neben dem Portieren von Delphi-Projekten darin liegen, vorhandenen Object Pascal-Programmen im Handumdrehen eine schicke Oberfläche überzustülpen. Lazarus unterstützt dazu die Toolkits Qt, GTK+, GTK2, Cocoa/Carbon (Mac OS“X), WinAPI und Windows CE. Außerdem spielt es mit zahlreichen Prozessorarchitekturen zusammen, wozu neben x86 und x86_64 auch PowerPC und ARM zählen. Lazarus läuft nicht nur unter Linux, sondern auch unter FreeBSD, Mac OS X und Windows.
Lazarus blickt seit der Version 0.0.5 aus dem Jahr 2001 auf nunmehr 12 Jahren Entwicklungsgeschichte zurück. Die von uns zuletzt getestete Version 0.9.28 vom März 2011 [3] enthielt noch Free Pascal 2.4.2. Die aktuelle auf Free Pascal 2.6.0 beruhende, symbolträchtige Version 1.0 wurde offiziell am 1. September 2012 auf der “Dutch Pascal Conference 2012” in Utrecht vorgestellt. Übrigens veröffentlicht das Lazarus-Team auch regelmäßig Snapshots der Entwickler-Version [4], aktuell in der Version 1.1.
Download und Installation
Lazarus findet sich zwar im Paketfundus aller gängigen Distributionen, zu Redaktionsschluss jedoch maximal in der Version 0.9.30.4 vom April 2012. Ubuntu 12.04 bringt zum Beispiel die Version 0.9.30.2 mit. Möchten Sie die offizielle Stable-Version 1.0 nutzen, kommen Sie derzeit nicht um das manuelle Herunterladen herum. Die Download-Links der Projektseite [5] verweisen auf die zugehörigen Sourceforge-Server. Das Sourceforge-Verzeichnis enthält separate DEB-Binaries für Free Pascal 2.6.0 und die Lazarus IDE 1.0-0 sowie den Quelltext, den Sie beim Hinzulinken von Packages benötigen (alle auch auf Heft-DVD).
Auch für unser 64-Bit-Testsystem unter Kubuntu finden sich passende Binärpakete [6]. Das Installieren der Free-Pascal- und Lazarus-Pakete funktioniert unter Kubuntu 12.04 problemlos via Kontextmenü mit Apper, Synaptic oder dem Ubuntu Software Center (Abbildung 1). Es gilt allerdings die korrekte Reihenfolge zu beachten: Sie müssen zuerst das Paket fp-src_2.6.0-120824_amd64.deb einrichten, danach erst lazarus_1.0-0_amd64.deb.

Abbildung 1: Aktuelle DEB-Pakete von Lazarus 1.0 lassen wie hier unter Kubuntu über das Paketmanagent einspielen.
Eine detaillierte Installationsbeschreibung, die auch viele Spezial- und Sonderfälle berücksichtigt, finden Sie im Free-Pascal-Wiki [7]. Ergänzend bietet das Lazarus-Wiki eine vollständige Dokumentation [8] sowie eine sehr umfangreiche FAQ [9].
Lazarus-Packages
Wie Delphi kennt auch Lazarus ein Package-System, das vorrangig zum Teilen von Code zwischen Projekten gedacht und geeignet ist. Im Unterschied zu Delphi beschränken sich Lazarus-Packages nicht auf Bibliotheken. Bei Delphi handelt es sich bei Packages stets um spezielle Bibliotheken, welche die IDE selbst oder die zu erstellende Anwendung benötigt. Delphi-Packages benötigen “In-Compiler”-Unterstützung, was Free Pascal gegenwärtig nicht beherrscht.
Ein Lazarus-Package dagegen besteht aus einer Sammlung von Units und anderen Komponenten, nebst den zugehörigen Informationen darüber, wie es diese zu kompilieren gilt und wie sie sich entweder von anderen Projekten, der IDE selbst oder von anderen Packages nutzen lassen. Da Lazarus nur statische Packages unterstützt, müssen Sie die IDE beim Verwenden von Packages jedes Mal neu übersetzen. Sämtliche Funktionen zum Umgang mit Packages inklusive des Tools Package-Graph finden Sie im gleichnamigen Eintrag des Hauptmenüs (Abbildung 2).
Neues in Lazarus 1.0
Die Lazarus Component Library LCL agiert weitgehend kompatibel mit der VCL für Delphi 6 und unterstützt neben den Toolkits für Microsoft Windows auch GTK/GTK+, Qt 4.5 (Linux), sowie Cocoa oder Carbon für Mac OS X. Lazarus 1.0 ist die erste Version der IDE, mit der Sie auch Anwendungen für Android entwickeln können: Die neuen Units customdrawncontrols.pas, customdrawndrawers.pas, customdrawn_common.pas, customdrawn_android.pas und customdrawn_winxp.pas für “Lazarus Custom Draw Controls” helfen jetzt auch beim Erstellen von Android-Benutzeroberflächen.
Andere neue Units wie etwa azdeviceapis.pas erlauben es beispielsweise, mit Lazarus 1.0 die Android-APIs für das GPS oder für Beschleunigungssensoren zu nutzen. Mit der ebenfalls hinzugekommenen Unit lazdialogs.pas erstellen und verwenden Sie Basisdialoge wie Öffnen oder Speichern ganz ohne native Grafikbibliotheken unabhängig vom Betriebssystem.
Die Lazarus-Entwickler haben auch die IDE selbst überarbeitet: Sie besitzt jetzt unter anderem Optionen zum Bereinigen von Build- und Runtime-Dateien (Abbildung 3). Darüber wurde auch der Debugger erweitert, der jetzt CPU-Register in einem neuen Format anzeigt. Der Disassemblierer enthält nun neue Haltepunkte, die selbst weitere Haltepunkte aktivieren oder deaktivieren können. Eine detaillierte Liste sämtlicher Neuerungen [10] finden Sie im Lazarus-Wiki.

Abbildung 3: Lazarus 1.0 bringt neben neuen Klassenbibliotheken für Android vor allem neue Compiler- und Debugger-Funktionen mit.
Erste Schritte
Wer die alte Borland-IDE kennt, fühlt sich in Lazarus sofort heimisch, denn dort sieht alles so aus wie in Delphi. Beim ersten Start flutet Lazarus den Bildschirm mit einer Vielzahl von Fenstern: Neben dem Hauptfenster der IDE selbst bekommen Sie es auf jeden Fall mit dem Objektinspektor, dem Quelltexteditor, einem visuellen Editor (Formular) sowie einem Nachrichtenfenster zu tun (Abbildung 4).
Verlieren Sie im Fenster-Wust die Übersicht, listet der Hauptmenü-Eintrag Fenster sämtliche geöffnete Fenster auf und bietet eine schnelle Möglichkeit, zum gewünschten zu wechseln. Das Hauptfenster der IDE, die Lazarus-Konsole (Abbildung 5), enthält neben der Hautpmenüleiste mit sämtlichen verfügbaren Funktionen auch mehrere verschiebbare Symbolleisten zum schnelleren Erreichen der wichtigsten Funktionen, wie Öffnen, Speichern, Neue Formulare erstellen oder Übersetzen (grünes Dreieck).
Der Quelltexteditor lässt sich wie jede andere Lazarus-Komponente im Menü Werkzeuge | Einstellungen im Bereich Editor weitgehend den eigenen Bedürfnissen anpassen. Das betrifft nicht nur Farben und Schriften für die syntaxgesteuerte Einfärbung des Codes, sondern vor allem auch die sogenannte Code-Faltung. Hier passen Sie das entsprechende Verhalten des Editors nicht nur für Object Pascal ganz spezifisch Ihren Vorstellungen an, sondern auch für HTML oder XML (Abbildung 6).

Abbildung 6: Das Verhalten des Lazarus-Editors lässt sich weitgehend den eigenen Vorstellungen anpassen.
Möchten Sie den Übersetzungsvorgang weiter beeinflussen, finden Sie alle dazu notwendigen Compiler- und Debugger-Funktionen im Menü Start. Hier geben Sie dem Compiler über die gleichnamigen Menüpunkten beispielsweise Startparameter mit, setzen Haltepunkte für Quelltext, Adressen oder Daten, nutzen den Debugger oder kompilieren schrittweise. Fehlermeldungen zeigt Lazarus im Nachrichtenfenster, ein Mausklick auf die Fehlermeldung fördert dank des integrierten Debuggers das problematischen Codefragment direkt im Quelltexteditor zutage (Abbildung 7).

Abbildung 7: Der Debugger zeigt bei einem Klick auf die Fehlermeldung das betreffende Codefragment im Quelltexteditor.
Schlussendlich enthält die Lazarus-Konsole die eigentliche Komponentenpalette, die sich in mehrere Reiter mit sämtlichen in der LCL verfügbaren Komponenten unterteilt (Abbildung 8). Darüber hinaus dürfen Sie auch eigene Komponenten oder solche von Drittanbietern installieren. Lazarus stellt die Komponentenpalette über den gleichnamigen Menüpunkt unter Ansicht wahlweise auch als Fenster zur Verfügung.
Visuell entwickeln
Wie Delphi fungiert Lazarus in erster Linie als visuelle Entwicklungsumgebung (Abbildung 9). Sie gestalten darin die grafische Oberfläche des Free-Pascal-Programms interaktiv, wobei Lazarus im Hintergrund automatisch den zugehörigen Quellcode im Editor generiert, den Sie am Ende nur noch durch die eigentliche Programmlogik ergänzen. Klicken Sie beispielsweise doppelt auf ein das GUI-Element Haupt-Menü im Reiter Standard der Komponentenbibliothek, so erscheint das Objekt sofort im Formular, wo Sie es mit den Anfassern beliebig positionieren. Die zugehörigen Objekteigenschaften bearbeiten Sie im Objektinspektor, wobei Lazarus automatisch das zugehörige Codefragment im Quelltexteditor gelb markiert.

Abbildung 9: Die Arbeit mit Objektinspektor, Formular und Quelltexteditor gestaltet sich komfortabel.
Die allgemeine Vorgehensweise bei der Arbeit mit der Lazarus-IDE sieht so aus: Sie wählen aus der Komponentenpalette jeweils die gewünschte Komponente per Doppelklick aus und platzieren sie damit im Formular. Jedes Formular ist stets mit einer Cope-Einheit (Unit) verknüpft. Anders herum gilt das selbstverständlich nicht, denn nicht bei jeder Unit handelt es sich um eine visuelle Komponente. Selbstverständlich bewältigt die Projektverwaltung in Lazarus auch komplexe Projekte, wozu der Projektinspektor (Abbildung 10) im Menü Projekt wertvolle Dienste liefert.
Wählen Sie eine beliebige Komponente aus, zeigt Lazarus deren Eigenschaften sofort im Objektinspektor an, wo Sie die gewünschte Eigenschaft wunschgemäß anpassen. Der Objektinspektor umfasst die zwei Reiter Eigenschaften und Ereignisse, wobei ersterer zwei Spalten besitzt: Die linke zeigt den Namen der gewählten Eigenschaft, die rechte den zugehörigen Wert. Handelt es sich dabei um einfache Werte wie Zahlen oder Texte, können Sie diese direkt verändern. Bei komplizierteren Eigenschaften bietet der Objektinspektor ein aufklappbares Untermenü oder den Eigenschaftseditor an. Letzteren rufen Sie mithilfe des Knopfes rechts neben dem Inhalt der jeweiligen Eigenschaft auf. Gibt es keinen solchen Knopf, existiert auch kein Eigenschaftseditor für die gewählte Eigenschaft.
Codebrowser und Code-Explorer
Lazarus bietet darüber hinaus zahlreiche Möglichkeiten zum Navigieren im Code. Neben einer Volltextsuche und der Möglichkeit, den Quelltext im Editor anhand regulärer Ausdrücke zu durchsuchen, bietet Lazarus im Menü Ansicht einen leistungsfähigen Codebrowser, der beispielsweise die Namen von Units und Packages beziehungsweise Bezeichnern nach dem eingegebene Begriff durchsucht (Abbildung 11).

Abbildung 11: Mit dem Codebrowser durchsuchen Sie Ihr Projekt nach Units, Packages oder Bezeichnern.
Ein Doppelklick auf die Fundstelle im Codebrowser bringt Sie direkt zum betreffenden Codefragment im Quelltexteditor. Das funktioniert nicht nur für die gerade erstellte Unit, sondern in der kompletten IDE, also auch in der LCL und sämtliche externen Units und Packages. Den zu untersuchenden Bereich grenzen Sie im gleichnamigen Listenauswahlfeld vorab ein.
Der Code-Explorer aus dem Menü Ansicht zeigt jede Pascal-Datei in Form von zwei Bäumen auf den Reitern Code und Anweisungen an. Im Reiter Code sehen Sie die Typen, Variablen, Konstanten, Klassen etc., während der Reiter Anweisungen die Struktur der Compiler-Direktiven aufführt. Mit einem Doppelklick auf den gewünschten Knoten springen Sie dann zur entsprechenden Position im Quelltext. Darüber hinaus finden Sie im Hauptmenüeintrag Suchen viele leistungsfähige Suchfunktionen.
Die LCL
Das A und O der Programmentwicklung mit Lazarus ist neben dem Free-Pascal-Compiler selbst die Lazarus Component Library LCL. Platzieren Sie in der Lazarus-IDE eine beliebige Komponente aus der Komponentenpalette im Formular, so entstammt die von der IDE erstellte, zum Objekt gehörige Klasse der LCL.
Bei der LCL handelt es sich in erster Linie um eine ganz gewöhnliche Object-Pascal-Klassenbibliothek, daher lässt sie sich auch außerhalb von Lazarus nutzen. Die LCL zeichnet die jeweiligen Elemente nicht selbst auf dem Bildschirm, sondern greift dabei auf Systembibliotheken zurück, wie GTK/GTK+, Qt, Carbon/Cocoa, WinCE oder Win32, was der Projektinspektor bei einem Klick auf die LCL anschaulich im Klassenbrowser zeigt.
Da die LCL auch mit den Systembibliotheken von Windows oder Mac OS X zusammenspielt, können Sie mit Lazarus auf sehr einfache Weise plattformübergreifende Programme schreiben. Sie müssen den Quellcode lediglich auf dem Zielsystem neu übersetzen, was sehr gut funktioniert, denn auch die Lazarus IDE selbst wurde komplett in Free Pascal geschrieben und mithilfe der LCL kompiliert.
Beispiele von interessanten Projekten, die unter Lazarus beziehungsweise mithilfe der LCL entwickelt wurden, finden Sie im Lazarus-Wiki [11], nützliche Codebeispiele im Free-Pascal-Wiki [12] zu finden. Daneben bringt auch Lazarus selbst im Verzeichnis /usr/share/lazarus/1.0/examples eine Reihe von Codebeispielen mit, die sich auch über das Menü Werkzeuge | Beispielprojekte erreichen lassen.
Da die in Lazarus 1.0 enthalte LCL wie bereits erwähnt weitgehend mit der VCL für Windows in Delphi 6 kompatibel ist, bietet das Menü Werkzeuge unter anderem Funktionen zum Umwandeln von Delphi-Projekten, Units oder Packages in Solche für Lazarus.
Fazit
Dass Lazarus kein Projekt von gestern ist, zeigt sich an der seit über 12 Jahren kontinuierlich voranschreitenden Weiterentwicklung und insbesondere den aktuellen Neuerungen in Lazarus 1.0. Mit keiner anderen IDE entwerfen erfahrene Entwickler unter Linux so schnell und einfach leistungsfähige GUI-Applikationen für Qt, GTK, Windows, Mac OS X und sogar Android.
Aufgrund der hohen Kompatibilität zu Borland Delphi bietet sich der Einsatz von Lazarus vorrangig für erfahrene Delphi-Entwickler an. Die finden sich trotz der etwas überladenen Oberfläche nach kurzer Eingewöhnung in der IDE schnell zurecht. Aber auch Programmier-Anfänger finden in Lazarus einen guten Einstieg: Keine Sprache eignet sich so gut zum Erlernen strukturierter Programmierung wie Pascal, und wer es erst einmal beherrscht, dem fällt das Erweitern seines Horizonts auf andere Sprachen relativ leicht.
Infos
[1] Free Pascal: http://freepascal.org
[2] Lazarus: http://www.lazarus.freepascal.org
[3] Test Lazarus 0.9.28: Tim Schürmann, “Oberflächlich”, LU 08/2011, S. 38, https://www.linux-community.de/22930
[4] Lazarus-Entwicklerversion: http://michael-ep3.physik.uni-halle.de/Lazarus
[5] Lazarus herunterladen: http://sourceforge.net/projects/lazarus/files/
[6] Lazarus-DEB-Pakete (64 Bit): http://sourceforge.net/projects/lazarus/files/Lazarus%20Linux%20amd64%20DEB/Lazarus%201.0/
[7] Installationsanleitung: http://wiki.freepascal.org/Installing_Lazarus/de
[8] Lazarus-Dokumentation: http://wiki.lazarus.freepascal.org/Lazarus_Documentation
[9] Lazarus-FAQ: http://wiki.lazarus.freepascal.org/Lazarus_Faq
[10] Neues in Lazarus 1.0: http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
[11] Mit Lazarus realisierte Projekte: http://wiki.lazarus.freepascal.org/Projects_using_Lazarus/de
[12] Code-Beispiele: http://wiki.freepascal.org/Code_Examples#RTL.2C_FLC_and_LCL_Usage_examples









