Menü
Start
Anmelden / Registrieren
Suche
 
Start arrow Informatik arrow Strategie für die Portierung von Desktop-Business-Anwendungen auf iOS-gestützte Endgeräte
< Zurück   INHALT   Weiter >

3.4.2 iOS

Wie bereits erwähnt ist das iOS das Betriebssystem der Firma Apple für den Einsatz auf mobilen Endgeräten. Zum Zeitpunkt dieser Arbeit ist die Version 5.x die aktuelle Fassung des Betriebssystems. Vor der Veröffentlichung der Version 4 hieß das Betriebssystem noch iPhone OS und stand nur für das iPhone zur Verfügung. Seit der Version 4 und der Einführung des iPads, stattet Apple auch andere Geräte mit diesem Betriebssystem aus. Dazu zählt unter anderem der iPod touch und Apple TV.

Das iOS ist eine spezielle Weiterentwicklung des Desktop-Betriebssystem Mac OS X von Apple für mobile Endgeräte. Es dient zugleich als Abstraktionsschicht zwischen Hardware und Software sowie als Laufzeitumgebung für die Ausführung der Apps. Sämtliche Applikationen (App) kommunizieren nicht direkt mit der Hardware, sondern grundsätzlich mit dem iOS.

High level platform architecture

Abb. 3-4 Anwendungsschichten auf Basis der iOS109

Hierdurch lässt sich Hardware einsetzen, die unterschiedliche Funktionen aufweist. Das erste iPad besitzt beispielsweise noch keine Kamera, die jedoch in den neuen iPads verbaut ist.

Außerdem können Änderungen an der Hardware vorgenommen werden, ohne dass der Entwickler seine App anpassen muss. Für diesen Zweck stellt das iOS verschiedene Dienste bereit, die in unterschiedlichen Schichten (Layer) aufgeteilt sind. Je näher ein Dienst an der iOS liegt, desto geringer ist sein Abstraktionsgrad.

Die einzelnen Schichten bauen grundsätzlich auf einander auf. Aus diesem Grund empfiehlt Apple, bevorzugt Dienste aus höheren Schichten zu nutzen, bevor die Dienste der unteren Schichten in Anspruch genommen werden. Abb. 3-5 zeigt das vollständige Schichtenmodell des iOS.

Core Services

Core OS

Abb. 3-5 iOS Schichten Modell112

- Cocoa Touch: UI-Elemente, Event-Dispatching, Applikationssteuerung und Objektwrapper für wichtige Datentypen (Strings, Array, Numbers, etc.)

- Media: Grafik, Animation, Sound und Video

- Core Services: Strings, Collections, Erkennen der Ausrichtung, SQLiteDatenbank, Adressbuch, Netzwerkunterstützung, etc.

- Core OS: Unix-Services, Ein-/Ausgabe, Threads, BSD-Sockets, Energieverwaltung, etc.

Die vollständigen Dienste der einzelnen Schichten hier aufzuzählen und zu beschreiben, wäre sehr aufwendig, da mit ihnen ein ganzes Buch gefüllt werden kann. Für diese Arbeit hat dies auch keinen Mehrwert, da die Referenzanwendung nur einen Bruchteil der Dienste nutzt. Eine umfassende Beschreibung ist in der iOS Developer Library zu finden.

Nicht unerwähnt sollte jedoch der Hinweis auf die oberste Schicht Cocoa Touch bleiben. Sie ist die Schicht, die am meisten bei der Entwicklung von Apps genutzt wird. Hier sind unter anderem die Dienste für die Oberflächengestaltung oder die Verarbeitung von Touch-Events und vielen weiteren Funktionen hinterlegt.

3.4.2.1 Laufzeitumgebung

Eine weitere Aufgabe des iOS ist die Bereitstellung der Laufzeitumgebung für die Ausführung der Apps. Aufgabe der Laufzeitumgebung sind die Ressourcenverwaltung, die Dateisystemverwaltung und die sichere Ausführung.

Die Laufzeitumgebung führt jede iOS-Apps grundsätzlich in einem geschlossenen virtuellen Speicherbereich aus. Die Größe des virtuellen Speicherbereichs ist durch die physikalische Speichergröße begrenzt. Anders als bei Mac OS oder beispielsweise auch Windows, lagert iOS fehlenden Arbeitsspeicher nicht auf die Festplatte aus. Steht nicht genügend Speicher zu Verfügung, werden ungenutzte Programme automatisch geschlossen.

Eine weitere Besonderheit der Laufzeitumgebung ist die so genannte Sandbox. iOS installiert jede App in einem geschlossenen Bereich, dem Sandbox-Verzeichnis. Dieses Verzeichnis ist das Heimatverzeichnis der App, welches die App nicht verlassen kann. Der Zugriff auf gemeinsam genutzte Ressourcen, wie beispielsweise das Adressbuch, ist nur über eine Schnittstelle von iOS möglich.

Durch die Sandbox soll die Stabilität und die Sicherheit des gesamten Systems gefördert werden.

3.4.2.2 iOS SDK

Das iOS Software Development Kit (iOS SDK) ist die Entwicklungsumgebung von Apple, um native iOS-Apps zu erstellen, zu testen und zu verwalten.

Bestandteile des SDKs sind:

- verschiedene Frameworks (Bibliotheken)

- Xcode (IDE)

- iOS-Simulator

- iOS Developer Library (Dokumentation)

In den Frameworks sind die Dienste der einzelnen iOS-Schichten zusammengefasst. Für die Entwicklung einer App sind nicht immer alle Frameworks erforderlich, aus diesem Grund braucht ein Entwickler nur die für den Anwendungsfall benötigten Frameworks in das Entwicklungsprojekt zu importieren.

Für die Entwicklung von Apps stellt Apple die Xcode IDE zur Verfügung. Xcode ist ein Integrated Development Environment, mit dem Apps erstellt, getestet und verwaltet werden können. Ein wichtiger Bestandteil von Xcode ist der Interface Builder. Hiermit lässt sich die Benutzerschnittstelle einer Anwendung deskriptiv entwerfen, ohne dass der Entwickler eine Zeile Quelltext schreiben muss. Um iOSApps schnell und kostengünstig testen zu können, kann der iOS-Simulator genutzt werden. Er besitzt zwar nicht den vollen Funktionsumfang eines vergleichbaren Endgeräts, dennoch lassen sich kleine Änderungen sehr schnell überprüfen. Außerdem

ist die Mitgliedschaft im kostenpflichtigen iOS Developer Program nicht zwingend

notwendig. Zusätzlich beinhaltet das iOS SDK eine umfangreiche Dokumentation in Form der iOS Developer Library. Diese Library steht auch im Internet zur Verfügung.

3.4.2.3 MonoTouch

Mono ist ein Open Source .NET-Entwicklungsframework für Linux, Mac OS, iOS Android und andere Betriebssysteme. Es beinhaltet die notwendigen Entwicklungswerkzeuge und die Infrastruktur, um .NET-Anwendungen erstellen und ausführen zu können. Monos .NET-Implementierung basiert auf den ECMA-Standards für C# und der Common Language Infrastructure.

Mit Hilfe von Mono lässt sich IL-Code von .NET auf anderen Plattformen kompilieren und ausführen. Voraussetzung ist, dass die eingesetzten Klassenbibliotheken ECMA-konform sind oder Bestandteil der Mono-Klassenbibliotheken sind.

MonoTouch ist eine Erweiterung des Mono-Projekts, um native Anwendung für iOSgestützte Endgeräte (iPhone, iPad und iPod-Touch) zu entwickeln. Es wurde im Herbst 2009 veröffentlicht und ist mittlerweile ein Produkt des Unternehmens Xamarin.

Die Entwicklung einer iOS-App mit MonoTouch erfolgt in der Programmiersprache C#. Die Klassenbibliothek setzt sich aus den beiden ECMA-Profilen (Siehe Kapitel 3.4.1.3) zusammen sowie aus Teilen des .NET-Frameworks.

Entgegen der üblichen Vorgehensweise für die Entwicklung einer .NET-Anwendung, übersetzt der MonoTouch-Compiler den Quelltext direkt in die Maschinensprache des ARM-Prozessors eines iOS-Endgerätes. Hierfür verwendet MonoTouch einen Ahead Of Time (AOT)-Compiler. .NET hingegen übersetzt den C#-Quelltext mithilfe eines Just In Time (JIT)-Compilers in eine Zwischensprache, die erst zur Laufzeit durch die CLI in die plattformabhängige Maschinensprache übersetzt wird (Siehe Kapitel 3.4.1). Mono folgt der Vorgehensweise von .NET. In diesem Punkt unterscheiden sich Mono und MonoTouch.

Wie oben erwähnt, nutzt MonoTouch eine angepasste Klassenbibliothek, die Xamarin als Mobile Profile bezeichnet. Zusätzlich existieren so genannte Wrapper-Klassen, die nahezu die vollständige iOS-API in C# bereitstellen. Der Entwickler kann somit den vollen Funktionsumfang der iOS-API nutzen, in dem er die MonoTouch.dll referenziert, die das Mobile Profile und die Wrapper-Klassen beinhaltet. Das gesamte Paket, bestehend aus den Wrapper-Bibliotheken und der Klassenbibliotheken, bezeichnet Xamarin als MonoTouch Profile..

Die notwendigen Wrapper-Klassen enthält der MonoTouch.ObjcRuntime-Namensraum. Das Binding zu den Standard Objective-C Datentypen implementieren die Klassen des MonoTouch.Foundation-Namensraums. Ein weiterer Namensraum ist z.B. MonoTouch.UKit. Er stellt das 1:1-Mapping für sämtliche Komponenten des CocoaTouch-Frameworks bereit.

MonoTouch bietet zusätzlich die Möglichkeit auch Objective-C Bibliotheken zu verwenden, die nicht Bestandteil der iOS-API sind. Zu diesem Zweck muss eine Binding-Bibliothek verwendet oder erstellt werden. Dafür enthält MonoTouch eigens das Werkzeug btouch. Eine ausführliche Beschreibung liefert das Tutorial „Binding Objective-C Types“ auf der Webseite von Xamarin.

Neben den Objective-C Bibliotheken lassen sich auch externe .NET-Frameworks in MonoTouch verwenden. Allerdings müssen diese Bibliotheken vorher mit MonoTouch übersetzt worden sein (iOS spezieller Binärcode) oder als Quelltext zur Übersetzung mit MonoTouch vorliegen.

Das liegt daran, dass MonoTouch nicht Application binary interface(ABI)-

kompatibel ist. Somit können keine Binärdateien verwendet werden, die gegen ein anderes Profil (z.B. .NET-Framework) übersetzt wurden. Das hat folgende Konsequenzen:

Soll eine Bibliothek übersetzt werden, die selber weitere externe Bibliotheken verwendet, müssen auch diese Bibliotheken mit dem MonoTouch Profil kompiliert werden.

Außerdem können aufgrund des AOT-Compilers nicht alle .NET-Sprachkonzepte genutzt werden. Hierbei handelt es sich insbesondere um Sprachkonzepte, die eine dynamische Quelltext-Generierung erfordern. Hierzu zählen einige generische Sprachkonzepte.

Die klassische Parametrierung von Klassen-, Interfaceoder Methodendefinitionen in C# ist jedoch möglich. Das liegt daran, dass der Compiler erkennt, welche Typen innerhalb der Klassen oder Methoden verarbeitet werden sollen. Einen vollständigen Überblick über die inkompatiblen Sprachkonzepte liefert die MonoTouch-Dokumentation.

Für die Gestaltung der Benutzerschnittstelle setzt MonoTouch auf den Interface Builder der Apple-IDE. Dadurch kann ein Entwickler wie ein iOS-Entwickler die grafische Benutzerschnittstelle gestalten. Er hat die Möglichkeit NIB-Dateien oder das Storyboard zu verwenden.

3.4.3 Erkenntnisse aus der Betrachtung der Laufzeit- und Entwicklungsumgebungen beider Plattformen

Abschließend ist zu sagen, dass .NET ein großes Potential für die Entwicklung umfangreicher und reichhaltiger Softwaresysteme in verschiedenen Programmiersprachen bereitstellt.

Durch die Vielfalt an Frameworks können Entwickler auf ein breites Repertoire an vorgefertigten Lösungen zurückgreifen und sich somit fast ausschließlich der fachlichen Aufgabenstellung widmen.

Durch die Standardisierung der CLI besteht zusätzlich die Möglichkeit .NETAnwendung auch auf anderen Plattformen wie Unix oder Mac OS einzusetzen.

Die Entwicklungswerkzeuge für iOS-Apps sind weitgehend eingeschränkt. Ursprünglich hat Apple nur native Apps vorgesehen, die mit der Programmiersprache Objective-C und der iOS SDK entwickelt werden.

Seit der Veröffentlichung von MonoTouch existiert jedoch ein Produkt, das eine Alternative zur iOS SDK darstellt. MonoTouch lässt es zu, voll funktionsfähige native iOS-Apps zu entwickeln, ohne dabei auf Funktionalitäten der iOS-API verzichten zu müssen.

Darüber hinaus ermöglicht MonoTouch die Portierung von bestehenden .NETAnwendungen und die Entwicklung von plattformunabhängigen Apps.

Jedoch ist die Portierung einer bestehenden Anwendung beschränkt. Da grundsätzlich der Quelltext der Anwendung portiert werden muss und keine Bibliotheken verwendet werden können, die nicht mit MonoTouch kompiliert wurden.

Auch die Gestaltung der Oberfläche muss weiterhin mithilfe des Interface Builders erfolgen.

 
Fehler gefunden? Bitte markieren Sie das Wort und drücken Sie die Umschalttaste + Eingabetaste  
< Zurück   INHALT   Weiter >
 
Fachgebiet
Betriebswirtschaft & Management
Erziehungswissenschaft & Sprachen
Geographie
Informatik
Kultur
Lebensmittelwissenschaft & Ernährung
Marketing
Maschinenbau
Medien und Kommunikationswissenschaft
Medizin
Ökonomik
Pädagogik
Philosophie
Politikwissenschaft
Psychologie
Rechtswissenschaft
Sozialwissenschaften
Statistik
Finanzen
Umweltwissenschaften