Entwickler: Auf der EKON sprichst du über die „Azure Cloud mit Delphi.“ Wenn du es einmal mit Mainstream-Sprachen wie C# oder Java vergleichst – wie gut ist Delphi für Cloud-Computing-Anwendungen geeignet?
Bernd Ua: Um einen belastbaren Vergleich hinzubekommen, müsste man den Terminus Cloud-Computing-Anwendung scharf definieren. Ist das nur eine in der Cloud laufende quasi beliebig skalierbare Microservice-Architektur mit Web-Frontend oder zählt dazu auch schon eine Mobile- oder Desktop-App die Cloud-Technologien primär für Storage oder Messaging verwendet oder einfach Machine Learning aus der Cloud einbindet?
Insofern macht es aus meiner Sicht Sinn, die Tauglichkeit an den jeweiligen Anforderungen zu messen. In einigen Szenarien ist Delphi C# und Java schon allein deswegen unterlegen, weil es eben klassischen Maschinencode für bestimmte Systeme und Prozessorarchitekturen erzeugt – da sind zwar alle wichtigen Systeme von Linux 64 Bit über Windows oder MacOS bis zu Android oder iOS dabei, nichtdestotrotz lege ich mich bei der Compilation in Delphi entsprechend fest. Bei Schnittstellen zu Cloud-Frameworks, Diensten oder Tools sind es häufig auch vor allem die Mainstream-Sprachen C#, Java oder auch Javascript für die sich Beispiele finden lassen oder es sogar fertig benutzbare Packages und Api-Wrapper der Hersteller gibt.
Die Azure- und Amazon-Komponenten in Delphi sind ein Beispiel dafür, wie Embarcadero versucht diesen Mangel durch mitgelieferte Komponenten auszugleichen. Im Verhältnis zu der Vielfalt und Vielzahl an vorhandenen APIs, sind es aber immer noch vergleichsweise wenige Komponenten. Spätestens, wenn ich in der Cloud „serverless“ arbeiten möchte, um bei Azure als Beispiel zu bleiben also Azure Functions implementieren möchte, komme ich mit Delphi nicht weiter. Die Sprache Delphi wird von Microsoft für Azure Functions einfach nicht unterstützt.
Das Schöne an Cloud-Architekturen ist aber ja auch, dass ich Systeme aus unterschiedlichen Sprachen miteinander kombinieren kann. Wenn die serverseitige Verarbeitung in einer Komponente zu prozessor-lastig ist, implementiere ich diese Komponente eben nicht mit Node.js sondern mit Delphi oder C# und nutze deren Multithreading-Frameworks. Wenn ich in einer Komponente den eleganten und effektiven Zugriff auf SQL-Datenbanken brauche, nehme ich dafür vielleicht auch explizit Delphi her. Es gibt also durchaus Gründe und Szenarien, sich gegen Delphi (oder andere „Nicht-Mainstream“-Sprachen) zu entscheiden, aber auch genug Gründe, nicht wegen einer anstehenden Cloud-Integration ein bestehendes Delphi-Ökosystem zu wechseln.
LUST AUF mehr DELPHI?
Erleben Sie Workshops vom 4. - 6. November 2024 in Düsseldorf
Entwickler: Gehen wir einmal ins technologische Detail: Delphi hat in den letzten Releases ja diverse Technologien und Komponenten erhalten, um mit der Cloud zu arbeiten. Was ist da aus deiner Sicht besonders hervorzuheben?
Ua: Die aktuellen Komponenten für den Zugriff auf Azure und Amazon-Services sind ja bereits eine Überarbeitung der ersten Versionen, die erste Kinderkrankheiten ausgemerzt haben. Aber diese neuen Versionen, so nützlich und gut sie auch sind, zählen für mich mehr eher als Pflicht denn als Kür.
Viel spannender finde ich eigentlich den wieder belebten Support für Linux als Zielplattform. Es gab ja mal bereits vor Jahrzehnten ein Delphi für Linux names Kylix, das dank Wine und Qt nicht wirklich angenommen wurde. Insofern hat mein Feature-Favorit, die Linux-Zielplattform, im Namen erst mal nichts mit Cloud zu tun. Die aktuelle Unterstützung für server-seitige Linux-Entwicklung öffnet aber den spannenden Bereich der Containertechnologien in der Cloud für Delphi-Entwickler.
Entwickler: Was fehlt dir persönlich in Delphi noch, gerade wenn es um Cloud Computing geht?
Ua: Wo soll ich da anfangen und wo aufhören, ich würde mir noch tausend Features wünschen. … natürlich bin ich da ein Nimmer-Satt. Weil ich eben Linux erwähnt habe, fangen wir damit an. Ich würde mir eine direkte Integration von Containertechnologien in die Delphi-IDE wünschen, so dass ich nicht nur ein wo auch immer laufendes Linux als Deploy- und Debug-Ziel einbinden kann sondern auch direkt einen Docker-Container angeben und dort debuggen kann. Dann kann der RAD-Server von Embarcadero ja bereits automatisch eine API-Dokumentation für Swagger erzeugen – da liegt es nahe sich zu wünschen, dass Embarcadero einen Swagger-Codegenerator bereitstellt, der Server-Stubs und Client-SDKs für Delphi zu Swagger-dokumentierten REST-APIs erzeugt. Und wenn ich weiter wünschen dürfte, könnten es noch ein paar mehr Azure- oder Amazon APIs sein, für die es fertige Komponenten gibt.
Entwickler: Die Cloud ist sicherlich eines der aktuellen Themen, mit der sich jede Sprachen-Community beschäftigen muss. Mobile, Big Data, Machine Learning, Container-Technologien sind einige andere. Wenn man sich die Delphi Community im Ganzen anschaut – wohin geht hier der Trend? Was sind die derzeit diskutierten und bearbeiteten Themen?
Ua: Die Delphi Community scheint da eher konservativ unterwegs zu sein. Den Mobile-Support für Android und iOS gibt es ja nun schon seit Jahren und es hat einige Zeit gedauert, bis das wirklich angenommen und in größerem Umfang genutzt wurde. Inzwischen werden diese mobilen Technologien in Delphi angenommen und in größerem Umfang genutzt und eingesetzt als noch vor wenigen Jahren. Dazu gibt es einiges an Open-Source-Support und kommerziellen Komponenten für diesen Bereich. Ebenso finden sich verschiedene Open-Source-Frameworks und einige wirklich gute kommerzielle Komponenten für REST-Server und Clients. Im Bereich Machine Learning oder Big Data tut sich in der Community noch nicht so viel. Wir werden aber zumindest zu Machine Learning etwas auf der EKON hören.
Was die mobile Entwicklung angeht, ist auch durch die neue Community-Edition ein neuer Schub zu erwarten. Es gab ja bereits seit längerem eine kostenfreie Starter-Edition von Delphi, die allerdings in ihrem Umfang stark eingeschränkt war und nur Win32 unterstützt hat. Diesen Sommer hat Embarcadero die alte Starter-Edition durch eine neue Community-Edition ersetzt, die im Endeffekt den kompletten Umfang der kommerziellen Professional Edition hat und mobile Entwicklung ebenso unterstützt wie Datenbankentwicklung. Die Version ist lediglich von den Lizenzbedingungen auf Non-Commercial-Use beziehungsweise bestimmte Umsatzgrenzen eingeschränkt und zielt auf den Nachwuchsbereich ebenso wie auf Startups.
Entwickler: Was ist die Kernbotschaft deiner Session, die jeder Besucher mit nach Hause nehmen sollte?
Ua: Die Session zu Azure mit Delphi ist ja eher technisch und soll Delphi-Entwicklern einen Eindruck davon geben, wie sie die Azure Cloud benutzen können, wie schwer oder wie einfach das ist und wo die Grenzen sind. Welche Message die Teilnehmer dann für sich mitnehmen, wird davon abhängen, welche Anforderungen sie konkret haben und wie diese zu den Möglichkeiten von Delphi passen oder eben nicht. Aber unabhängig davon, sollte jeder für sich zumindest mitnehmen können, dass Cloud Computing oder Cloud Integration auch nur Software-Anforderungen sind wie andere auch.
Vielen Dank für das Interview!
Bernd Ua ist Gründer und Geschäftsführer von probucon Business Consulting einem Beratungs- und Trainingshaus, das eine breite Platte von unterstützenden Dienstleistungen bei der Softwareentwicklung anbietet, angefangen von Trainings bis zu Architektur, Projektleitung, Codereviews und Umsetzung. Bernd Ua arbeitet seit mehreren Jahren als Softwarearchitekt und Entwickler sowie als Trainer im Bereich nativer Anwendungen mit Embarcadero Delphi und im .net Umfeld mit C#. Daneben ist er als Autor unter anderem für das Entwickler Magazin tätig und regelmäßig als Speaker auf nationalen und internationalen Veranstaltungen anzutreffen.