![Ein Kind hört Musik mit seinem iPod von Apple. Ein Kind hört Musik mit seinem iPod von Apple.](https://bilder.deutschlandfunk.de/FI/LE/_f/ef/FILE_feffb9de6bb9c054425e6f5049e06106/46252750-jpg-100-1920x1080.jpg)
TU München, Fachbereich Informatik, ein iOS-Workshop. Die Studenten wollen eine App entwickeln, die Kfz-Daten auswertet und Werkstatt-Termine managt.
"Wir sind jetzt in einer Phase, wo wir nur über das User-Interface und die abstrakten Sachen reden."
Sagt Sabrina Senna. Und ihr Kommilitone Yixiang Chen ergänzt:
"Bei uns bei der Entwicklung ist das User-Interface natürlich sehr wichtig. Das könnte ein Blickfang sein."
Das, was auf dem iPhone-Display zu sehen sein soll, steht am Anfang des Projekts, nur das. Der eigentliche Programm-Code kommt später, erläutert Julia Kindelsberger.
"Der erste Schritt ist mit Sicherheit das User-Interface. Also Design ist das Wichtigste für den Kunden. Das Erste, was wir machen, ist, wirkliche Mock-ups kreieren mit Fotoshop, wie das genau ausschauen soll, ohne irgendeine Line of Code zu schreiben."
Wie es weitergeht, erläutert Stephan Krusche, wissenschaftlicher Mitarbeiter am Lehrstuhl für angewandte Software-Technik. Auf seinem Rechner läuft X-Code, Apple's integrierte Entwicklungsumgebung. Zu sehen sind Abbildungen miteinander verbundener Smartphone-Displays, das Storyboard, wie so was heißt.
"Also hier sieht man jetzt eben so ein Storyboard in X-Code. Da kann man visuell das User-Interface designen und auch die Transitionen sich überlegen. Also das sind jetzt diese Pfeile hier. Da kann ich also sagen, wenn der auf diesen Button klickt, dann soll er auf diesen Screen wechseln. Und da kann ich natürlich, ohne viel vom Programmieren wissen zu müssen, das Ganze auch schon zusammenklicken."
Und auch der erste Programm-Code wird nicht vom App-Entwickler selbst geschrieben, sondern mit der Maus aus einer X-Code-Bibliothek geholt.
"Für iOS gibt es bestimmte vordefinierte User-Interface Control-Elemente. Das ist eben ein Label, ein Button. Die sieht man also alle hier in der Objekt-Bibliothek. Die kann ich dann per Drag-and-Drop in mein Storyboard reinziehen, kann sie dann eben so platzieren, wie ich sie gerne hätte. Im Normalfall kommt man mit denen, die von Apple vorgegeben werden, schon sehr weit."
Apple-Programmierer entwickeln in einer abgeschirmten Welt
Erst dann muss Code angefasst, also neu- oder umgeschrieben werden. Apple's Entwicklungsumgebung unterstützt etliche Sprachen, C und C++ etwa, vor allem aber Objective C. Von Steve Jobs einst für sein Betriebssystem Next-Step gedacht, hat sie sich mittlerweile zum Standard für Mac- und iOS-Programmierer entwickelt. Es ist eine objektorientierte Sprache, die es ermöglicht, dass Code mehrfach verwendet werden kann. Neuer entsteht in der Regel dadurch, dass bereits bestehender modifiziert wird.
"Ein Beispiel ist eben, wenn ich mit der Standard-Funktionalität eines Buttons nicht zufrieden bin, dann kann ich die entsprechende Klasse UI-Button vom UI-Kit vom iOS-Framework durch eine andere selbst geschriebene Klasse ersetzen. Und diese erbt dann normalerweise die Eigenschaften von UI-Button und spezialisiert diese dann in den gewünschten Fällen. Es ist aber im Prinzip auch möglich, ne komplett eigene Klasse zu schreiben, die nicht vererbt an dieser Stelle."
Apple-Programmierer entwickeln in einer abgeschirmten Welt. Die Entwicklungsumgebung X-Code läuft nur auf Mac-Rechnern. Und Apps können nur in Apple's App-Store vertrieben werden. Ganz anders sieht es bei den Entwicklern aus, die für die Konkurrenz-Plattform Android schreiben. Sie tun das in der allgegenwärtigen Sprache Java.
"Es ist so, dass bei Java das Prinzip ist, dass ein Entwickler, in dem Fall die Firma hinter Java, früher Sun jetzt Oracle, eine virtuelle Maschine zu Verfügung stellt, sodass der Java Byte-Code, das ist das, was nach dem Kompilieren des Java-Programms rauskommt, auf allen Plattformen läuft, und zwar möglichst identisch natürlich."
Android-Smartphones haben eine besondere virtuelle Maschine
Allerdings nicht auf Android-Smartphones. Die haben eine besondere virtuelle Maschine. Dalvik heißt die und stammt nicht von Oracle, sondern von Google. Und Dalvik braucht eine besondere Art von Byte-Code. Weshalb Android-Apps zwar in Java geschrieben werden, aber anschließend für die Dalvik-Virtual-Maschine konvertiert werden müssen.
Zehn Kilometer Luftlinie vom Campus der Technischen Universität entfernt, nördlich von München in Unterschleißheim, liegt der Unternehmenssitz von Microsoft Deutschland. Der Konzern versucht seit einiger Zeit, wenigstens einen Teil seiner starken Stellung bei PCs auch auf Tablets und Smartphones hinüberzuretten. Dazu hat er auch seine Software-Technik verändert. Auf den ersten Blick sieht man das allerdings nicht. Denn, was Oliver Scheer in Unterschleißheim mit Microsoft's Entwicklungsumgebung Visual Studio vorführt, ist die heute übliche Art der visuellen Programmierung.
"Ich möchte eigentlich alles zusammenklicken. Deswegen sehe ich in meinem aktuellen Fenster im Prinzip einen kleinen Tablet. Und in diesen Tablet kann ich jetzt Controlls oder Steuerelemente reinziehen, wie zum Beispiel einen Knopf, den ich mir aus der Werkzeugleiste einfach auf die Oberfläche ziehe. Und da möchte ich jetzt einfach die aktuelle Uhrzeit ausgeben. Und ich tippe einfach drauflos: date.time. Das ist eine Klasse von der Windows Runtime oder auch von .Net. Man drückt dann Punkt. Und dann gibt es verschiedene Funktionen wie now für jetzt oder today für heute. Und damit hab ich schon eine Zeile Code geschrieben, die mir bei Button-Klick, bei dem Ereignis, in die Textbox das aktuelle Datum reinschreibt."
Ob es eine .Net-Anwendung werden soll, ein herkömmliches PC-Programm, oder doch eine Windows App im Kachel-Design, das legt Oliver Scheer fest, bevor er mit dem Zusammenklicken und dem Kodieren beginnt..Net war über ein Jahrzehnt lang Microsoft's bevorzugte Software-Plattform. Dafür geschriebene Programme benötigen nicht nur Windows, sondern zusätzlich noch die .Net-Laufzeitumgebung, sonst funktionieren sie nicht und können nicht einmal installiert werden.
"Dot-Net-Code wird von unserem Compiler in eine Zwischensprache, Intermediate Language kompiliert. Dann kann ich die Anwendung, die so kompiliert wird, auf dem Rechner installieren. Und wenn ich die Anwendung zum ersten Mal starte, geht die Dot-Net-Laufzeitumgebung hin und kompiliert das in nativen Code, passend für den Prozessor, für die Maschine: Ist ein Intel-, AMD-x86- oder x64? Dann wird es wirklich auf die Maschine genau kompiliert, und dann ist es nativ."
Für gekachelte Apps, wie sie über Microsoft's App-Store vertrieben werden, muss aber die andere Laufzeit-Umgegung verwendet werden:
"Mit Windows 8.0 haben wir die Windows Runtime eingeführt, sehr, sehr stark verwandt mit .Net, aber eigentlich nur das, was Clients wirklich brauchen. Dadurch, dass wir viel weggelassen haben, ist die viel kleiner, effizienter, schneller, sodass auf ganz preiswerten Prozessoren Tablets auch sehr effizient laufen können."
Aber egal, ob .Net oder Runtime - an der Art der Programmierung in Visual Studio ändert das nichts. Und auch die Sprache, in der der Code geschrieben wird, hängt nicht von der Zielplattform, sondern von den Vorlieben des Entwicklers ab.
"Wir unterstützen ja eine Vielzahl an Sprachen, C++ zum Beispiel. Das ist eher so für die, die tief drin sind. Klar. Dann C# und Visual Basic. Das entwickeln so die typischen Dot-Net-Entwickler. Aber draußen gibt es sehr, sehr viele Web-Entwickler, die auch in HTML und Java-Script entwickeln und mal Web-Seiten bauen. Und die entwickeln jetzt auch inzwischen Apps. Und wir erlauben es halt jedem, der diese Sprachen spricht, sich eine auszuwählen und auch zu mischen und damit zu entwickeln."
Apps, die auf Tablets und Smartphones laufen im Fokus
Was also die Sprache anbelangt, so ist der Windows-Entwickler flexibel. Nur bei den Software-Plattformen muss er sich entscheiden. Für Betriebssysteme bis Windows 7 ist nur .Net erhältlich, nicht aber die Windows Runtime, auf Windows 8 beide, und auf Windows Phone demnächst die Runtime, sodass sich dann Apps für Smartphone und Tablet gleichzeitig entwickeln lassen.
"Früher musste man sich überlegen, in welche Richtung gehe ich. Gehe ich auf Tablet, PC oder gehe ich aufs Telefon? Und seit Kurzem mit Windows 8.1, was jetzt im Sommer verfügbar sein wird, wenn das auf dem Telefon drauf ist, dann kann der Entwickler hingehen und sagen: Ich entwickle jetzt eine App, die auf dem Tablet läuft, aber auch auf dem Phone läuft. Das nennen wir bei uns dann Universal App, eine App für beide Plattformen im Prinzip."
Visual Basic und C# sind die Sprachen, die Microsoft entwickelt hat, die sich deshalb mit dem Windows-PC weit verbreitet haben und seit Jahren auf der einschlägigen Tiobe-Liste der beliebtesten Programmiersprachen sehr weit vorne stehen. Ganz oben ist dort aber immer noch die Sprache C, die mit Unix-Systemen groß geworden ist. An zweiter Stelle folgt dann Java, das mit dem Internet aufkam. Und an dritter Stelle bereits – mit starker Tendenz nach oben – Apple's Objective C. Sprachen aus verschiedenen Systemwelten und aus verschiedenen Epochen. Wer aber eine beherrscht, der tut sich mit der nächsten leichter, sagt Sabrina Senna vom iOS-Workshop der TU, die derzeit natürlich Objective C lernt.
"Die objekt-orientierten Sprachen so wie Java helfen sehr viel. Es ist eine komplett andere Sprache natürlich. Aber es ist schon hilfreich, damit man das lernt auch."