PlattformĂĽbergreifende App-Programmierung mit Delphi und Xamarin

Seite 3: Delphi

Inhaltsverzeichnis

Wollte man mit Xamarin für mehr als eine Plattform entwickeln, war das Programm bis Sommer 2014 in drei Teilprojekte aufzuteilen sowie eine strikte Unterteilung in Geschäftslogik und UI vornehmen. Erste ließ sich von beiden UI-Teilprojekten gemeinsam nutzen, die Benutzeroberflächen hingegen musste man getrennt für jede Plattform entwerfen und ausprogrammieren. Danach konnten Entwickler zwei Build-Ziele definieren, die es erlaubten, daraus zwei getrennte Anwendungen für Android und iOS zu bauen.

Durch striktes Einhalten des MVC-Paradigmas (Model View Controller) sowie unter Verwendung von ein paar Tricks und bedingter Kompilierung konnten Programmierer zwar auch noch einiges an Code für die UI gemeinsam benutzen, jedoch ein gewisser Anteil an gerätebezogenem Code blieb nicht aus. Jedoch war der Aufwand entsprechend hoch, und bei jedem Bug und Update der Bedienoberfläche mussten sie das sowohl bei der iOS- als auch bei der Android-Version getrennt vornehmen. Der große Vorteil dabei war, dass sie die gemeinsamen Teile für eine Windows-Phone-Version benutzen konnten, indem sie hier "nur" noch eine weitere UI hinzufügen mussten.

Ein zweiter Vorteil gegenüber der unten beschriebenen neuen Methode ist, dass man damit mit den UI-Richtlinien konforme und dem Look & Feel der jeweiligen Plattform entsprechende Apps erhält. Zuletzt konnten sich Entwickler hier auch auf die grafischen Editoren für das Oberflächen-Layout stützen. Es ist zwar zu erwarten, dass es in absehbarer Zeit auf für das nachfolgend beschriebene Forms-Framework einen grafischen UI-Editor geben wird, allerdings muss man derzeit ohne auskommen.

Zusammen mit der Version 5.0 von Xamarin Studio brachte der Hersteller eine weitere wichtige Neuerung heraus: Xamarin Forms. Dabei handelt es sich um eine neu entwickelte Bibliothek, die das Entwickeln für die drei wichtigsten mobilen Plattformen, also auch Windows Phone, mit derselben Code-Basis ermöglicht.

Xamarin Forms lehnt sich dabei relativ weit an das Modell von Windows Presentation Foundation (WPF) an. Wie dort kann man die UI sowohl programmatisch als auch über eine XAML-Datei beschreiben. XAML (eXtendible Application Markup Language) ist eine von Microsoft zusammen mit WPF eingeführte XML-basierte Beschreibungssprache, die der Definition von Benutzeroberflächen dient. Aus Lizenzgründen hat aber Xamarin nicht die Microsoft-Bezeichnungen für die Steuerelemente und andere UI-Bestandteile übernommen, sondern eine eigene Systematik eingeführt. Jedoch ist es nicht sonderlich schwer, eine Bildschirmmaske in die andere zu konvertieren. Es wäre nicht undenkbar, dass es in Kürze automatische Konvertierprogramme gibt, zumal noch kein Editor für die Xamarin-Variante vorhanden ist, die Microsoft-Version sich hingegen sowohl mit dem Visual-Studio- als auch dem Blend-Designer editieren lässt. Für ein relativ neues Framework weist Forms erstaunlich wenig Fehler und Probleme auf.

Xamarin-IDE: Forms-Editor

Möchten Entwickler innerhalb des Forms-Framework OS-spezifischen Code integrieren, können sie es wahlweise über spezielle Anweisung innerhalb des XAML-Codes, bedingte Kompilierung oder über eigene gerätespezifische Klassenimplementierungen durchführen.

Forms-Applikation im Android-Emulator

Delphi ist wesentlich älter als C# und hat eine bewegte Geschichte beginnend mit Turbo-Pascal hinter sich. Aber überraschenderweise gibt es auch einige Gemeinsamkeiten, teils an Stellen, an denen man es nicht vermutet hätte, etwa den gemeinsamen Schöpfer, Anders Hejlsberg.

Durch die Integration von Fremdprodukten wurde der Bereich der Umgebungen, in denen die von Delphi erzeugten Programme laufen, zunehmend ausgedehnt. So war, nachdem sich die Umgebung früh für die Entwicklung mit C++ eignete, durch den Prism-Compiler die Programmierung von Applikationen für .NET möglich. Innerhalb der letzten zwei Jahre ist dann die Unterstützung für OS X und iOS sowie für Android hinzugekommen.

Um eine plattformunabhängige Entwicklung zu ermöglichen, führte Embarcadero bei Delphi XE2 ein neues Framework mit dem Namen FireMonkey ein, das die zuvor eingesetzte VCL (Visual Component Library) ersetzte. Es unterstützt zum heutigen Zeitpunkt die Programmierung für Windows, Mac OS X, iOS und Android.

Delphi-IDE: Programmeditor

Delphi-IDE: Designer

FireMonkey steht ein erweiterter Dialog-Editor zur Seite, der je nach gewählter Gerätekategorie (Desktop/Mobil) unterschiedliche Layouts erzeugt. Die Entwicklung verläuft wie von VCL-Projekten bekannt. Alte "Delphi-Hasen" merken vermutlich gar nicht, dass das zugrunde liegende Framework geändert wurde.

Automatisches Einfügen von Klassenvariablen, die im Code stellvertretend für UI-Elemente stehen, Stubs für Eventhandler, sobald ein Doppelklick im Eigenschaften-Bereich erfolgt ist, Unterstützung durch Code Completion und eine gute Online-Hilfe erleichtern und beschleunigen die Entwicklung um einiges. Einen Vorteil bietet hierbei die Möglichkeit, mit einer Codebasis Applikationen zu entwickeln, die sich nicht nur auf mobilen Devices ausführen lassen, sondern nach einer neuen Kompilierung auch auf Windows und OS X. Lediglich die Layouts für die jeweilige Plattform können Entwickler individuell anpassen.

Dazu gesellt sich die Möglichkeit, mit FireDAC auf eine große Anzahl von Datenbanken zuzugreifen. Dabei handelt es sich um eine geräte- und datenbankunabhängige Datenbankabstraktionsschicht und somit den Nachfolger der in die Jahre gekommenen und seit langem nicht mehr weiterentwickelten BDE und des ungeliebten dbExpress. Sie erlaubt auch auf mobilen Geräten eine einfache Entwicklung von Datenbank-Anwendungen. Durch eine einfache Konfiguration können Entwickler ohne Codeänderung die aktuelle Datenbank gegen eine andere auswechseln. FireDAC gibt es auch für iOS und Android. Neben dem dort üblichem SQLite kann man die mitgelieferte und wesentlich bessere IBLite verwenden, eine für mobile Geräte angepasste Version der Interbase-Datenbank.

Darüber hinaus wird die Entwicklung mobiler Anwendung durch die mitgelieferte Middleware, Enterprise Mobility Services, erleichtert. Damit lassen sich sich mit wenig Aufwand komplexe Schnittstellen zwischen mobilen Anwendungen und Backends kreieren. Des Weiteren unterstützt das Framework die Backends as Service (BaaS) von Kinvey, Parse und App42. Diese Plattformen sind im Kommen und ermöglichen zum Beispiel selbstständigen Programmierern und kleineren Firmen ohne Serverfarm die Schaffung eines Cloud-Backends für ihre Kunden.

Um mobile Applikationen für iOS mit Delphi zu entwickeln, benötigen Entwickler sowohl einen Mac als auch einen PC. Alternativ können sie sich damit behelfen, Delphi in einer Windows-VM unter Parallels oder VMWare auszuführen. Der Mac wird dabei zum Debuggen der App auf einem Emulator oder einem gekoppelten physikalischen Gerät sowie zum Signieren der App benötigt.

Das Entwickeln und Testen von Android-Applikationen erfolgt auf einem PC unter Zuhilfenahme des in die IDE integrierten originalen Android SDK.