summaryrefslogtreecommitdiffstats
path: root/ausarbeitung/Tutorial.tex~
diff options
context:
space:
mode:
Diffstat (limited to 'ausarbeitung/Tutorial.tex~')
-rw-r--r--ausarbeitung/Tutorial.tex~96
1 files changed, 49 insertions, 47 deletions
diff --git a/ausarbeitung/Tutorial.tex~ b/ausarbeitung/Tutorial.tex~
index d2b3a34..c75e581 100644
--- a/ausarbeitung/Tutorial.tex~
+++ b/ausarbeitung/Tutorial.tex~
@@ -1,12 +1,16 @@
\section{Technische Grundlagen}
-Eine Applikation für mobile Geräte, welche das Ziel der Kommunikation zwischen Benutzern sowie 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, ohne die Software mehrere
-Male zu implementiern. 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 (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 ein neues Gerät portiert wird.\newline
@@ -17,8 +21,8 @@ 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 und 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}
@@ -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 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}
@@ -83,43 +84,44 @@ 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. Diese Tatsache und die nicht vorhandene \textit{Multitasking}-Unterstützung des
-\textit{iPhones} machen diese zwei Geräte für diese Arbeit uninteressant.\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. 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
+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.
\subsection{Softwaregrundlagen}
-Um Software, welche unter Linux entwickelt wurde, nach \textit{Windows Mobile} zu portieren werden bestimmte Softwarelösungen
-vorrausgesetzt, welche im folgenden kurz erläutert werden.
+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. 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, 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, 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