summaryrefslogtreecommitdiffstats
path: root/ausarbeitung/Tutorial.tex.backup
blob: 715e29b91e252fb2ff5aa0a5e4df54ff4ef96d80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
\section{Technische Grundlagen}

Eine Applikation für mobile Geräte, welches das Ziel der kommunikation zwischen Benutzern und deren Vernetzung hat, sollte auf
möglichst vielen Plattformen ausführbar sein. Somit wäre es möglich viele Nutzer zu erreichen und auch die Kommunikation zwischen
einem Besitzer eines \textit{iPhones} sowie dem Besitzer eines \textit{PalmPre} wäre sichergestellt. Des weiteren ist es auch von
Interesse, ob andere Programme und Bibliotheken auf den jeweiligen Systemen ausführbar sind. Grundlegend sind Betriebsysteme
interessant, die über einen \textit{POSIX-Layer} verfügen. Dieser Layer stellt eine Schnittstelle zwischen Anwendungen und
Betriebssytem dar. Somit können Anwendungen die auf einem \textit{Linux}-System entwickelt wurden ohne weiteres auf ein anderes,
\textit{POSIX} kompatibles System, portiert werden.\newline
Auch die Frage der unterstützten Programmiersprachen stellt sich, da das Programm nicht ständig neu implementiert werden soll,
wenn es auf einem neuen Gerät ausgeführt werden soll.\newline

Die Problematik der Plattformwahl aufgrund von vorhandener oder nicht vorhandener Hardware ist im direkten Vergleich nicht allzu
groß. So haben mittlerweile die meisten der aktuellen Geräte eine ähnliche Ausstattung was Speicher und Prozessorleistung angeht.
Auch erweiterte Features wie GPS oder Lagesensoren sind in den meisten aktuellen Geräten vorhanden oder werden in der nächsten
Generation, des jeweiligen Herstellers, vorhanden sein.\newline

\subsection{Betriebsysteme für mobile Geräte}

Im folgenden werden die fünf bekanntesten Betriebssysteme für mobile Geräte kurz vorgestellt werden. Des weiteren wird auf die
Portierungsmöglichkeiten der einzelnen Systeme eingegangen.

\subsubsection{Windows Mobile}

Der wohl bekannteste Vertreter ist \textit{Windows Mobile}. Die aktuelle Version 6.5 wurde von Microsoft
auch \textit{Windows Phone} betitelt.Das gesamte Betriebssystem basiert auf der \textit{Windows Win32 API} und lässt
ähnlichkeiten zu den Desktop-Varianten der \Windows-Familie erkennen. \textit{Windows Phone} besitzt keinen
\textit{POSIX Layer}, allerdings existiert ein \textit{Cross-Compiler} names \textit{CeGCC} \citep{CeGCC}, mit welchem
Programme die in \textit{C}/\textit{C++} geschrieben wurden für diese Plattform kompiliert werden können.\newline

%Will man für dieses Betriebssystem Anwendungen entwickeln so bietet Microsoft eine eigenes \textit{Software Development Kit
%(SDK)}
%an, welches auch jeder frei nutzen kann. Bei der Programmierung kann hierbei sowohl auf \textit{C}/\textit{C++},
%sowie auch auf Java zurückgegriffen werden. Allerdings ist die \textit{Win32 API} nich kompatibel mit der Desktopversion, weshalb
%Anwendungen getrennt entwickelt oder portiert werden müssen.\newline

%Wie Im Kapitel Tutorial schon erwähnt, lässt sich mit Hilfe eines \textit{Cross-Compilers} das \textit{Enlightenment}-Paket für
%dieses System, mit etwas Aufwand, portieren. Durch diese Tatsache und der Unterstützung von \textit{C}/\textit{C++}
%eignet sich Windows Mobile sehr gut als Plattform für Anwendungen, welche nich unbedingt von vorne herein für diese entwickelt
%wurden.

\subsubsection{Android}

Bei \textit{Android} \citep{Android} handelt es sich um ein neueres Betriebssystem für Smart Phones. Das von Google entwickelte
System setzt auf einen Linux-Kernel der Version 2.6 auf. Dieser Kernel kümmert sich um die Prozess- und Speicherverwaltung,
Kommunikation sowie um die Hardwareabstraktion. \newline

Zum implementieren von Anwendungen stellt Google eigens ein eigenes \textit{SDK} bereit. Dieses greift allerdings nur auf
\textit{Java}-Bibliotheken zurück, womit sich die nutzbaren Sprachen im moment eben auf diese beschränken. Somit können Programme
die in \textit{C} oder \textit{C++} geschrieben wurden nicht portiert werden. Auch wenn man einen passenden
\textit{Cross-Compiler} nutzt funktionieren ist die Portierung nicht immer möglich, da Google die \textit{libc}-Bibliothek (unter
\textit{Android} nun \textit{Bionic} genannt) an mobile Geräte angepasst und verändert hat.\newline

Durch diese starken Einschränkungen und dem fehlende \textit{POSIX Layer} ist es somit nicht möglich Programme, welche unter
Linux oder in \textit{C}/\textit{C++} entwickelt wurden, für dieses System zu kompilieren.

\subsubsection{WebOS}

\textit{WebOS} \citep{WebOS} gehört nicht zu den weit verbeiteten Betriebsystemen, allerdings wird es hier aufgeführt, da
\textit{Enlightenment} portiert werden kann. Das System wurde von \textit{Palm} als Nachfolger von \textit{PalmOS} entwickelt.
Momentan ist das System nur auf zwei Geräten zu finden: Auf dem \textit{Palm Pre} und dem \textit{Palm Pixi}.\newline

Für dieses Betriebssystem existiert sowohl ein \textit{SDK} für \textit{HTML5}, \textit{CSS} und \textit{Java} sowie ein
weiteres, welches im März 2010 veröffentlicht wird, für \textit{C} und \textit{C++}. Des weiteren existiert
eine erweiterung des \textit{POSIX Layers} names \textit{PIPS}. Es werden somit mehrere Programmiersprachen unterstützt
und es besteht die Möglichkeit den \textit{POSIX Layer} zu nutzen.\newline

\subsubsection{iPhone OS}

Bei \textit{iPhoneOS} \citep{iPhoneOS} handelt es sich um eine portierte Version von MacOS. Es wurde eigens für das
iPhone entwickelt. Auch für dieses System existiert ein \textit{SDK}, welches allerdings nur die Sprache \textit{Objective-C}
unterstützt. Des weiteren fehlt auch eine Unterstützung des \textit{POSIX Layers}. Der größte Kritikpunkt an diesem System dürfte
allerdings das fehlen von \textit{Multitasking}-Unterstützung. Somit ist es nicht möglich zwei Anwendungen parallel
auszuführen.\newline

\subsubsection{Symbian OS}

\textit{SymbianOS} \citep{SymbianOS} ist eine Betriebssystem welches vorzugsweise auf Geräten der Firma \textit{Nokia} zum
Einsatz kommt. Es existiert ein \textit{SDK}, was neben \textit{C}/\textit{C++} auch noch weitere Sprachen wie zum Beispiel
\textit{Python} oder \textit{Java} unterstützt. Mit dem \textit{SDK} wird auch ein \textit{Cross-Compiler} angeboten, welcher es
ermöglicht Programme direkt zu portieren. Des weitern besitzt \textit{Symian OS} auch einen \textit{POSIX Layer}.

\subsubsection{Zielplattform}

Als primäre Zielplattform für diese Arbeit wurde \textit{Windows Mobile} gewählt. Im ersten Schritt wurde das benutzen von
\textit{iPhone OS} und \textit{Android} ausgeschlossen. Aufgrund ihrer Restriktionen, wie den fehlenden \textit{POSIX Layer}
und Einschränkungen der \textit{SDK's} sowie die unterstützten Sprachen sind Programme, welche für diese Plattform entwickelt
wurden nur auf diesen nutzbar.\newline

Aufgrund der weiten Verbreitung, sowie der vorhandenen Tools ist die Wahl für dieses Projekt auf \textit{Windows Mobile}
gefallen. So werden zum einen viele Benutzer erreicht und zum anderen kann die Software mit geringem Aufwand nach \textit{Symbian
OS} und \textit{WebOS} portiert werden und ist somit bei richtiger Implementierung auf mehreren Plattformen ausführbar.

Aufgrund der Entscheidung, \textit{Windows Mobile} zu nutzen, wird als \textit{Cross-Compiler} der \textit{CeGCC} verwendet.
Bei \textit{CeGCC} handelt es sich um ein \textit{Open-Source} Projekt, bassierend auf dem GCC. Mit desen Hilfe können in
einer Linx Umgebung die für \textit{Windows Mobile} benötigten Bibliotheken und ausführbaren Dateien erstellt werden.\newline

\subsection{}

\subsubsection{CeGCC}

Aufgrund der Entscheidung, \textit{Windows Mobile} zu nutzen, wird als \textit{Cross-Compiler} der \textit{CeGCC} verwendet.
Bei \textit{CeGCC} handelt es sich um ein \textit{Open-Source} Projekt, bassierend auf dem GCC. Mit desen Hilfe können in
einer Linux Umgebung die für \textit{Windows Mobile} benötigten Bibliotheken und ausführbaren Dateien erstellt werden.\newline

Es wird zwischen zwei verschiedenen Arten des CeGCC's unterschieden. Zum Einen \textit{CeGCC}, zum Anderen \textit{mingw32ce}.
Der Unterschied zwischen diesen beiden Kompilern besteht darin, dass ersterer nur dann benutzt wird, wenn man nur Linux
Bibliotheken nutzt. Im Unterschied dazu wird der \textit{mingw32ce}-Kompiler dann gebraucht, wenn man auch \textit{Windows Mobile}
Bibliotheken einbindet.\newline

\subsubsection{Enlightenment}

Neben einem \textit{Cross-Compiler} wird noch ein geeignetes Frontend benötigt, um das Programm auch für den Benutzer
ansprechend darzustellen, sowie eine einfache Bedienbarkeit zu garantieren. Hier fiel die Wahl auf das freie
\textit{Enlightenment} \citep{efl} Projekt. Dieses Softwarepaket unterstützt alle gängigen Plattformen, wie Windows, Linux, BSD
und MacOS. Es beinhaltet einen eigenen \textit{Window-Manager} names \textit{Elementary}.