App-Programmierung für Einsteiger


28. Juni 2016 Facebook Twitter LinkedIn Google+ Trends,Wissenswertes


Apps auf dem Smartphone

App ist die Kurzform von Applikation, einer anderen Bezeichnung für Anwendung. Der Begriff Applikation ist in der Informatik seit Jahrzehnten gebräuchlich. So bezeichnete etwa Atari Hilfsprogramme für seine Rechnerbaureihe ST als Applikationen und kürzte die Bezeichnung mit App ab. Seit der Einführung von Apples App-Store im Jahre 2008 wird die Bezeichnung App in erster Linie für mobile Anwendungsprogramme verwendet. Daneben werden Apps, die zwar Aussehen wie ein mobiles Anwendungsprogramm, aber tatsächlich Internetseiten sind, als Web-Apps bezeichnet. Internetseiten können mit wenig Aufwand so programmiert und gestaltet werden, dass sie wie Apps aussehen.

Unterschiede zwischen Webprogrammierung und der Programmierung von Apps

Es gibt in der Programmierung wesentliche Unterschiede zwischen Internetseiten beziehungsweise Web-Apps auf der einen und mobilen Apps auf der anderen Seite.

Internetseiten

Internetseiten werden in erster Linie in der Textauszeichnungssprache HTML ausgeliefert. Dazu gesellen sich Dateien in der Gestaltungssprache CSS und der Skriptsprache JavaScript. Internetseiten werden in der Regel von einem Server geladen. Die meisten Internetseiten werden dynamisch bei Anforderung zusammengesetzt. Die Programme, die dies erledigen, sind in entsprechenden Skriptsprachen wie PHP und Python geschrieben. Dargestellt wird eine Internetseite in einem Browser. Es gibt nur beschränkt Zugriff auf Systemkomponenten und andere Systemeigenschaften.

Auch wenn sich mit modernen Techniken – wie unter HTML 5 verfügbar – eine entsprechende Internetseite weitgehend ohne Serverzugriffe realisieren lässt, so sind doch die meisten Internetseiten auf die Kommunikation mit einem Server im Netzwerk ausgelegt.

Content-Management-Systeme (CMS) decken viele Einsatzbereiche für Internetseiten ab und können als Basis für komplexere Vorhaben verwendet werden.

Web-Apps und normale Apps sind kaum aus der immer mobiler werdenen digitalen Welt wegzudenken...

Web-Apps und normale Apps sind kaum aus der immer mobiler werdenen digitalen Welt wegzudenken…

Mobile Apps

Apps für Apples iOS werden dagegen in den Programmiersprachen Swift und Objective-C geschrieben, Apps für Googles Android in Java (Java und JavaScript sind zwei verschiedene Programmiersprachen). Mit diesen Sprachen kann man viel umfassender und feiner auf Systemkomponenten und Systemeigenschaften zugreifen.

Notwendige Vorkenntnisse

Programmiervorkenntnisse in irgendeiner Programmiersprache sind immer von Vorteil. Sie sollten vorhanden sein, sofern man  einen technischen Beruf erlernt hat oder sich mit der Materie auseinandersetzt.

Für Internetseiten sind nur wenige Vorkenntnisse erforderlich, wenn man zu Beginn ein ganz einfaches Projekt umsetzen will. HTML ist in seinen Grundzügen sehr einfach zu erlernen, CSS ebenfalls. Eine Web-App mit einfacher Funktionalität dürfte innerhalb eines Tages zu schreiben sein, wenn man bereits Vorkenntnisse in anderen Programmiersprachen vorweisen kann. Sobald aber PHP und Datenbankzugriffe auf der Seite des Servers dazukommen, wird der Einarbeitungsaufwand größer.

Die Programmierung von Apps erfordert weit mehr an Vorkenntnissen. Die eingesetzten Programmiersprachen sind vollwertige Programmiersprachen. Swift zum Beispiel besitzt einen ausgeklügelten Mechanismus, um Fehler, die typischerweise beim Programmieren mit Sprachen wie C gemacht werden, zu verhindern. So vorteilhaft dieser Mechanismus ist, er muss erst einmal verstanden werden. Im Gegensatz zu Internetseiten, die einfach miteinander verlinkt sind, wird man bei der Programmierung einer App mit dem Konzept konfrontiert, wie Seiten einer App gesteuert und programmiert werden.

Die Programmierung von Apps ist konsequent objektorientiert. Dies trifft insbesondere auch für Schnittstellen zu Systemfunktionen zu. Das Konzept der Objektorientierung sollte daher verstanden sein, damit man sinnvoll programmieren kann. Ebenso wie Module, optionale Variablen, Objekte versus Strukturen, Klassen, Closures und der Grand Central Dispatcher.

All dies lässt sich anhand eines Buches oder Kurses lernen, der Arbeitsaufwand ist aber deutlich größer als bei HTML und CSS.

Plattformen

Es gibt zwei verbreitete Plattformen:

  1. Apples iOS, das nur Geräte von Apple verwenden
  2. Googles Android, das viele verschiedene Anbieter einsetzen

Zwar ist Googles Android laut Gartner (Stand Mai 2016) mit 84 % Marktanteil deutlich weiter verbreitet als Apples iOS mit 15 % Marktanteil. Mit iOS lassen sich aber deutlich höhere Einnahmen als mit Android erzielen. So berichtet ustwo, der Hersteller des Spielehits Monument Valley, dass 75 % seiner Einnahmen mit dieser App von iOS-Nutzern stammen und nur 20 % von Android-Nutzern.

Geräte von Apple sind eher in Haushalten mit größerem Haushaltseinkommen zu finden. Und Apple benutzt ein geschlossenes System, Apps können nicht so einfach raubkopiert werden wie bei Android-Systemen. So berichtet ustwo, dass auf einen Kauf unter Android 20 Installationen kommen, unter Apples iOS aber nur 2,5 Installationen. Einmal gekaufte Apps dürfen auf mehreren Geräten einer Person installiert werden, deshalb sind hier keine Werte um die 1 zu erwarten.

Alle anderen Smartphone-Betriebssysteme haben einen Marktanteil von unter einem Prozent und spielen keine Rolle. Trotzdem ist Windows Phone ab Version Windows 10 mobile erwähnenswert, da es sich weitgehend die Code-Basis mit seinem großen Bruder Windows 10 für PCs teilt. In Zukunft wird Microsoft aber keine wesentliche Rolle spielen, da der Rückzug hier aktuell angekündigt wurde.

Programme

Apple iOS

Für Apples iOS steht mit Xcode kostenlos eine integrierte Entwicklungsumgebung aus dem Hause Apple zur Verfügung. Diese läuft nur auf Macs. Eigene Apps lassen sich auf dem eigenen Smartphone oder Tablet testweise installieren. Das geschlossene System von iOS sieht vor, dass man nur Apps aus dem App Store installieren kann. Aus Sicherheitsgründen durchlaufen alle Apps im App-Store die Code-Überprüfung von Apple. Damit man diesen Schutz nicht aushebeln kann, werden testweise installierte Apps, die nicht aus dem App Store stammen, nach einer Woche deaktiviert.

Möchte man Apps dauerhaft installieren oder im App Store veröffentlichen, so benötigt man ein Entwicklerkonto bei Apple. Dieses kostet 100 € im Jahr.

Google Android

Für Googles Android steht mit Android Studio eine integrierte Entwicklungsumgebung aus dem Hause Google zur Verfügung. Diese läuft unter Windows, Mac OS X und Linux.

Sowohl Xcode als auch Android Studio unterstützen die automatische Signierung und Veröffentlichung im App Store von Apple beziehungsweise in Google Play.

Apps auf dem Startbildschirm des Smartphones - Auch Desktopanwendungen werden immer mehr durch Apps bestimmt.

Apps auf dem Startbildschirm des Smartphones – Auch Desktopanwendungen werden immer mehr durch Apps bestimmt.

Plattformübergreifende App-Entwicklung

Es stehen mehrere plattformübergreifende integrierte Entwicklungsumgebungen zur Verfügung. Je nach Entwicklungsumgebung wird dabei der Code in einer Programmiersprache erzeugt und in die jeweils erforderliche Programmiersprache für iOS oder Android übersetzt. Ein großer Teil der Programmierung hat in der Regel mit systemspezifischen Benutzerschnittstellen zu tun. Deshalb muss man entweder auf plattformunabhängige Systemschnittstellen zurückgreifen, die aber Einschränkungen unterliegen und eher einem größten gemeinsamen Teiler entsprechen. Oder man muss die Benutzerschnittstelle für jedes System einzeln programmieren. Ein anderer Ansatz ist die Entwicklung einer Web-App, die sich gestalterisch an das jeweilige System anpasst.

Bekannte Systeme sind Xamarin, Apache Cordova und PhoneGap.

Wird die App die klassische Webseite ersetzen?

Bei aller Unsicherheit, die Voraussagen im IT-Sektor innewohnen, sollte man nicht erwarten, dass die App die klassische

Webseite ersetzt. Apps und Webseiten bedienen zwei verschiedene Märkte, die eine gemeinsame Schnittmenge besitzen.

Im Bereich der Webseiten stehen einfache und kostengünstige Content-Management-Systeme wie etwa WordPress zur Verfügung, die einen weiten Bereich abdecken. Der Entwicklungsaufwand ist durch den modularen Aufbau dieser Systeme überschaubar. Zudem sind Webseiten und Web-Apps betriebssystemübergreifend einsetzbar.

Dagegen ist die Programmierung von Apps komplexer und kostenaufwendiger und muss in der Regel für jede Betriebssystemplattform weitgehend separat durchgeführt werden. Dafür können mehr Systemsensoren ausgewertet werden. Da Apps bedeutend schneller ausgeführt werden als Webseiten, wird man zeitkritische Anwendungen immer als App programmieren. Je spezialisierter eine Anwendung ist, desto eher wird man sich für die Programmierung einer App entscheiden.

 

Bildquelle:

Bigstock