summaryrefslogtreecommitdiffstats
path: root/ausarbeitung/Tutorial.tex.backup
diff options
context:
space:
mode:
authorPatrick Hornecker2010-02-11 18:06:06 +0100
committerPatrick Hornecker2010-02-11 18:06:06 +0100
commit1428440cfffe73e75320dde46d8afb3afe9fced5 (patch)
tree41e91c24b50e7227fe6d3fe6b0e1e768de5f55f5 /ausarbeitung/Tutorial.tex.backup
parentkey bugs... (diff)
downloadfriendfinder-1428440cfffe73e75320dde46d8afb3afe9fced5.tar.gz
friendfinder-1428440cfffe73e75320dde46d8afb3afe9fced5.tar.xz
friendfinder-1428440cfffe73e75320dde46d8afb3afe9fced5.zip
tex source
Diffstat (limited to 'ausarbeitung/Tutorial.tex.backup')
-rw-r--r--ausarbeitung/Tutorial.tex.backup133
1 files changed, 83 insertions, 50 deletions
diff --git a/ausarbeitung/Tutorial.tex.backup b/ausarbeitung/Tutorial.tex.backup
index 715e29b..f33eb1f 100644
--- a/ausarbeitung/Tutorial.tex.backup
+++ b/ausarbeitung/Tutorial.tex.backup
@@ -1,30 +1,34 @@
\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
+Ein wichtiger Punkt ist auch die Wahl der passenden Plattform. Bei geeigneter Wahl dieser ist es möglich die Software auf mehrere
+Betriebssysteme für Smart Phones zu portieren und somit eine mehrfache Implementation zu vermeiden. Es wäre somit auch möglich
+viele Nutzer zu erreichen und auch die Kommunikation zwischen einem Besitzer eines \textit{iPhones} sowie dem Besitzer eines
+\textit{Palm Pre} sicherzustellen.\newline
+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{Layer} verfügen mit welchem man eine große Anzahl an
+Bibliotheken und Schnittstellen ansprechen kann. Dieser Layer soll also eine Schnittstelle zwischen Anwendungen und Betriebssytem
+sein. Ein solcher ist der \textit{Portable Operating System Interface for UniX} Layer (\textit{POSIX Layer}). Mit diesem
+LayerDurch stehen eine große Menge an aktuellen Bibliotheken, aus der \textit{Open-Source} Gemeinde, zur Verfügung welche auch
+aktiv weiterentwickelt werden. Anwendungen die auf einem \textit{Linux}-System entwickelt wurden können somit auch 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
+wenn es auf ein neues Gerät portiert wird.\newline
-Die Problematik der Plattformwahl aufgrund von vorhandener oder nicht vorhandener Hardware ist im direkten Vergleich nicht allzu
+Die Problematik der Plattformwahl aufgrund von vorhandener oder nicht vorhandener Hardware ist im 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.
+Wie schon erwähnt ist die wahl einer geeigneten Plattform nicht unerheblich. 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
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
+ä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
@@ -41,28 +45,25 @@ Programme die in \textit{C}/\textit{C++} geschrieben wurden für diese Plattform
\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
+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 ein virtuelle Java-Maschine auf, in welcher \textit{Android} läuft.\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.
+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} gelieferten stabil auf den Geräten stabil
+sind. Allerdings ergeben sich hier für die Zukunft, sobald mehr Bibliotheken stabil unterstützt werden, sicher
+interessante Möglichkeiten für Anwendungsentwicklung und Portierung.\newline
\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
-
+\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 existiert
-eine erweiterung des \textit{POSIX Layers} names \textit{PIPS}. Es werden somit mehrere Programmiersprachen unterstützt
+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}
@@ -70,8 +71,9 @@ und es besteht die Möglichkeit den \textit{POSIX Layer} zu nutzen.\newline
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
+allerdings das fehlen von \textit{Multitasking}-Unterstützung sein. 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
\subsubsection{Symbian OS}
@@ -82,35 +84,66 @@ ermöglicht Programme direkt zu portieren. Des weitern besitzt \textit{Symian OS
\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
+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 auf nach \textit{Windows Mobile} 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
+Aufgrund der Implementierung in \textit{C} ist es auch möglich das Programm für \textit{WebOS} und \textit{SymbianOS} zu
+kompilieren.
-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.
+\subsection{Softwaregrundlagen}
-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{}
+Aufgrund der gewählten Zielplattform und Programmiersprache muss nun eine Möglichkeit gefunden werden das Programm sowohl für die
+jeweiligen Plattformen zu kompilieren, sowie die graphischen Elemente auf den Plattformen darzustellen.
\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
+Da \textit{Windows Mobile} und die Programmiersprache \textit{C} genutzt wird, wird der \textit{CeGCC} \citep{CeGCC} als
+\textit{Cross-Compiler} verwendet. Mit ihm ist es möglich 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
+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
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
+Bibliotheken nutzt. Der \textit{mingw32ce}-Kompiler wird dann gebraucht, wenn man auch \textit{Windows Mobile}
+Bibliotheken einbinden möchte.\newline
+
+Soll das Programm nun für \textit{WebOS} oder \textit{SymbianOS} portiert werden, kann dies auf unter \textit{Linux} normal
+kompiliert werden.
\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}.
+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.
+
+\begin{figure}[h]
+\centering
+ \includegraphics[width=2.2cm]{Bilder/elm-app-01_2} \includegraphics[width=2.7cm]{Bilder/elm-app-02_2}
+ \caption{Beispiele verschiedener \textit{Elementary} Icons}
+\end{figure}
+
+\textit{Elementary} setzt auf die \textit{Enlightenment Foundation Libraries (EFL)} auf. Diese Bibliotheken werden zum Teil von
+Enlightenment benötigt, andere können für optionale Features installiert werden. Für die Darstellung auf mobilen Geräten sind die
+Pakete \textit{Evil, Eina, Eet, Embryo, Evas, Ecore, Edje} und\textit{Elementary} nötig.
+
+\begin{figure}[h]
+\centering
+ \includegraphics[width=2.7cm]{Bilder/efl}
+ \caption{Aufbau von \textit{Enlightenment}}
+\end{figure}
+
+Bei \textit{Ecore} handelt es sich um eine \textit{library} 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,
+welche mit einer internen \textit{state machine} und einem Zustandsgraphen speichert was wo, in welcher Farbe und wie sichtbar
+ist und gezeichnet wird. 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 ist eine genaue Anweisung zu finden, um \textit{Enlightenment} für \textit{Windows Mobile} zu erstellen. \ No newline at end of file