© Ozz Design/Shutterstock.com
Teil 1: Dynamische Webseiten mit PHP und Kotlin

Mehr als eine Java-Alternative


Eine neue Programmiersprache schickt sich an, die Herzen der Entwickler zu erobern. Die statisch typisierte Sprache Kotlin, ursprünglich als Alternative für die Java-Welt gedacht, hat mittlerweile dazugelernt und kann auch bei der Entwicklung dynamischer Webseiten gute Dienste leisten.

Dynamische Webseiten stellen den Entwickler vor grundlegende Entscheidungen: Findet die Logik einer Webseite ausschließlich auf dem Server statt oder sollen auch auf dem Client, also dem Browser des Anwenders, Teile der Daten und der Logik verarbeitet werden? Ein Vorteil dieses Prinzips ist die Verringerung der Last auf dem Server, da die Seiten nicht vollständig via Server-Round-Trip erzeugt werden müssen. Das GUI auf dem Client kann hier effizient Anfragen an den Server verwalten und bedarfsgerecht einzelne Teile einer Webseite dynamisch laden.

Zugegeben, ganz neu ist dieses Szenario nicht, schließlich bietet PHP mit Ajax seit Langem genau diese Möglichkeiten, wobei die Programmierung des Clients bislang in dem dann doch etwas sperrigen JavaScript erfolgen musste. Alternativ dazu gibt es Sprachen wie zum Beispiel TypeScript, die es dem Programmierer erlauben, die Eigenarten und Beschränkungen von JavaScript zu umgehen. Hier gesellt sich Kotlin auch nur als eine weitere Programmiersprache in die Reihe der JavaScript-Derivate. Als universelle Programmiersprache ist es mit Kotlin allerdings auch möglich, lauffähige Programme für ganz unterschiedliche Plattformen zu erzeugen. Das Ziel einer Übersetzung kann die Java VM, JavaScript und seit Neuestem auch nativer Code sein, der ohne bestimmte Laufzeitumgebung direkt in der CPU ausgeführt wird. Für uns Webentwickler besonders spannend ist die Möglichkeit, dass Kotlin in Zukunft als Target wohl auch den kommenden Standard WebAssembly, kurz wasm, unterstützen wird.

Wird mit wasm alles besser?

An der Entwicklung von wasm sind alle großen Player wie Apple, Google, Microsoft und Mozilla beteiligt. Das Ziel ist es, auf dem Browser eine schnelle VM zu implementieren, die binären Bytecode in annähernd nativer CPU-Geschwindigkeit ausführt, wovon besonders auch Spiele im Browser enorm profitieren dürften. Dabei können auch die Vorteile der darunter liegenden Hardware wie Multi-Core-Prozessoren und 3-D-Grafik voll genutzt werden. wasm abstrahiert die Hardware weitestgehend und erlaubt dem Programmierer via vertrautem DOM-API den Zugriff darauf. Alle aktuellen Versionen der Webbrowser Chrome, Edge, Firefox und Safari haben wasm bereits integriert, wobei die Nutzung noch als experimentell gekennzeichnet ist und gegebenenfalls in den Browsereinstellungen aktiviert werden muss. Abgesehen davon sind wasm-Programme noch rar gesät.

Programme, die in Kotlin geschrieben sind, können zu wasm kompiliert und dann direkt im Browser ausgeführt werden. Allerdings muss an dieser Stelle angemerkt sein, dass die Kotlin-Unterstützung für wasm sich noch in einer recht frühen Phase befindet und das API, also der Zugriff aufs DOM im Browser, noch Lücken aufweist. Jeder experimentierfreudige Entwickler ist aber gerne aufgefordert, sich intensiver mit der Materie zu beschäftigen.

Kotlin statt JavaScript

Bis es soweit ist und wasm sich als Standard in der Entwicklergemeinde abseits der großen Softwarehersteller etabliert hat, kann Kotlin aber heute schon von jedem sinnvoll zur Webentwicklung eingesetzt werden. Dabei wird ein spezieller Compiler, oder besser gesagt Transpiler, der in Kotlin geschriebene Programme nach JavaScript übersetzt, benutzt. Dabei können die Vorteile der statischen Typisierung und viel „syntaktischer Zucker“ von Kotlin eingesetzt werden, um im Browser zeitgemäße objektorientierte Clients zu programmieren.

Das hier behandelte Beispiel ist eine sehr simple Webseite, die einen Auszug einer SQL-Datenbank als Tabelle im Browser anzeigt. Mittels zweier unterschiedlicher Eingabeelemente, einer Drop-down-Liste sowie eines Eingabefelds, kann ein Land ausgewählt werden. Die Tabelle zeigt dann eine Liste aller Adressen, die in dem gewählten Land gefunden wurden. Soweit keine große Sache – es geht ja schließlich um die Darstellung der zugrunde liegenden Prinzipien:

  • Erstellen von HTML-Inhalten mit PHP-Komponenten auf dem Server

  • Logik im Client zur Aktion auf Benutzereingaben sowie dynamisches Laden von Inhalten vom Server

Dabei entspricht die Mini-App im Wesentlichen dem Bekannten MVC-Entwurfsmuster. Dem Model entsprechen die Daten in der SQL-Tabelle, der View logischerweise das HTML im Browser und als Controller fungiert der in Kotlin geschriebene Clientcode, der ebenfalls im Browser läuft. Der Webserver liefert via PHP initial die Seite an den Client, der im weiteren Verlauf vom Server dynamisch Inhalte abruft. Die Anforderungen für unser Beispiel sind gering. Sie benötigen einen laufenden Server mit PHP 7 sowie einen MySQL/MariaDB-Server. Die Daten im Beispiel stammen aus der MySQL Sample Database „classicmodels“ (Download unter [1]). Mit entsprechenden Anpassungen im Quellcode können Sie natürlich auch eine eigene bestehende Datenbank verwenden. Um die App hübsch zu gestalten und auch eine automatische Skalierung des GUI an unterschiedliche Endgeräte zu erhalten, bindet das vollständige Beispiel das bekannte Bootstrap-GUI-Framework dynamisch via URL ein.

Auf jeden Fall benötigt wird der Kotlin-Compiler, der auf dem Rechner eine Java VM voraussetzt. Java als JRE oder besser JDK in Version 1.8.x 64 Bit sollten auf dem Rechner installiert sein. Im Tutorialbereich der Kotlin-Webseite [2] finden Sie einen Hinweis auf die aktuelle Kotlin-Compiler-Version sowie einen Link zu GitHub, unter dem der Kommandozeilencompiler als ZIP heruntergeladen werden kann. Das ZIP enthält den Ordner kotlinc mit allen Bibliotheken und Binaries. Entpacken Sie diesen Ordner vorzugsweise in ein gut erreichbares Verzeichnis auf der Festplatte. Ich benutze dazu zum Beispiel den Pfad C:\Develop\kotlinc\. Um die Funktion des Compilers zu überprüfen, öffnen Sie eine Konsole und navigieren zum bin-Verzeichnis. Der für uns relevante Kotlin-to-JS-Compiler wird mittels kotlinc-js.bat gestartet. Tippen Sie nun in der Eingabeaufforderung: kotlinc-js.bat -version und bestätigen die Eingabe mit ENTER. Der Schalter -h zeigt eine Übersicht aller Optionen (Abb. 1) des Compilers.

schroeter_phpserver_1.tif_fmt1.jpgAbb. 1: Versionen und Optionen des Compilers

Alle aus Kotlin erzeugten JavaScript-Module benötigen zur Ausführung z...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang