summaryrefslogtreecommitdiffstats
path: root/ausarbeitung/Tutorial.tex.backup
diff options
context:
space:
mode:
Diffstat (limited to 'ausarbeitung/Tutorial.tex.backup')
-rw-r--r--ausarbeitung/Tutorial.tex.backup154
1 files changed, 77 insertions, 77 deletions
diff --git a/ausarbeitung/Tutorial.tex.backup b/ausarbeitung/Tutorial.tex.backup
index c4ee8cb..b838aa8 100644
--- a/ausarbeitung/Tutorial.tex.backup
+++ b/ausarbeitung/Tutorial.tex.backup
@@ -1,102 +1,92 @@
\section{Technische Grundlagen}
-Die Wahl der Plattform hängt von zwei verschiedenen Faktoren ab. Zum einen stellt sich die Frage, ob die Handymodelle die
+Die Wahl der Plattform hängt von zwei verschiedenen Faktoren ab. Zum Einen stellt sich die Frage, ob die Handymodelle die
benötigte Hardware, wie zum Beispiel \textit{GPS} oder eine Kamera besitzen, zum anderen ob Schnittstellen vorhanden sind um das
Programm für das System zu entwickeln. \newline
-
Die Problematik der Plattformwahl aufgrund von vorhandener oder nicht vorhandener Hardware ist nicht allzu groß. Die meisten
aktuellen Geräte haben mittlerweile eine ähnliche Ausstattung was Speicher und Prozessorleistung angeht.Auch erweiterte Features
wie \textit{GPS} oder Lagesensoren sind in den meisten, aktuellen Geräten vorhanden oder werden in der nächsten Generation, des
jeweiligen Herstellers, vorhanden sein.\newline
-
-Es gestalltet sich schon schwieriger eine Plattform aufgrund des Betriebssystemes zu wählen. Bei geeigneter Auswahl ist es
-möglich die Software auf mehrere Betriebssysteme für Smartphones zu portieren und somit eine mehrfache Implementation zu
-vermeiden. Es wäre somit auch möglich viele Nutzer zu erreichen und die Kommunikation zwischen einem Besitzer eines
-\textit{iPhones} sowie dem Besitzer eines \textit{Palm Pre's} sicherzustellen.\newline
-Des weiteren ist es auch von Interesse, ob andere Programme und Bibliotheken auf den jeweiligen Systemen ausführbar sind.
-Es wäre also ein \textit{Layer} von Interesse mit welchem immer die gleichen Programmbibliotheken genutzen werden können. Dabei
-sollte das zugrundeliegende System unabhängig von diesem \textit{Layer} sein. Es soll also damit vom zugrundeliegenden
+Da die gegebenen Hardwareunterschiede minimal sind, wird eine Plattform aufgrund des Betriebssystemes ausgewählt. Bei
+geeigneter Wahl ist es möglich die Software auf mehrere Betriebssysteme für Smartphones zu portieren und somit eine mehrfache
+Implementation zu vermeiden. Es wäre somit auch möglich viele Nutzer zu erreichen und die Kommunikation zwischen einem Besitzer
+eines \textit{iPhones} sowie dem Besitzer eines \textit{Palm Pre's} sicherzustellen.\newline
+Ein weiterer Punkt der zu einer Entscheidung beiträgt ist die Frage ob andere Programme und Bibliotheken auf den jeweiligen
+Systemen ausführbar sind. Es wird also ein \textit{Layer} benötigt, mit welchem immer die gleichen Programmbibliotheken
+genutzen werden können. Dabei sollte das zugrundeliegende System unabhängig von diesem \textit{Layer} sein. Es soll also damit vom
+zugrundeliegenden
Betriebssystem abstrahiert werden. Ein entsprechender \textit{Layer} stellt der \textit{Portable Operating System Interface for
-Unix Layer (POSIX Layer)} \citep{POSIX} dar. Mit diesem \textit{Layer} stehen eine große Menge an aktuellen
-Bibliotheken aus der \textit{Open-Source} Gemeinde zur Verfügung. Diese haben den Vorteil, dass sie aktiv
+Unix Layer (POSIX Layer)} \footnote{POSIX \url{http://standards.ieee.org/regauth/posix/}} dar. Mit diesem \textit{Layer} stehen
+eine große Menge an aktuellen Bibliotheken aus der \textit{Open-Source} Gemeinde zur Verfügung. Diese haben den Vorteil, dass sie
+aktiv
weiterentwickelt werden und auch ständig neue Bibliotheken hinzukommen. Anwendungen, die auf einem \textit{Linux}-System
entwickelt wurden können somit ohne weiteres auf ein anderes, \textit{POSIX} kompatibles System, portiert werden, ohne das
die genutzten Bibliotheken ausgetauscht werden müssen.\newline
-Auch die Frage der unterstützten Programmiersprachen stellt sich, da das Programm nicht ständig neu implementiert werden soll
-wenn es auf ein neues Gerät portiert wird.\newline
+Zusätzlich stellt sich auch die Frage der zu nutzenden Programmiersprache. Diese sollte von einer möglichst großen Mengen an
+Betriebsystemen unterstützt werden. Man müsste das, wenn man das Programm für ein neues Gerät portieren möchte, das Progamm somit
+nicht immer komplett neu implementieren.
\subsection{Betriebsysteme für mobile Geräte}
-Wie schon erwähnt ist die Wahl einer geeigneten Plattform von nicht unerheblicher Wichtigkeit, da hier schon indirekt eine
-Vorauswahl an Nutzbaren Bibliotheken und Programmiersprachen getroffen wird. Im Folgenden werden fünf Betriebssysteme für mobile
-Plattformen vorgestellt und auf deren Portierungsmöglichkeiten eingegangen.
+Durch die Wahl eines Betriebsystemes wird schon indirekt eine Vorauswahl an Nutzbaren Bibliotheken und Programmiersprachen
+getroffen wird. Im Folgenden werden fünf Betriebssysteme für mobile Plattformen vorgestellt und auf deren Portierungsmöglichkeiten
+eingegangen.
\subsubsection{Windows Mobile}
-Der wohl bekannteste Vertreter ist \textit{Windows Mobile}. Die aktuelle Version 6.5 wurde von Microsoft
-mit \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.
+Das von Microsoft entwickelte \textit{Windows Mobile}
+\footnote{Windows Mobile \url{http://www.microsoft.com/windowsmobile/de-de/default.mspx}} in der aktuellen Version 6.5 verfügbar.
+Das gesamte Betriebssystem basiert
+auf der \textit{Windows Win32 API} und lässt Ähnlichkeiten zu den Desktop-Varianten der Windows-Familie erkennen. Es existiert
+ein \textit{Cross-Compiler} names \textit{CeGCC} \footnote{CeGCC \url{http://cegcc.sourceforge.net/}},
+mit welchem Programme die in \textit{C}/\textit{C++} geschrieben wurden für diese Plattform kompiliert werden können.
\subsubsection{Android}
-Das von \textit{Google} entwickelte \textit{Android} \citep{Android} 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. Auf diese Grundlage
-setzt eine virtuelle Java-Maschine auf, in welcher \textit{Android} läuft.\newline
-
+Das von \textit{Google} entwickelte \textit{Android} \footnote{Android \url{http://www.android.com/}} setzt auf einen
+\textit{Linux-Kernel} der Version 2.6 auf. Dieser \textit{Kernel} kümmert sich um die Prozess- und Speicherverwaltung,
+Kommunikation sowie um die Hardwareabstraktion. Auf diese Grundlage setzt eine virtuelle Java-Maschine auf, in welcher
+\textit{Android} läuft.\newline
Zum Implementieren von Anwendungen stellt \textit{Google} eigens ein \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. Des weiteren bietet
-\textit{Google} mittlerweile ein \textit{NDK} an, mit desen Hilfe es auch möglich ist Programme in \textit{C} oder \textit{C++}
-zu schreiben. In diesem Paket werden auch eine Hand voll Bibliotheken mitgeliefert, welchen stabil laufen. \textit{Google} rät
-allerdings von der Nutzung anderer Bibliotheken ab, da nur die mit dem \textit{NDK} laut Hersteller stabil auf den Geräten laufen.
-Allerdings ergeben sich hier für die Zukunft, sobald mehr Bibliotheken unterstützt werden, sicher
-interessante Möglichkeiten für Anwendungsentwicklung und Portierung.\newline
+\textit{Java}-Bibliotheken zurück, womit sich die Anzahl der nutzbaren Sprachen im Moment eben auf diese eine beschränkt. Des
+weiteren bietet \textit{Google} ein \textit{NDK} an, mit desen Hilfe es auch möglich ist Programme in \textit{C} oder
+\textit{C++} zu schreiben.
\subsubsection{WebOS}
-\textit{WebOS} \citep{WebOS} wurde von \textit{Palm} als Nachfolger von \textit{PalmOS} entwickelt und ist momentan 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 beinhaltet \textit{WebOS} einen
-einen \textit{POSIX Layers}. Somit werden mehrere Programmiersprachen unterstützt und es besteht die Möglichkeit den \textit{POSIX
-Layer} zu nutzen.\newline
+\textit{WebOS} \footnote{WebOS \url{http://palmwebos.org/}} wurde von \textit{Palm} als Nachfolger von \textit{PalmOS}
+\footnote{PalmOS \url{http://www.palm.com/}} entwickelt und ist momentan nur auf zwei Geräten zu finden: Auf dem \textit{Palm Pre}
+und dem \textit{Palm Pixi}.\newline
+Unter der Benutzeroberfläche von \textit{WebOS} arbeitet ein \textit{Linux-Kernel} in der Version 2.6. Somit ist es möglich, wenn
+man Zugriff auf diesen Kernel hat, \textit{POSIX}-kompatible Software unter \textit{WebOS} zu betreiben.
+Für dieses Betriebssystem existiert ein \textit{SDK} für \textit{HTML5}, \textit{CSS} und \textit{Java}. Ein weiteres, welches im
+März 2010 veröffentlicht wird, soll die \textit{C} und \textit{C++} Entwicklung ermöglichen.
\subsubsection{iPhone OS}
-Bei \textit{iPhoneOS} \citep{iPhoneOS} handelt es sich um eine abgeänderte und angepasste Version von MacOS. Es wurde eigens für
+Bei \textit{iPhoneOS} \footnote{iPhoneOS \url{http://www.apple.com/de/iphone/}} handelt es sich um eine abgeänderte und angepasste
+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} oder einer anderen Abstraktion dieser Art. Der
-größte Kritikpunkt an diesem System dürfte allerdings das fehlen von \textit{Multitasking}-Unterstützung sein. Somit ist es nicht
+unterstützt. . Der
+größte Kritikpunkt an diesem System ist das Fehlen von \textit{Multitasking}-Unterstützung. Somit ist es nicht
möglich zwei Anwendungen parallel auszuführen, was gerade \textit{location awareness} Anwendungen stark einschränkt, da hier
-häufig weitere Dienste im Hintergrund aktiv sein sollten.\newline
+häufig weitere Dienste im Hintergrund aktiv sein sollten.
\subsubsection{Symbian OS}
-\textit{SymbianOS} \citep{SymbianOS} ist eine Betriebssystem welches vorzugsweise auf Geräten der Firma \textit{Nokia} zum
+\textit{SymbianOS} \footnote{SymbianOS \url{http://www.symbian.org/}} 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}.
+ermöglicht Programme direkt zu portieren. Des weitern besitzt \textit{Symian OS} einen \textit{POSIX Layer}.
\subsubsection{Zielplattform}
-Die Wahl der Zielplattform ist auf \textit{Windows Mobile} gefallen, da es hier möglich ist das Programm in \textit{C} zu
-schreiben und dann im Anschluss zu portieren. \newline
\textit{iPhoneOS} wurde aufgrund seiner mangelnden \textit{Multitasking}-Unterstützung ausgeschlossen. Diese ist für den
-geplanten Dienst wichtig, da hier Prozesse im Hintergund stattfinden werden und dies auf einem solchen System nicht realisierbar
-wäre. \textit{Android} hat zwar eine \textit{C} Unterstützung, allerdings gibt der Hersteller an das nicht alle Bibliotheken
-stabil sind.\newline
+geplanten Dienst wichtig, da bei diesem Prozesse im Hintergund notwendig sind und dies auf einem solchen System nicht
+realisierbar wäre. \textit{Android} hat zwar eine \textit{C} Unterstützung, allerdings gibt der Hersteller an das nur die
+mit dem \textit{NDK} verfügbaren Bibliotheken zum momentanen Zeitpunkt stabil verfügbar sind. Dies schränkt die
+Entwicklung stark ein und ist für das zu entwickelnde Programm nicht geeignet.\newline
Aufgrund der Implementierung in \textit{C} ist es auch möglich das Programm für \textit{WebOS} und \textit{SymbianOS} zu
kompilieren.
@@ -107,29 +97,38 @@ jeweiligen Plattformen zu kompilieren, sowie die graphischen Elemente auf den Pl
\subsubsection{CeGCC}
-Da \textit{Windows Mobile} und die Programmiersprache \textit{C} genutzt wird, wird der \textit{CeGCC} als
-\textit{Cross-Compiler} verwendet. Mit ihm ist es möglich \textit{C} Programmcode, der unter \textit{Linux} entwickelt wurde, nach
+Mit dem \textit{CeGCC} ist es möglich \textit{C} Programmcode, der unter \textit{Linux} entwickelt wurde, nach
\textit{Windows Mobile} zu portieren. Bei \textit{CeGCC} handelt es sich um ein \textit{Open-Source} Projekt, bassierend auf dem
\textit{GCC}. Mit diesem Tool können in einer \textit{Linux} Umgebung die für \textit{Windows Mobile} benötigten Bibliotheken und
ausführbaren Dateien erstellt werden.\newline
+Der \textit{CeGCC} kann in zwei unterschiedlichen Versionen genutzt werden. Zum einen bietet der \textit{wince-mingw32ce} eine
+Menge an Tools mit welchen man native \textit{Windows Mobile} Applikationen erstellen kann. Hierzu wird eine
+Portierung der \textit{GNU} \footnote{GNU \url{http://www.gnu.org/}} Enwicklungswergzeuge aus dem \textit{MinGW} \footnote{MinGW
+http://mingw.org/} Projekt genutzt. Diese kompilieren und linken Code, um diesen unter \textit{Windows Mobile} ausführbar zu
+machen. Die andere Möglichkeit stellt die Nutzung des \textit{arm-cegcc} dar. Mit diesem kann \textit{POSIX}
+kompatibler Programmcoder nach \textit{Windows Mobile} portiert werden. %verfeinern
+
+# arm-mingw32ce : toolset to build native Windows CE applications
+# arm-cegcc : toolset to port unix source to Windows CE
-Es wird zwischen zwei verschiedenen Arten des \textit{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 einbinden möchte. Der \textit{mingw32ce}-Kompiler wird dann gebraucht, wenn auch \textit{Windows Mobile}
-Bibliotheken zum Einstatz kommen.\newline
+ Remember that arm-wince-cegcc implements a unix-like layer on top of Windows CE, and that arm-wince-mingw32ce implements the
+native CE API.
-Soll das Programm nun für \textit{WebOS} oder \textit{SymbianOS} portiert werden, kann dies auf unter \textit{Linux} normal
-kompiliert werden.
+The unix-like layer is only provided in the arm-wince-cegcc tools, the arm-wince-mingw32ce deliberately lack this as they attempt
+to provide a development environment that is as close to Windows CE as possible.
+Part of the code in this directory is required to be able to create executables that start a program in a consistent way (e.g.
+crt0.o, the startup code in an executable), but another part of this code provides a unix like layer with functionalities absent
+in Windows CE.
\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. Dieses Frontend sollte auch in \textit{C} oder
-\textit{C++} geschrieben sein, um auch hier die Portierbarkeit für die gewünschten Plattformen zu garantieren. Hier fiel die Wahl
-auf das freie, seit 1997 existierende, \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}.
-\textit{Elementary} bietet ein umfangreiches Paket an grafischen Elementen die genutzt und frei angeordnet werden können.
+ansprechend darzustellen und eine einfache Bedienbarkeit zu garantieren. Dieses Frontend sollte auch in \textit{C} oder
+\textit{C++} geschrieben sein, um auch hier die Portierbarkeit für die gewünschten Plattformen zu erhalten. Genutzt wird das
+freie, seit 1997 existierende, \textit{Enlightenment} \footnote{Elementray \url{http://www.enlightenment.org/}} 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}. \textit{Elementary} bietet ein umfangreiches Paket an grafischen Elementen die
+genutzt und frei angeordnet werden können.
\begin{figure}[h]
\centering
@@ -147,11 +146,12 @@ Pakete \textit{Evil, Eina, Eet, Embryo, Evas, Ecore, Edje} und\textit{Elementary
\caption{Aufbau von \textit{Enlightenment}}
\end{figure}
-Bei \textit{Ecore} handelt es sich um eine Bibliothek, welche das serialisieren von mehreren Programmteilen ermöglicht und
-für den Betrieb auf mobilen Geräten optimiert wurde. \textit{Edje} ist eine komplexe grafische Design und Layout Bibliothek,
+Bei \textit{Ecore} handelt es sich um eine Bibliothek, welche das Serialisieren von mehreren Programmteilen ermöglicht und
+für den Betrieb auf mobilen Geräten optimiert wurde. \textit{Edje} ist eine grafische Design und Layout Bibliothek,
welche mit einer internen \textit{state machine} und einem Zustandsgraphen speichert was wo, in welcher Farbe und wie sichtbar
ist und gezeichnet werden soll. Die Bibliothek \textit{Evas} ist eine \textit{canvas}-Bibliothek, welche sich um Effekte wie
Alpha-Blending oder das skalieren von Bildern kümmert. \textit{Eina} stellt verschiedene, optimierte Datentypen und Tools
bereit.\newline
-Im Anhang 1 sind genaue Anweisungen zu finden, um \textit{Enlightenment} für \textit{Windows Mobile} zu portieren. \ No newline at end of file
+Im Anhang 1 sind genaue Anweisungen zu finden mit deren Hilfe es möglich ist \textit{Elementary} nach \textit{Windows Mobile} zu
+portieren. \ No newline at end of file