Interview mit Wolfgang Frank

„Teammitglieder müssen über den Tellerrand ihrer Plattform schauen“

Kypriani Sinaris

Native Apps bieten viele Vorteile: Sie sind näher am Betriebssystem und näher an der Hardware. Um seine Applikation aber nicht nur dem Kundenkreis eines bestimmten OS zugänglich zu machen, schaffen Tools für die native Cross-Plattform-Entwicklung Abhilfe. Wir haben MobileTech Con Speaker Wolfgang Frank im Interview gefragt, welche Ansätze er empfiehlt und welche Kriterien bei der nativen Cross-Plattform-Entwicklung beachtet werden sollten.

JAXenter: Welche Vorteile bietet die native Cross-Plattform-Entwicklung?

Wolfgang Frank: Im Prinzip erlaubt mir ein nativer Cross-Plattform-Ansatz die bestmögliche Nutzung der Plattformfähigkeiten, also eine native und natürlich anfühlende UX, sowie die Verwendung von recht aktuellen Features.

Ein weiterer Vorteil ist die hohe Wiederverwendbarkeit von Code und Komponenten, auch zwischen Plattformen, sowie die Berücksichtigung vom vorhandenen Sprach-Know-How.

JAXenter: Ob man eine native oder eine nicht native Applikationen baut, das hängt vom konkreten Anwendungsfall ab. Kannst du darstellen, in welchen Fällen die native App besonders sinnvoll ist?

Wolfgang Frank: Wie immer: Es gibt keine harten Regeln und die Übergänge sind fließend. Grundlegend sehe ich folgende Kriterien, die man bedenken sollte:

  • Steht die User Experience (UX), eine schnelle und flüssige Bedienung der App im Vordergrund und soll sich die App harmonisch in das Bild der anderen Systemanwendungen und nativen Apps einfügen, ist eine native App ein guter Kandidat als Ansatz. Dies trifft im hohen Maße auf Consumer Apps zu. Im Enterprise-Umfeld sind diese Kriterien sicher auch sehr wichtig, werden aber oftmals anderen Aspekten untergeordnet.
  • Sollen neue Plattform-Features genutzt und in die Apps integriert werden, führt oft auch kaum ein Weg an nativen Apps vorbei.
  • In einigen Fällen ist auch die Performance für die Logik ein wichtiges Entscheidungskriterium. Die Browser, bzw. die JavaScript Engines, haben aber schon so stark aufgeholt, dass dies nicht auf Dauer als entscheidendes Kriterium standhalten wird.
  • Ist im Team schon Know-how vorhanden, auf dem aufgebaut werden kann, wie Java, oder C#, so stellt ein nativer Cross-Plattform-Ansatz einen guten Ausgangspunkt dar, um in die Welt der Mobile-Entwicklung einzusteigen. Genauso gilt natürlich auch umgekehrt, wenn es nur JavaScript-Leute im Team gibt, dass dann zunächst ein Hybrid-/Web-Ansatz evaluiert werden sollte.
  • Sind bestehende Komponenten auf Basis der nativen Technologien/Sprachen (z.B. Java, C#, C/C++) vorhanden und stellen diese einen wichtigen Anteil der App dar, so kann es auch hier sinnvoll sein, den bestehenden nativen Ansatz fortzuführen.
  • Natürlich ist nativ eine Voraussetzung, um Apps in die offiziellen App-Stores zu stellen. Selbstverständlich kann dann innerhalb des nativen Rahmens auch Webtechnologie zum Einsatz kommen, was ja auch die Basis der Hybrid-Ansätze wie Cordova ist.
  • Ein nicht zu vernachlässigender Gesichtspunkt ist das Hervorheben von spezifischen plattformnahen UX-Aspekten als Marketing oder Qualitätsmerkmal.

JAXenter: Gibt es auch Mischformen?

Wolfgang Frank: Auch Mischformen sind interessant und oftmals sinnvoll, z. B. das Einbinden von Inhalten per Web-View in native Apps. Ein interessanter, sehr aktueller Ansatz ist mittels RoboVM bestehenden Java Code als Dynamic Framework in eine komplett „native native“ App (ObjC, Swift) einzubinden und diesen wiederverwenden zu können.

JAXenter: Das Entwickeln einer nativen App für jede Plattform erfordert spezifisches Know-how. Welchen Ansatz zur nativen Cross-Plattform-Entwicklung wählst du in deinen Projekten, um dieses Problem zu lösen?

Wolfgang Frank: Da die Entwicklung von Mobile-Enterprise-Lösungen unser Kerngeschäft ist, haben wir uns schon von Anfang an mit jeder Art von Entwicklungsmöglichkeit auseinandergesetzt. Angefangen hat das mit generativer Cross-Plattform-Entwicklung mit textuellen DSLs (xtext) oder der Nutzung von JavaScript-native Frameworks wie Appcelerator.

Lange Zeit hat sich die rein native Entwicklung auf iOS- und die Android-Basis als die für unsere Kunden beste Lösung herausgestellt. In der jüngeren Vergangenheit haben jedoch auch neue Player und Ansätze wie Xamarin (C#) und RoboVM (Java) ihre praktische Reife bewiesen und finden in verschiedenen Projekten bei uns Einsatz. Punktuell haben wir auch schon J2Objc als Transpiler eingesetzt, der Source-Code von Java nach Objective C transformiert, sowie Djinni/C++ für die Einbindung von Hardware-nahen oder sicherheitsrelevanten Komponenten.

JAXenter: Und welche Lösung ist dein persönlicher Favorit?

Wolfgang Frank: Meine persönlichen Favoriten sind aktuell die Cross-Compiler-Ansätze, die auf Basis von Java, oder C# direkt nativen Plattform-Code erzeugen und native, plattformeigene Frameworks zur Laufzeit verwenden. Den Apps sieht man ihre sprachfremde Herkunft nicht mehr an.

Ein oft vernachlässigter Weg für die Vereinfachung von Cross-Plattform-Lösungen ist die Verwendung eines Mobile Gateways oder einer MBaaS-Lösung. Dadurch kann die Komplexität der nativen Apps stark reduziert und entsprechend Logik auf den Server ausgelagert und auch dort über Plattformgrenzen hinweg wiederverwendet werden. Die Etablierung einer solchen Integrationskomponente empfehlen wir meistens für die Umsetzung von Apps mit Server-Anteil – sofern man die Backend-Infrastruktur beeinflussen kann.

API Summit 2018
Christian Schwendtner

GraphQL – A query language for your API

mit Christian Schwendtner (PROGRAMMIERFABRIK)

DDD Summit 2018
Nicole Rauch

Domain-Driven Design für Einsteiger

mit Nicole Rauch (Softwareentwicklung und Entwicklungscoaching)

JAXenter: Welche Schlüsse ziehst du aus diesem Ansatz für die Teamstruktur?

Wolfgang Frank: Ein gezielter Know-how-Aufbau auf gemeinsamer Basis in plattformübergreifenden Teams ist möglich. Vorausgesetzt, die Teammitglieder haben die Bereitschaft, über den Tellerrand ihrer Plattform hinaus zu schauen. Ich denke jedoch, dass genau diese Fähigkeit einen guten (Mobile-) Software-Entwickler ausmacht.

Mit dem vorgeschlagenen Ansatz fällt es deutlich einfacher, gemeinsame Team-Regeln und Best Practices zu etablieren und ein gemeinsames Architekturverständnis zu bekommen. Es ist wirklich interessant zu sehen, wie viele Aufgabenstellungen sich mit einer leicht abstrahierten Architektur und zwischen den Plattformen geteilten Komponenten gut lösen lassen. Dazu gehören insbesondere Aspekte wie Networking und Persistenz. Von Vorteil ist damit natürlich auch, dass ich zentral getestete Komponenten habe, die ich wiederverwenden kann. Auch der Testaufwand reduziert sich also entsprechend und die Entwicklung wird insgesamt beschleunigt.

JAXenter: In welchen Punkten ist auch bei der nativen Cross-Plattform-Entwicklung spezifisches Wissen über die verschiedenen Plattformen unabdingbar?

Wolfgang Frank: Alles was mit UI und User Experience zu tun hat, sollte meiner Meinung nach auf Plattform-Know-how aufbauen. Ich bin kein besonders großer Fan von Abstraktion und Harmonisierung von UIs und UI-Komponenten sowie Usability-Konzepten über Plattformgrenzen hinweg. Also genau das ist die Stelle, an der man sich mit den nativen Begebenheiten sehr gut auskennen sollte.

Auch wenn es keine Komponente für spezielle Plattformdienste gibt, muss diese je Plattform selbst gebaut werden. Vorteil ist jedoch, dass sie danach wiederverwendbar ist. Das trifft insbesondere auf spezifische plattformnahe Frameworks/Komponenten zu, die genutzt werden sollen oder wenn die Konzepte zwischen den Plattformen sonst zu verschieden sind (z.B. Background Fetch).

JAXenter: Mit den Wearables – Smartwatches, Brillen und Co. – kommen ja immer mehr Formfaktoren, Plattformen, gerätespezifische Eigenschaften in das Feld der mobilen Software-Entwicklung. Gibt es hier auch Cross-Plattform-Ansätze?

Wolfgang Frank: Ja, die gibt es! Xamarin läuft zum Beispiel auch auf der Apple Watch, Android Wear und dem AppleTV. Dies ist ein weiterer Cross-Plattform-Aspekt, der hinzukommt – also ganz andere Geräteklassen können ebenfalls von der Wiederverwendung von Code und Komponenten profitieren.

Vielen Dank für die spannenden Interview Fragen! Ich hoffe mit meinen Antworten ein paar Anregungen geben zu können und freue mich auf Feedback, gerne per Mail wolfgang.frank@arconsis.com, oder über eine  Twitter DM @wolfgangfrank.

5665b5ed729ae420206474f0version294sizefullWolfgang Frank ist Geschäftsführer der arconsis IT-Solutions GmbH aus Karlsruhe. Er beschäftigt sich seit vielen Jahren mit der Android- und iOS-Entwicklung. Als Agile Coach (CSM, CSP) und Softwarearchitekt für komplexe Enterprise-Systeme unterstützt er Kunden beim Bau von Mobile-Gateways zur Anbindung von Unternehmenssystemen an die mobile Welt. Ein Schwerpunkt von ihm liegt dabei auf der nativen Cross-Plattform-Entwicklung. Wolfgang schreibt für diverse Magazine Fachartikel und hält regelmäßig Vorträge auf Fachkonferenzen.

Verwandte Themen:

Geschrieben von
Kypriani Sinaris
Kypriani Sinaris
Kypriani Sinaris studierte Kognitive Linguistik an der Goethe Universität Frankfurt am Main. Seit 2015 ist sie Redakteurin bei JAXenter und dem Java Magazin.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: