Sie können Ihre Datenbank kompilieren, d.h. alle Methoden in Maschinensprache übersetzen. Durch Kompilieren der Datenbank überprüfen Sie die Konsistenz des Code und beschleunigen seine Ausführung. Außerdem können Sie den Code insgesamt schützen. Kompilieren ist ein unumgänglicher Schritt zwischen der Entwicklung von Datenbanken mit 4D und deren Einsatz als eigenständige Anwendung (stand-alone).
Das Kompilieren ist vollkommen automatisch; es erfordert jedoch mehr Striktheit beim Schreiben von 4D Code. Das Kapitel Compiler des Handbuchs 4D Programmiersprache enthält Empfehlungen und spezifische Informationen zum Programmieren im Hinblick auf Kompilieren. Der Compiler dient auch dazu, jegliche Programmierfehler anzuzeigen und in ihren Kontext zu setzen.
Auf einem Computer werden Befehle nur unter Verwendung von „0“ und „1“ geschrieben. Diese binäre Sprache heißt Maschinensprache. Das Herz der Maschine, der Mikroprozessor, versteht nur diese Sprache. Ein Programm, das mit einer komplexen Computersprache geschrieben wird, z.B. C, C++, SQL, Java wird zuerst in Maschinensprache übersetzt, so dass es für den Mikroprozessor des Rechners verständlich wird.
Dafür gibt es zwei Möglichkeiten:
Die Anweisungen werden während der Ausführung übersetzt; das bedeutet, das Programm wird interpretiert
Die Anweisungen werden vor Ausführung des Programms als Ganzes übersetzt, das bedeutet, das Programm wird kompiliert
Wird eine Reihe von Anweisungen über einen Interpreter ausgeführt, passiert folgendes:
Das Programm liest die Anweisung in der zum Programm gehörenden Sprache
Es übersetzt die Anweisung in Maschinensprache
Es führt die Anweisung aus
Dieser Ablauf wird für jede Anweisung im Programm durchgeführt. Das Programm, welches diesen Ablauf steuert, heißt Interpreter. Für eine Datenbank in der Entwicklungsphase werden 4D Methoden interpretiert.
Ein kompiliertes Programm wird vor der Ausführung als Ganzes übersetzt. Das Ergebnis ist eine neue Datei mit einer Reihe von Anweisungen in Maschinensprache. Dieser Satz wird für wiederholten Gebrauch gesichert – Die Übersetzung wird nur einmal durchgeführt, die kompilierte Version des Programms steht für eine erneute Ausführung zur Verfügung.
Diese Phase ist vollkommen unabhängig von jeglicher Verwendung des Programms. Das Programm, das die Übersetzung durchführt, heißt Compiler.
Der Compiler in 4D kompiliert die Datenbankmethoden, Projektmethoden, Trigger, Formularmethoden und Objektmethoden in Ihrer Datenbank. Haben Sie keines dieser Elemente in einer Anwendung, hat der Compiler nichts zum Kompilieren.
Bei erfolgreich abgeschlossener Kompilierung ist die Verwendung der kompilierten Datenbank identisch zur Originaldatenbank.
Die gesteigerte Geschwindigkeit beruht auf zwei Merkmalen des kompilierten Code: Direkte Übersetzung des Code, auf einmal und komplett, sowie direkter Zugriff auf die Adressen von Variablen und Methoden.
Direkte und endgültige Übersetzung des Code Der Code der in 4D geschriebenen Methoden wird über den Compiler auf einmal und für alle übersetzt. Die Zeit, die im interpretierten Modus zum Übersetzen aller Anweisungen erforderlich ist, wird eingespart, wenn Sie mit einer kompilierten Datenbank arbeiten. Nehmen wir z.B. eine Schleife mit einer Folge von Anweisungen, die 50 mal wiederholt wird:
For($i;1;50) `Folge von Anweisungen End for
In einer interpretierten Datenbank wird jede Anweisung in der Folge 50 mal übersetzt. Der Compiler eliminiert die Übersetzungsphase für jede Anweisung. Sie sparen also für jede Anweisung in der Folge 50 Übersetzungen.
Direkter Zugriff auf die Variablen- und Methodenadressen In interpretierten Datenbanken wird auf Variablen über ihren Namen zugegriffen. Deshalb muss 4D auf den Namen zugreifen, um den Wert der Variablen zu erhalten. Im kompilierten Modus weist der Compiler jeder Variablen eine Adresse zu, schreibt diese Adresse direkt in den Code und geht – wenn erforderlich – direkt zu dieser Adresse. Hinweise: - Das betrifft nicht Operationen, die auf die Festplatte zugreifen müssen, da ihre Ausführungsgeschwindigkeit durch die Übertragungsrate zwischen Rechner und Peripherie (Treiber oder Festplatte) bestimmt wird. - Kommentare werden nicht übersetzt, sie erscheinen also nicht im kompilierten Code. Folglich beeinträchtigen Kommentare nicht die Ausführungszeit im kompilierten Modus.
Der Compiler dient auch als Syntax-Prüfer für Ihre Datenbanken. Er überprüft automatisch Ihren Code und bemerkt eventuelle Zweideutigkeiten. 4D erkennt das dagegen nur beim Ausführen der Methode.
Nehmen wir an, eine Ihrer Methoden enthält eine Reihe von Tests und eine Folge von auszuführenden Anweisungen. Bei einer hohen Anzahl von Tests ist eher unwahrscheinlich, dass Sie alle Fälle vollständig durchtesten. Es kann also passieren, dass ein Syntaxfehler in einem nicht getesteten Fall erst auftritt, wenn der Endbenutzer darauf stößt.
Probleme dieser Art werden vermieden, wenn Sie eine kompilierte Datenbank einsetzen. Beim Kompilieren einer Datenbank durchleuchtet der Compiler die gesamte Datenbank und analysiert jede Anweisung. Er findet jede Abweichung von der Normalität und erzeugt eine Fehlermeldung bzw. Warnung.
st Ihre Datenbank kompiliert, können Sie den interpretierten Code über den „Applikation Builder“ löschen. In diesem Fall ist der Zugriff auf die Designumgebung mit Ausnahme der Datensätze blockiert. Weitere Informationen zum Erstellen der Anwendung finden Sie im Kapitel Eigenständige Anwendung erstellen und weitergeben.
In einer kompilierten Datenbank sind die Befehle zum Entwickeln deaktiviert.
Ist in der Host Datenbank eine kompilierte Komponente installiert, sind die gemeinsam genutzten Projektmethoden im Explorer verfügbar und lassen sich in Mehtoden der Host Datenbank aufrufen. Ihr Inhalt erscheint jedoch weder in der Vorschau noch im Debugger. Andere Projektmethoden der Komponente erscheinen nie. Weitere Informationen zu Komponenten finden Sie im Kapitel 4D Komponenten entwickeln und installieren.
Die Vorteile sind:
Die Struktur der Datenbank lässt sich nicht verändern, weder absichtlich noch aus Versehen
In 4D ist ein Compiler integriert. Das Kompilieren der Datenbank wird über folgendes Dialogfenster ausgeführt:
Sie können das Kompilieren auch direkt starten. Wählen Sie dazu im Menü Design oder in der Werkzeugleiste im DropDown-Menü zum Icon Compiler den Befehl Kompilierung starten bzw. Kompilieren.
Die allgemeinen Optionen zum Kompilieren werden in den Datenbank-Eigenschaften auf der DOM Append XML child node definiert.
Auch bei kompilierter Datenbank können Sie jederzeit zwischen interpretiertem und kompiliertem Modus wechseln. Sie müssen das Programm nicht verlassen. Dazu rufen Sie in 4D im Menü Start>Neustart kompiliert bzw. interpretiert auf — außer der interpretierte Code wurde entfernt (siehe voriger Abschnitt).
Sie können auch beim Starten der Datenbank im Öffnen-Dialog zwischen kompiliertem und interpretiertem Modus wählen. Weitere Informationen dazu finden Sie im Abschnitt .
Ändern Sie die Struktur Ihrer Datenbank im interpretierten Modus, müssen Sie erneut kompilieren, damit die Änderungen berücksichtigt werden.
Wechseln Sie den Modus, schließt 4D den aktuellen Modus und öffnet den neuen, d.h. die Anwendung wird geschlossen und wieder geöffnet. Folglich werden - sofern angegeben - nacheinander die beiden Datenbankmethoden aufgerufen: Datenbankmethode On Exit -> Datenbankmethode On Startup