Inhaltsverzeichnis

Transcrição

Inhaltsverzeichnis
Marktüberblick_GUI_Frameworks
Fallstudienarbeit
Hochschule:
Hochschule für Oekonomie & Management
Standort:
Essen
Studiengang:
Bachelor Wirtschaftsinformatik
Veranstaltung:
Fallstudie / Wissenschaftliches Arbeiten
Betreuer:
Dipl-Inf._(FH)_Christian_Schäfer
Typ:
Fallstudienarbeit
Themengebiet:
GUI Design
Autor(en):
Steffen Korthauer, Julia Klemm
Studienzeitmodell:
Abendstudium
Semesterbezeichnung: WS10
Studiensemester:
4
Bearbeitungsstatus:
begutachtet
Prüfungstermin:
Abgabetermin:
Name der Autoren:
Steffen Korthauer, Julia Klemm
Titel der Arbeit:
"Marktüberblick GUI Frameworks"
Hochschule und Studienort: FOM Essen
Inhaltsverzeichnis
• 1 Einleitung
♦ 1.1 Problemstellung und
Zielsetzung
♦ 1.2 Vorgehensweise
• 2 Grundlagen
♦ 2.1 GUI
♦ 2.2 Framework
◊ 2.2.1 Charakteristik
◊ 2.2.2 Kategorisierung
◊ 2.2.3 Abgrenzung
◊ 2.2.4 Auswahl von
Frameworks
• 3 GUI-Historie
♦ 3.1 PARC Alto
♦ 3.2 Apple LISA und Macintosh
♦ 3.3 Windows
♦ 3.4 OS/2
♦ 3.5 UNIX, Minix, Linux
• 4 Marktüberblick
♦ 4.1 Windows
◊ 4.1.1 WPF (Windows
Presentation
Foundation)
◊ 4.1.2 MFC (Microsoft
Foundation Classes)
◊ 4.1.3 WTL (Windows
Template Library)
Inhaltsverzeichnis
1
Marktüberblick_GUI_Frameworks
◊ 4.1.4 VCF (Visual
Component
Framework)
◊ 4.1.5 Smartwin++
♦ 4.2 Mac OS
◊ 4.2.1 Cocoa
◊ 4.2.2 PowerPlant
♦ 4.3 Linux (& UNIX)
◊ 4.3.1 X-Window
◊ 4.3.2 Motif
◊ 4.3.3
Desktop-Umgebungen
⋅ 4.3.3.1 Gnome
⋅ 4.3.3.2 KDE
⋅ 4.3.3.3 Xfce
♦ 4.4 plattformunabhängige
Frameworks
◊ 4.4.1 C und C++
⋅ 4.4.1.1 Qt
⋅ 4.4.1.2 GTK+
⋅ 4.4.1.3
wxWidgets
⋅ 4.4.1.4 FLTK
(Fast Light
Tool Kit )
⋅ 4.4.1.5 FOX
⋅ 4.4.1.6
Ultimate++
⋅ 4.4.1.7 Tk
(ToolKit)
⋅ 4.4.1.8 Clutter
◊ 4.4.2 Weitere
Programmiersprachen
⋅ 4.4.2.1 Java
⋅ 4.4.2.2 Python
⋅ 4.4.2.3 Flash
• 5 Fazit
♦ 5.1 Zusammenfassung
♦ 5.2 Ausblick
• 6 Endnoten
• 7 Abkürzungsverzeichnis
• 8 Abbildungsverzeichnis
• 9 Tabellenverzeichnis
• 10 Literaturverzeichnis
Inhaltsverzeichnis
2
Marktüberblick_GUI_Frameworks
1 Einleitung
1.1 Problemstellung und Zielsetzung
Die GUI (Graphical User Interface, dt. grafische Benutzeroberfläche) gewinnt immer mehr an Bedeutung. Früher
waren Softwareentwickler hauptsächlich mit der Aufgabe betraut, in ihren Anwendungen die geforderte
Funktionalität korrekt und zuverlässig bereitzustellen[1]. Als Schnittstelle zwischen Computer und Anwender
fungierte die auf Zeichen basierenden Benutzerschnittstellen CLI (command line interface). Da jedoch nicht jeder
Benutzer über ausreichend Computererfahrung verfügt, die Technik jedoch jedem zugänglich sein sollte, wurde
die Entwicklung von GUIs notwendig. Diese ermöglicht es den Benutzern auf unterschiedliche Weise effektiv mit
dem System zu arbeiten. Allerdings ist durch die Einführung von GUIs der Entwicklungsaufwand für
Anwendungen gestiegen (1992 lag der anteilige Entwicklungsaufwand bei 50 %)[2]. Um den Aufwand für die
GUI-Entwicklung möglichst gering zu halten, wurden unter anderem Frameworks für die GUI-Gestaltung
entwickelt. Diese erleichtern den Softwareentwicklern die GUI-Programmierung und unterstützen den
Entwicklungsprozess von Anwendungen. Auch unter wirtschaftlichen Gesichtspunkten ist die Entwicklung mit
Hilfe von Frameworks sinnvoll, da der Entwicklungsprozess verkürzt wird und dadurch die Anwendung schneller
am Markt erscheinen kann und so die Kosten der Entwicklung früher amortisiert werden können.
Da Frameworks ein mächtiges Werkzeug sind, haben sie sich schnell verbreitet. Jedoch hat sich nicht nur der
Ausbreitungsgrad erhöht sondern auch die Anzahl der unterschiedlichen Frameworks, die zur
GUI-Programmierung eingesetzt werden können, ist enorm hoch. In dieser Fallstudie soll ein Überblick über den
Markt der GUI-Frameworks gegeben werden, der es den Entwicklern erleichtert, das für ihre Anwendung
sinnvolle Framework auszuwählen[3].
1.2 Vorgehensweise
Im zweiten Kapitel wird auf Begriffe eingegangen, die in Zusammenhang mit dem Thema der Fallstudie
grundlegend von Bedeutung sind. Zum Einen wird der Begriff GUI kurz umrissen, zum anderen wird auf
Frameworks allgemein eingegangen. Neben der Begriffserläuterung wird auch auf die Abgrenzung zu ähnlichen
Begriffen sowie auf Kriterien, die zur Auswahl eines geeigneten Frameworks herangezogen werden könne,
eingegangen. Im dritten Kapitel wird eine kurze geschichtliche Übersicht über die Entwicklung der GUI der
unterschiedlichen Betriebssysteme und somit auch der GUI-Frameworks gegeben. Im viertel Kapitel werden
verschiedene GUI-Frameworks nach Betriebssystemen geordnet kurz mit den wichtigsten Eckdaten, die zur
Auswahl des richtigen Frameworks notwendig sind, vorgestellt. Im anschließenden Fazit werden die Erkenntnisse
der Fallstudie vorgestellt und auf zukünftige Entwicklungen Bezug genommen.
2 Grundlagen
2.1 GUI
Eine GUI ist eine konkrete Benutzerschnittstelle zwischen dem Anwender und dem Computer. Sie erlaubt die
Kommunikation zwischen Mensch und Maschine. Eine GUI bietet dem Anwender die Möglichkeit, durch
grafische Elemente die Anwendung intuitiv zu bedienen. Ziel ist es sicherzustellen, dass auch Personen, die noch
nie an einem Computer gesessen haben, die Anwendung benutzen können. Um dieses Ziel zu erreichen, muss
eine GUI bestimmten Anforderungen entsprechen. Diese sind teilweise in Standards festgelegt oder es existieren
Richtlinien(z. B. für mobile Endgeräte oder Multitouch Oberflächen), die berücksichtigt werden müssen. Je nach
1 Einleitung
3
Marktüberblick_GUI_Frameworks
Betriebssystem gibt es verschiedene Guidelines, die eingehalten werden müssen, damit die Anwendung von dem
Benutzer als angenehm und harmonisch wahrgenommen wird.
2.2 Framework
2.2.1 Charakteristik
Ein Framework (deutsch: Rahmenwerk) wird in der Literatur als eine ?Zusammensetzung aus Klassen als
Entwurf für die Lösung einer Gruppe ähnlicher Aufgaben?[4] verstanden. Es dient der Wiederverwendung von
Software und gibt dem Entwickler einen ?vertikalen und horizontalen Applikationsrahmen?[5] vor. Eine konkrete
Definition von Frameworks existiert nicht, da sie sehr abstrakt sind und auf sehr unterschiedliche Weise genutzt
werden. Daher ist es sinnvoller, die verschiedenen Charakteristika von Frameworks genauer zu betrachten.
Frameworks besitzen vorgefertigte Komponenten (u. a. abstrakte Klassen) mit einem bestimmten
Kooperationsverhalten. Um das Framework auf die jeweilige Aufgabe abzustimmen, existieren ?Hot-Spots?[6].
Darunter werden in der Literatur die Schnittstellen nach außen verstanden, die vom Entwickler angepasst werden
müssen.
Abbildung 1: Framework mit Hot-Spots[7]
Bei Frameworks kommt außerdem das sogenannte Hollywood-Prinzip (Inversion of Control) zum Einsatz. Dies
besagt, dass der Kontrollfluss umgekehrt wird, das Aufrufen des Anwendungscodes also nicht vom Entwickler
sondern vom Framework übernommen wird. Dadurch wird die Koppelung der Komponenten nicht mehr im
Quellcode sondern extern vom Framework gesteuert. So ist die für die Wartungsfähigkeit notwendige lose
Koppelung (engl. loose coupling) erreicht.
Das Arbeiten mit Frameworks bietet einige Vorteile[8]:
• wiederverwendbare Architekturentwürfe führen zu einer Standardisierung in verschiedenen
Anwendungsgebieten.
• erhöhte Produktivität nach Einarbeitung, auch da Kosten durch Wiederverwendung eingespart werden
• weniger Quellcode für die Anpassung notwendig
• bei einem ausgereiften und stabilen Framework ist weniger Wartung notwendig
• hohe Softwarequalität durch durchdachtes Design
2.1 GUI
4
Marktüberblick_GUI_Frameworks
• Frameworks sind für fast alle Bereiche geeignet
Allerdings können auch Nachteile[8] bei der Verwendung von Frameworks auftreten:
• hoher Entwicklungsaufwand für Frameworks
• Einarbeitung aufwendig
• Kosten kaum geringer als Neuentwicklung (daher sind Frameworks nur sinnvoll, wenn ähnliche
Anwendungen des Öfteren entwickelt werden müssen)
• mehr Wartung und Dokumentation notwendig
• Auswahl des richtigen Frameworks schwierig
2.2.2 Kategorisierung
Frameworks können in verschiedenen Kategorien eingeordnet werden. Allerdings gibt es auch hier in der
Literatur weder eine einheitliche Anzahl noch eine einheitliche Benennung der Kategorien. Im Folgenden wird
die Kategorisierung von Willamowius kurz dargestellt.
Application Framework
Application Frameworks stellen einen breiten Funktionsumfang zur Verfügung und werden typischer Weise in
den Bereichen GUI, Dokumente, Datenbanken etc. eingesetzt. GUI-Frameworks haben die Aufgabe, das Look
and Feel einer grafischen Oberfläche zu implementieren und enthalten den gesamten Anwendungskontrollfluss
(und meist auch ein leeres Fenster und ein Standardmenü)[9]. Da das Erstellen von GUI-Anwendungen recht
aufwendig ist, stellen die GUI-Frameworks den größten Teil der heute kommerziell verfügbaren Frameworks dar.
Domain Frameworks
Domain Frameworks werden für einen speziellen Anwendungsbereich wie Banksysteme oder Alarmsysteme
eingesetzt. Sie sind auf ein spezielles Unternehmen zugeschnitten.
Support Frameworks
Support Frameworks werden für spezielle Computerbereiche wie Speicherverwaltung oder Dateisysteme
eingesetzt. Sie sind dafür gedacht, die Programmentwicklung zu vereinfachen und werden meist in Verbindung
mit Domain und/oder Applikation eingesetzt.
Eine weitere Kategorisierung kann anhand der Art der Erstellung von Anwendungen vorgenommen werden. In
der Literatur wird hier in zwei Bereiche unterschieden: Blackbox- und Whitebox-Frameworks.
Die innere Struktur eines Whitebox-Frameworks ist sichtbar. Es besteht aus abstrakten Klassen, die abstrakte
Methoden enthalten. Soll nun das Verhalten des Frameworks geändert werden, muss der Entwickler abgeleitete
Klassen erstellen, um mit Hilfe der Vererbung die Methoden in den Unterklassen zu überschreiben. Daher ist es
notwendig, dass gute Kenntnisse über die bestehenden Framework-Klassen vorhanden sind. Der Entwickler muss
also ?den Entwurf und die Implementierung des Frameworks zumindest bis zu einem gewissen Detaillierungsgrad
verstanden haben?[10]. Befindet sich das Framework noch am Anfang der Entwicklungszeit, handelt es sich oft um
ein Whitebox-Framework, da sich noch keine konkreten Hot-Spots abgezeichnet haben.
Im Gegensatz dazu liegt der Quelltext eines Blackbox-Frameworks nicht offen, sondern nur die notwendigen
Hot-Spots sind bekannt. Ein Blackbox-Framework besteht aus Komponenten, die der Entwickler konfigurieren
und zusammensetzen muss. Eine Spezialisierung wird nicht durch Vererbung bewirkt sondern durch die
Übergabe der Komponenten. Daher ist es nicht notwendig, detailliert über die innere Struktur der Frameworks
informiert zu sein. Dies erleichtert die Nutzung von Blackbox-Frameworks.
Existierende Frameworks sind oft Mischformen zwischen eine Whitebox- und einem Blackbox-Framework. Wird
ein Framework oft wiederverwendet, entsteht automatisch eine Vielzahl von Spezialisierungen und ein
Whitebox-Framework entwickelt sich mit zunehmendem Reifegrad zu einem Blackbox-Framework.
2.2.1 Charakteristik
5
Marktüberblick_GUI_Frameworks
2.2.3 Abgrenzung
Der Begriff Framework wird häufig falscher Weise auch für andere Tools genutzt. Um dies (und daraus folgende
Missverständnisse) zu verhindern, folgt eine kurze Abgrenzung:
Entwurfsmuster[11]
Im Gegensatz zu Entwurfsmustern
• sind Frameworks implementiert.
• bestehen Frameworks aus mehr als einer handvoll Klassen und geben daher eine gesamte Architektur vor.
• sind Frameworks anwendungsspezifisch.
• ist der Grad der Wiederverwendung bei Frameworks höher.
• ist die Erstellung und Verwendung von Frameworks schwieriger.
Bibliotheken[12]
• Eine Bibliothek bietet wiederverwendbare Funktionalität an, während ein Framework
wiederverwendbares Verhalten bereitstellt.
• Methoden von Bibliotheken werden durch den eigenen Code aufgerufen, während bei der Verwendung
von Frameworks der eigene Code durch das Framework aufgerufen wird.
• Frameworks bestehen aus Klassen und bieten Funktionalität in (teilweise) implementierten Methoden an.
Diese Methoden können im Weiteren die Funktionalität aus Bibliotheken beziehen.
2.2.4 Auswahl von Frameworks
Grundsätzlich ist es möglich, ein Framework selber zu bauen. Dies ist jedoch in der Regel nicht notwendig, da es
eine große Anzahl an bereits vorhandenen Frameworks gibt, die auf beinahe jedes Problem zugeschnitten werden
können. Um aus der großen Anzahl existierender Frameworks das Richtige auszuwählen, können die
verschiedenen Frameworks z. B. auf folgende Fragen[13] hin überprüft werden:
• Deckt das Framework die Anforderungen ab?
Je genauer die zu entwickelnde Anwendung beschrieben ist, desto treffsicherer kann ein Framework
ausgewählt werden.
• Wie sind die Wartung und die Weiterentwicklung gesichert?
Je weiter ein Framework verbreitet ist, desto geringer ist die Wahrscheinlichkeit, dass die
Weiterentwicklung und der entsprechende Support eingestellt wird. Außerdem ist davon auszugehen, dass
ein weit verbreitetes Framework fehlerfreier ist, da viele Entwickler damit arbeiten und die auftretenden
Probleme schnell gefunden und behoben werden.
• Ist das Framework kommerziell oder frei?
Beim Kauf von kommerziellen Frameworks wird meistens auch die Unterstützung der Herstellerfirma mit
eingekauft. Falls also Schwierigkeiten bei der Integration auftreten sollten, ist ein direkter
Ansprechpartner verfügbar. Außerdem können nicht erbrachte Leistungen eingeklagt werden. Bei freien
Frameworks steht die Software kostenfrei zur Verfügung, dafür müssen Support-Verträge extra
abgeschlossen werden.
2.2.3 Abgrenzung
6
Marktüberblick_GUI_Frameworks
Weitere Aspekte bei der Auswahl des richtigen Frameworks sind die Qualität der Dokumentation und die
Komplexität des Frameworks.
3 GUI-Historie
Für einen historischen Überblick über die Entwicklung der GUI-Frameworks muss die Entwicklung der
Betriebssysteme betrachtet werden. Die ersten GUI-Frameworks wurden entwickelt, um die Entwicklung von
Betriebssystemen zu vereinfachen und wiederkehrende Anforderungen an die Darstellung modular darstellen zu
können, um auf diese Art sich wiederholende Programmierarbeit einzusparen. Neben den genannten
Hauptpunkten gab es in der Historie noch andere Systeme mit, teils eigener, GUI, jedoch sind diese aufgrund der
Verbreitung und der Dauer des Bestehens am Markt zu vernachlässigen.
3.1 PARC Alto
Mit dem Alto brachte die Firma Xerox, heute PARC Inc.(Palo Alto Research Center), Mitte der 1970er Jahre, den
ersten Computer mit einem grafischen Interface auf den Markt. Der Alto sollte als Grundlage dienen, die
Möglichkeiten und das Potential von Computern als Desktop-Geschäftssysteme zu erforschen[14]. Mit der
Einführung des PARC Alto wurden viele heute als selbstverständlich geltende Innovationen eingeführt, wie
rechteckige Fenster, die Scrollbar oder der Pushbutton. Diese grafischen Bausteine sind in allen heute noch
gängigen Systemen und Frameworks integriert.
3.2 Apple LISA und Macintosh
Abbildung 2: Screenshot von Apple LISA[15]
Das erste System, welches von einer breiteren Öffentlichkeit registriert wurde, war der 1983 erschienene Apple
LISA (Local Integrated Software Architecture). LISA war gleichzeitig der erste Versuch von Apple unter
Nutzung eines eigenen, integrierten GUI die Nutzbarkeit eines Betriebssystems vollständig grafisch und
multitaskingfähig abzubilden[16]. Aufgrund des hohen Preises erzielte Apple mit LISA trotzdem nicht den
gewünschten Erfolg und kam als Reaktion bereits ein Jahr später mit dem wesentlich billigeren Apple Macintosh
auf den Markt, ohne jedoch an der Struktur von LISA große Änderungen vorgenommen zu haben. Jedoch war es
durch die Entwicklung von LISA zu einem größeren Erfahrungsschatz und zu einem günstigern
Produktionsprozess gekommen. Es gab binnen eines Jahres jedoch Weiterentwicklungen, die sich auch auf die
Hardware auswirkten. So wurde aufgrund des Vertrauens in die, durch die eigene GUI erstellte, grafische
Oberfläche in Verbindung mit der Bedienbarkeit durch die Maus, erstmals bei einem PC (Personal Computer) auf
die Pfeil-Cursor-Tasten verzichtet Codebausteine[17]. Nach den beiden Systemen wurde es aufgrund der
2.2.4 Auswahl von Frameworks
7
Marktüberblick_GUI_Frameworks
Marktführerschaft von Microsoft im Betriebssystembereich sehr ruhig um Apple, da hier der Fokus auf Hardware
und nicht auf Software gelegt wurde.
3.3 Windows
Im November 1985 kam Microsofts Reaktion auf Apples LISA. Die grafische Benutzeroberfläche Windows 1.0x
war eine Erweiterung zu DOS (Disk Operating System) und MS-DOS (Microsoft-DOS), welche mit einem CLI
arbeiteten und somit als weniger benutzerfreundlich als Apples LISA galten. Windows wurde mit Hilfe eines
eigens entwickelten GUI, welches in Alphazeiten Interface Manager genannt wurde und später nur noch interne
Arbeitstitel bekam, konzipiert und erstellt[18]. In den folgenden zwei Jahren kamen die beiden Nachfolgeversionen
2.0x und 3.0x, in denen weitere Programme wie Word oder Excel integriert waren. Trotz neuer Funktionen wurde
die grafische Entwicklung auch weiter vorangetrieben, wobei Microsoft lange auf externe Systeme verzichtete, da
über lange Zeit die absolute Marktführerschaft für sich beansprucht wurde. Erst in der zweiten Hälfte der 1990er
Jahre, als mit IBM OS/2 (Operating System/2), Linux und der Rückkehr von Apple in die
Betriebssystementwicklung, änderte Microsoft nach und nach die Geschäftspolitik und änderte die Entwicklung
dahingehend, nicht nur das System, sondern auch die Entwicklungstools, wenn auch sehr eingeschränkt, für
ausgesuchte Entwickler zur Verfügung zu stellen[19]. Mit der Markteinführung von Windows 95 Ende des Jahres
1995, welches erstmals ein eigenes Betriebssystem darstellte und nicht wie bisher eine reine Oberfläche, die noch
(MS-)DOS benötigt, wurden alte Marktanteile zurückerobert und die Stellung als Marktprimus und
?Beinahe-Monopolist? wieder gestärkt[18].
3.4 OS/2
OS/2 war Mitte der 1990er Jahre der Versuch von IBM, sich am Markt gegen Windows behaupten zu können. Es
gab eine kurze, jedoch massive Markteinführung, in der IBM alle seine Rechner mit OS/2, anstatt wie bisher mit
DOS und optionalem Windows ausstattete. Jedoch haben viele Kunden sich nach Alternativen mit Windows
umgesehen oder Windows nachträglich installiert. Das technisch auf DOS, Xerox PARC und einer internen
Weiterentwicklung basierende System verschwand nach der Markteinführung von Windows 95 fast vom Markt
und fristete in den Folgejahren ein Schattendasein, was dazu führte, dass die Entwicklung der internen GUI
eingestellt wurde[18].
3.5 UNIX, Minix, Linux
Seit den 1960er Jahren wird UNIX (Uniplexed Information and Computing Service) stetig weiterentwickelt und
hat im Lauf der Zeit auch grafische Oberflächen bekommen. Aufgrund der Vielfalt von UNIX-Systemen kann nur
eine geringe Auswahl genannt werden. Da UNIX weniger im PC-Bereich als vielmehr in Großrechnerbereichen
seinen Haupteinsatzpunkt hat, fand die Entwicklung von grafischen Oberflächen hier etwas schleppender statt, da
das Hauptaugenmerk im Großrechnerbereich auf speziellen Einsatzbereichen und Funktionalitäten liegt. Das auf
UNIX basierende, 1987 von Andrew S. Tanenbaum vorgestellte System Minix, wurde als UNIX-Klon entwickelt,
da UNIX ab diesem Jahr nicht mehr kostenfrei für die Lehre an Universitäten zur Verfügung stand. Minix ist zwar
eher als UNIX für den privaten Einsatz konzipiert, jedoch verzichtet das primär in C programmierte System auch
weitgehend auf grafische Umgebungen und den Einsatz einer GUI. Jedoch ist Minix als Grundlage für Linux ein
wichtiger Meilenstein für die Entwicklung von GUIs. 1991 wurde von Linus Tovalds das System Linux
vorgestellt. Linux entstand auf der Grundlage von Minix, hat aber den elementaren Unterschied, dass es nie als
geschlossenes System konzipiert war, sondern lediglich einen Kern mitsamt Quelltext zur Verfügung stellt, auf
dessen Grundlage jeder Programmierer das System für sich individuell anpassen und weiterentwickeln kann.
Dieser Kern, der Kernel, beinhaltet eine Reihe von Schnittstellen, an denen GUIs angebunden und verwendet
3.2 Apple LISA und Macintosh
8
Marktüberblick_GUI_Frameworks
werden können. Die bis heute gängigste Oberflächenschnittstelle ist X-Window, jedoch sind durch die
Modularität des Systems auch Eigenentwicklungen möglich[20].
4 Marktüberblick
In diesem Kapitel wird nun ein Überblick über existierende Frameworks, die zur GUI-Entwicklung eingesetzt
werden, gegeben. Zur besseren Übersicht werden die Frameworks nach Betriebssystemen aufgeteilt dargestellt
und kurz auf die wichtigsten Eigenschaften eingegangen.
4.1 Windows
Die meisten Frameworks für Windows werden in C geschrieben. ?Da Windows selbst überwiegend in C
geschrieben ist, liefert diese Programmiersprache[?] die beste Performance und biete die größtmögliche
Flexibilität.?[21]
4.1.1 WPF (Windows Presentation Foundation)
WPF, das sich aus dem Framework Avalon[22] entwickelt hat, ist Teil des Microsoft .NET Frameworks und bietet
vielfältige Möglichkeiten, GUI effizient zu erstellen. Es gilt als Nachfolger von Windows Forms (welches nicht
mehr weiterentwickelt wird, aber ebenfalls Bestandteil des .NET-Frameworks ist), da es erweiterte
Funktionalitäten(wie z. B. erweiterbare Steuerelemente) bietet. WPF arbeitet mit XAML (Extensible Application
Markup Language), welches ein erweitertes XML-Format (Extensible Markup Language-Format) ist und eine
?deklarative Programmierung?[23] ermöglicht. Mit Hilfe von XAML können die Steuerelemente der GUI platziert
und angeordnet sowie das Aussehen angepasst werden. Mit der Einführung von XAML wurde es den Entwicklern
erleichtert, das ?Design von der Logik zu trennen?[24]. Der Code, der für die Logik eingesetzt wird, wird
hauptsächlich mit C# und VB.NET erstellt. Es gibt inzwischen ebenfalls eine XAML Variante für Java. Das
eFace Presentation Framework hat eine, nach eigenen Angaben, kompatible Plattform zu WPF und XAML
entwickelt, allerdings aus 100 % Java[25]. WPF kann nicht nur für die Entwicklung von Windows-Anwendungen
sondern auch für Browseranwendungen eingesetzt werden[26].
4.1.2 MFC (Microsoft Foundation Classes)
Die MFC sind Teil von Entwicklungsumgebungen wie Microsoft Visual C++ und erleichtern die Entwicklung
von GUI-Anwendungen für Windows mit C++. Sie wurde 1992 von Microsoft geschaffen, um die Windows-API
zu kapseln. Neben dem Support, den Microsoft bietet, gibt es auch einige Foren, in denen auftretende Fragen
besprochen werden können. Ebenso stehen Tutorials[27] sowie eine ausführliche Dokumentation zur Verfügung.
Der Leistungsumfang von MFC hat sich immer mehr erweitert und bietet neben der GUI-Entwicklung
mittlerweile unter anderem auch die Möglichkeit, auf Datenbanken oder das Internet zuzugreifen. Die MFC
tragen dazu bei, ?Programme, zumindest zwischen verschiedenen Windows-Versionen, portabel zu halten und
komplexe Windows-Technologien wie ActiveX oder OLE einfach verwenden zu können.?[28] In MFC wird die
ungarische Notation für die Variablenbenennung verwendet. Da die Einarbeitung in die MFC jedoch sehr
aufwendig ist (Kruglinski et. al. geben einen Zeitraum von mindestens sechs Monaten an[29]) und mittlerweile
einfacher zu handhabende Frameworks auf dem Markt sind, werden sie nach und nach durch die neueren
Frameworks ersetzt werden.
3.5 UNIX, Minix, Linux
9
Marktüberblick_GUI_Frameworks
4.1.3 WTL (Windows Template Library)
WTL ist ein C++ Framework für die GUI-Entwicklung unter Windows. Es basiert auf der ATL(Active Template
Library)[30] und war als schlanke Alternative zu MFC gedacht. Im Gegensatz zu ATL und MFC ist WTL seit
2004 unter der Microsoft Permissive License verfügbar und somit ein Shared-Source-Projekt (erlaubt es, Code
anzuschauen, ihn zu verändern und für kommerzielle ebenso wie für nicht-kommerzielle Zwecke einzusetzen)[31].
Es existiert eine inoffizielle WTL Dokumentation[32], die hauptsächlich von den Entwicklern gepflegt wird. Von
Microsoft selber gibt es für WTL keinen Support, sondern nur ein Verweis auf eine Liste von Entwicklern, die
mit WTL arbeiten[33].
4.1.4 VCF (Visual Component Framework)
Das VCF ist ein Open-Source Framework, das unter anderem zur GUI-Programmierung mit C++ eingesetzt wird.
Ursprünglich wurde es für Windows konzipiert, ist aber mittlerweile auch für Mac OS X einsetzbar. Es wird unter
der BSD-Lizenz (Berkeley Software Distribution) vertrieben (enthält also kein Copyleft und kann frei verwendet,
verändert und verarbeitet werden) und beinhaltet drei wesentliche Bibliotheken. Bei der GUI-Entwicklung kommt
hauptsächlich das ApplicationKit zum Einsatz, da hier alle Elemente enthalten sind, die zur direkten Verwendung
bei der GUI-Entwicklung benutzt werden (z. B. Knöpfe oder Menüs). Es steht eine Dokumentation zur Verfügung
sowie zur Unterstützung ein Forum und ein Blog, die jedoch beide wenig genutzt werden.
4.1.5 Smartwin++
Smartwin++ basiert auf C++ und unterliegt der BSD-Lizenz. Es wurde ursprünglich nur für Windows konzipiert
und verfolgte das Ziel, die MFC und WTL zu ersetzen[34]. Mittlerweile ist es aber mit Hilfe von Wine auch für
Linux nutzbar, jedoch unvollständig. Trotz dass Smartwin++ seit dem 2.0 RC2 Release von 2006 scheinbar nicht
weiterentwickelt wurde, ist der Support sowohl durch das Forum als auch durch FAQs, Mailinglisten und
Tutorials noch vorhanden.
4.2 Mac OS
Insgesamt gibt es speziell für Mac OS vier Frameworks. Da MacApp (bis 2001) und MacZoop (bis 2008) jedoch
nicht weiterentwickelt werden, werden hier nur das Cocoa-Framework sowie PowerPlant vorgestellt.
4.2.1 Cocoa
Das Cocoa-Framework ist für die GUI-Programmierung unter MAC OS konzipiert und verwendet die
Programmiersprache Objective-C, die im Gegensatz zu C eine objektorientierte Programmierung ermöglicht. Es
besteht aus zwei grundlegenden Komponenten: Der Foundation und dem ApplicationKit[35]. Das Foundation
Framework bildet die Grundlage für die Programmierung. Zum einen sind hier grundlegende Datenstrukturen wie
Arrays oder Zeichenketten hinterlegt, zum anderen regelt Foundation z. B. das Anlegen und Freigeben von
Objekten, also die Speicherveraltung und Objektoperationen. Das ApplicationKit hingegen übernimmt alle
Aufgaben, die für die Generierung der GUI notwendig sind. Hier sind GUI-Elemente (z. B. Fenster, Knöpfe,
Menüs) sowie Techniken (Reaktionsmöglichkeiten auf Aktionen des Benutzers) hinterlegt. Die eigentliche
Entwicklung der GUI erfolgt im Interface Builder. Da das Framework mit dem MVC-Pattern
(Model-View-Controller) arbeitet, wird zur eigentlichen GUI-Programmierung kein Code benötigt[36]. Die
Erstellung der GUI erfolgt vielmehr durch platzieren der Elemente im Fenster. Die anschließende
4.1.3 WTL (Windows Template Library)
10
Marktüberblick_GUI_Frameworks
Programmierung der Aktionen erfolgt objektorientiert und geht immer von der Klasse NS-Objekt aus.
Um Cocoa auch in Verbindung mit anderen Sprachen zu nutzen, gibt es verschiedene Schnittstellen, die eine
eingeschränkte Programmierung ermöglichen. Apple stellt hierfür verschiedene Bridges zur Verfügung (z. B.
PyObjC für Python oder PerolObjBridge für Perl). Die Java-Cocoa-Bridge wurde 2005 als nicht mehr unterstützt
gekennzeichnet[37]. Um also unter Mac OS mit Java zu programmieren, sollte auf plattformunabhängige
Frameworks zurückgegriffen werden.
4.2.2 PowerPlant
PowerPlant ist ein Open-Source Framework von freescale, das unter anderem die GUI-Programmierung unter
Mac OS ermöglicht. Es ist ein C++ Framework, das unter der BSD-Lizenz erworben und frei verwendet werden
kann. Ein Tool des Frameworks ist Constructor. Dieses ermöglicht die Erstellung von Fenstern mit grafischen
Elementen sowie deren Platzierung und das entsprechende Eventhandling[38]. Freescale bietet einen umfassenden
Support sowie eine kostenlose Einführung in das Framework und gibt an, dass PowerPlant seit mehreren Jahren
genutzt wird und daher stabil und den Erwartungen entsprechend arbeitet.
4.3 Linux (& UNIX)
Im Gegensatz zu Windows oder Mac OS ist Linux kein in sich geschlossenes System. Linux verfügt lediglich
über einen gemeinsamen Kernel als Systembasis. Es verfügt einheitlich nur über die gängigsten
Grundoperationen, die benötigt werden, um ein minimales Betriebssystem lauffähig zu machen. Hier ist noch
keine grafische Oberfläche integriert, jedoch werden alle Linux-Distributionen mit einem, über den Kernel
hinausgehenden, Funktionsumfang bereitgestellt. Weitere Gegebenheiten des Systems sind immer von den
individuellen Schnittstellen der jeweiligen Distribution sowie deren Aufbau abhängig[39].
Linux-Entwickler greifen in der Praxis häufig auf plattformunabhängige GUI-Frameworks zurück, da es auf
diesem Weg einfacher ist, die Programme unter den verschiedenen Oberflächen zu betreiben. Daher ist die
Auswahl von GUI-Frameworks, die speziell für Linux entwickelt wurden, sehr gering, da durch
plattformunabhängige Frameworks auch die verschiedenen Linux-Distributionen über die individuellen
Schnittstellen bedient werden. Aufgrund der in größten Teilen der Systemarchitektur gleichen Systembibliotheken
sind die Umsetzungen in UNIX annähernd identisch, daher wird UNIX in der Folge nicht weiter explizit
aufgeführt.
4.3.1 X-Window
4.2.1 Cocoa
11
Marktüberblick_GUI_Frameworks
Abbildung 3: Möglichkeit einer X-Window-Struktur[40]
X-Window ist zwar plattformunabhängig und netzwerktransparent, spielt aber besonders im Linux-Bereich eine
wichtige Rolle in der Systemarchitektur. Das X-Window-System ist ein zentrales Grafiksystem, welches
ursprünglich für UNIX entwickelt wurde, aber für jedes aktuell gängige System verfügbar ist[41]. Speziell im
Linux-Bereich basiert annähernd jede grafische Darstellung im Hintergrund auf der Grundlage von X-Window,
jedoch kommen, je nach Aufbau der genutzten Grafikoberfläche, verschiedene Frameworks zum Einsatz. Das
1984 am MIT (Massachusetts Institute of Technology) entwickelte, aktuell in Version X11 erhältliche X-Window
wurde im Xerox PARC zur Verwendung von alphanumerischen Menüs und Fenstern, das GUI,
weiterentwickelt[42]. X-Windows basiert auf der Bibliothek xlib, die mehrere hundert Druckseiten groß ist und in
C geschrieben ist[43]. Da die xlib sehr komplex ist, wird von vielen Programmierern empfohlen die Schnittstellen
der xlib über übersichtlichere und überschaubarere Toolkits wie GTK+, Qt, etc. anzusteuern. X-Window ist
jedoch nicht nur ein GUI, sondern steuert auch das Netzwerk und die elementaren Rechner-Komponenten und ist,
auch auf einzelnen Rechnern, als Client-Server-Umgebungen ausgelegt[41]. Es gibt viele Möglichkeiten die
Architektur von X-Window darzustellen, eine exemplarische Möglichkeit ist in der nebenstehenden Abbildung 3
zu sehen.
4.3.2 Motif
Abbildung 4: Layers of a X program[44]
X(-Window) ermöglicht zwar die Schnittstellen für eine grafische Programmierung, jedoch wird häufig auf Motif
zurückgegriffen, um diese Schnittstelle benutzerfreundlicher anzusprechen. Motif ist eine auf X und die xlib
aufsetzende Umgebung, die für alle Betriebssysteme im X-Window-Bereich Anwendung finden kann, jedoch im
Speziellen im Linux- und UNIX-Bereich sehr verbreitet ist[45]. Da X auf einem sehr tiefen Programmlevel ansetzt,
ist es zwar sehr übersichtlich in der Programmierung, wird aber durch die große Menge an benötigtem Code sehr
unübersichtlich und komplex. An dieser Stelle setzt Motif an, um komplexe X-Codes in einer Umgebung
4.3.1 X-Window
12
Marktüberblick_GUI_Frameworks
zusammenzufassen und als Framework zur Verfügung zu stellen[46]. In der rechts aufgeführten Abbildung 4 sind
die Ebenen eines X-Programms mit der Verwendung von Motif skizziert.
Die elementar in Motif verwendete Sprache ist C, jedoch kann je nach Applikation, welche in Motif realisiert
wird, auch auf Bibliotheken anderer Sprachen zurückgegriffen werden. Insbesondere der objektorientierte Ansatz
findet durch die Verwendung von C++ in einem großen Teil der Applikationen Anwendung. Durch die große
Anzahl der Nutzer verschiedenster Open-Source-Plattformen werden ständig neue Bibliotheken erstellt, mit denen
das Framework individuell erweitert werden kann. An den Grundlagen von Motif hat sich, seit im Jahr 1992 X11
veröffentlicht wurde, nicht viel verändert[47]. Die Erweiterungen von Motif um weitere Funktionen heißen
Widgets, Gadgets oder Conventions. Die Programmierung in Motif kann in drei Bereiche unterteilt werden:
Toolkit, Window Manager und UIL (User Interface Language)[48].
4.3.3 Desktop-Umgebungen
Das Linuxsystem ist so aufgebaut, dass es keine einheitliche grafische Benutzeroberfläche gibt. Je nach
Distribution enthält das Gesamtpaket Linux eine andere Desktop-Umgebung. Diese Oberflächen müssen aber
nicht zwingend Bestandteil einer Distribution sein, sondern können auch einzeln in das System integriert werden.
Für die Desktop-Umgebungen gibt es verschiedene Lizenz-Modelle, jedoch haben sich am breiten Markt immer
die frei verfügbaren Systeme durchgesetzt. Die kostenpflichtigen Desktop-Umgebungen sind in der Regel für
bestimmte Aufgaben konzipiert und sprechen daher nicht die breite Masse der User an, sondern haben eher eine
Ausrichtung für ein bestimmtes Einsatzfeld[49]. X-Window ist nicht als Desktop-Umgebung zu verstehen, da es
sich hier um einen unteren Level der System-Umgebung handelt, in dem lediglich Systembefehle und
-möglichkeiten abgebildet werden. Eine Desktop-Umgebung hingegen bietet eine grafische Bedienbarkeit für alle
Elemente der Installation, inklusive der zusätzlich installierten Programme und Applikationen. Des Weiteren sind
im Installationsumfang von Desktop-Umgebungen Standardprogramme wie Texteditoren, Dateimanager oder
kleinere Multimedia-Anwendungen zu finden.
Die Desktopumgebung selbst setzt nicht zwingend voraus, dass es eine eigenes GUI-Framework gibt, da sie in
anderen Frameworks entwickelt werden können, jedoch ist es in der Praxis so, dass insbesondere die komplexen,
verbreiteten Desktop-Umgebungen über eigene Frameworks und/oder Schnittstellen zu den komplexeren
Frameworks, sowie eigene Programmiertools bzw. Compiler verfügen. Daher erfolgt an dieser Stelle eine
Betrachtung von Gnome, KDE und Xfce, die sich am breiten Markt etabliert haben.
4.3.3.1 Gnome
Gnome ist Teil des GNU-Projekts und somit unter der GPL (GNU General Public License) frei zugänglich.
Neben der Entwickler-Homepage[50] mit den zahlreichen Dokumentationen und Foren, gibt es im übrigen www
(world wide web) unzählige Communities, die sich mit der Weiterentwicklung und privatem Support von Gnome
beschäftigen. Gnome ist so konzipiert, das sich grundlegende Bedienelemente denen von Windows ähneln, so
dass Usern, die von Windows auf Linux mit Gnome umsteigen wollen, der Einstieg möglichst leicht fällt. Als
Dateimanager liefert Gnome das Tool Nautilus mit. Gnome ist aktuell unter anderem die Standard-Desktop
Umgebung in der Linux-Distribution Ubuntu[51].
Die Entwicklung von und für Gnome wird durch die Nutzung von Motif vereinfacht. Inzwischen hat sich GTK+
(GIMP Toolkit) als Framework für die Gnome-Entwicklung etabliert[52]. Es werden aber auch eigene
Bibliotheken geliefert, die GTK+, oder anderes Framework, soweit genutzt, um die optischen Eigenschaften der
jeweiligen Version von Gnome zu ergänzen. Gnome ist also kein eigenständiges Framework, jedoch sollte man
Gnome und dessen Bibliotheken verwenden, um für Gnome zu programmieren.
4.3.2 Motif
13
Marktüberblick_GUI_Frameworks
4.3.3.2 KDE
KDE steht unter GPL und ist frei verfügbar. Es handelt sich um ein offenes Projekt, welches auf der offiziellen
Hompage[53], neben den Downloads des Systems und der Dokumentation, eine Community und eine
Entwicklerplattform bietet. KDE hat einen ähnlichen Installationsumfang und bietet einen vergleichbaren
Funktionsumfang wie Gnome. Auch hier gibt es bei den zentralen Bedienelementen eine gewollte Ähnlichkeit zu
Windows und sogar optisch lässt sich KDE durch das Theme ?Redmond? sehr an Windows angleichen. Nicht
zuletzt deswegen ist KDE bei Umsteigern ein sehr beliebtes System und gehört unter anderem zu der
Linux-Distribution SuSe, die als sehr anfängerfreundlich gilt.
KDE setzt neben den eigenen Bibliotheken für die Entwicklung von KDE-Programmen auf das Framework Qt. Qt
ist allerdings keine Pflicht für die Entwicklung für KDE, welches in C programmierbar ist und auch ausreichend
viele eigene Bibliotheken liefert. So kann der Entwickler auch auf andere Frameworks und Schnittstellen
zugreifen, jedoch ist Qt laut der meisten Programmierer die beste Grundlage[54]. Im www sind in der großen
Auswahl der Communities auch kleine Sub-Projekte zu finden, in denen fertige Schnittstellen zu anderen
Frameworks oder sogar neue Frameworks für Einzelkomponenten verfügbar sind. Diese finden im Vergleich zu
den meistgenutzten Frameworks (wie Qt) in der breiten Masse der Programmierer keine große Beachtung.
4.3.3.3 Xfce
Xfce besitzt viele Analogitäten zu Gnome und steht unter GPL. Das Projekt, welches ebenfalls über eine offizielle
Homepage[55] mit Entwicklerplattform und diversen Communities geführt wird, ist im Vergleich zu Gnome oder
auch KDE verhältnismäßig klein. Jedoch steigt die Zahl der User stetig, da Xfce einen geringeren Umfang bietet
und gerade fortgeschrittene User dies bevorzugen, da sie so das System individueller gestalten können.
Xfce verfügt über wenige eigene Bibliotheken, aber die wenigen sind für die individuelle Gestaltung der
Oberfläche elementar, da sie den größten optischen Unterschied zu Gnome bilden. Ansonsten kann sich der
Xfce-Entwickler auch an den Bibliotheken von Gnome bedienen. Als meistgenutztes Standard-Framework für die
Xfce-Entwicklung wird in der Literatur meistens GTK+ genannt[56]. Die Intention der Xfce-Programmierer ist es,
das System klein und einfach zu halten, daher werden viele Eigenschaften und Bibliotheken aus Gnome
übernommen. Es soll kein Gegenentwurf zu Gnome sein, sondern eine Alternative für leistungsschwächere Geräte
wie alte Rechner, Netbooks oder mobile Endgeräte. Daher ist Xfce in keiner großen Linux-Distribution zu finden,
sondern lediglich als Alternative, in Spezialdistributionen wie Xubuntu[57] oder als einzelnes Paket, welches in
einer anderen Version nachinstalliert werden kann, erhältlich.
4.4 plattformunabhängige Frameworks
Neben den Frameworks, die speziell für einzelne Betriebssysteme ausgelegt sind, gibt es auch welche, die für eine
vollständig vom System unabhängige GUI-Programmierung ausgelegt sind. Hier handelt es sich um Frameworks,
die in verschiedenen Systemen compilierbaren Code erzeugen. Voraussetzung hierfür ist, dass die verwendete
Programmiersprache in vielen Systemen compilierbar und interpretierbar ist. Die Bibliotheken sind unabhängig
vom System gleich und können in gleicher Version verwendet werden. In der Regel wird dies dadurch erreicht,
dass das GUI einheitlich aufgebaut ist und mit den Bibliotheken Schnittstellen zu mehreren Betriebssystemen
verfügbar sind. Daher ist hier eine Aufteilung nach den verschiedenen Programmiersprachen für einen Überblick
der GUI-Frameworks zum Ziel führend.
4.3.3.2 KDE
14
Marktüberblick_GUI_Frameworks
4.4.1 C und C++
Der größte Teil der aktuell in der Praxis, Literatur und Internet zu findenden Frameworks basiert auf C und C++.
Dies resultiert aus der Historie der Betriebssystementwicklung, da in den 1980er Jahren, dem Anfang der
grafischen Betriebssysteme, C und C++ die in diesem Bereich führenden Sprachen waren. In der Folge wurden
die Frameworks häufig weiter- anstatt neuentwickelt.
4.4.1.1 Qt
Das Qt-Framework(Quasar toolkit), das von dem norwegischen Softwareunternehmen Trolltech(ehemals Quasar
Technologies) 1992 entwickelt wurde, beinhaltet neben den GUI-Komponenten auch Bibliotheken aus den
Bereichen Netzwerk, Datenbanken, Multithreading und vieles mehr[58]. Seit Version 4.5 ist auch ein
Entwicklungsframework namens QtCreator erhältlich, welches den Einsteig in Qt deutlich vereinfacht. Qt ist ein
plattformübergreifendes C++ Framework, das unter verschiedenen Lizenzen erhältlich ist. Zum einen gibt es Qt in
einer freien GPL-Version (GNU General Public License) und zum anderen unter einer kommerziellen Lizenz.
Nach der Übernahme von Trolltech durch Nokia 2008 wird Qt auch unter der LGPL (GNU Lesser General Public
License) veröffentlicht (ab Version 4.5). Je nach gewählter Lizenz wird der Support gestaltet. Standardmäßig
werden eine ausführliche Dokumentation sowie verschiedene Foren angeboten. Zusätzliche Dienste wie Email
mit zugesicherter Antwortzeit oder Schulungen zum Einstieg können hinzugekauft werden. Nokia bietet hier
verschiedene Support-Pakete an. Da Qt sehr verbreitet ist, gibt es neben den offiziellen Möglichkeiten auch
unabhängige Foren, in denen sich die Benutzer gegenseitig helfen. Qt verwendet zwar die Programmiersprache
C++, aber es existieren auch Anbindungen für C, C#, Java, Perl und andere Sprachen, die jedoch nicht direkt vom
Hersteller gepflegt werden. Neben diesen Sprachanbindungen existiert auch ein Framework, das es ermöglicht,
MFC-Programme zu Qt zu portieren[59].
4.4.1.2 GTK+
GTK+ ist ein C Framework unter LGPL-Lizenz, welches aber mit GTKmm auch ein C++ Interface anbietet.
Daneben existieren auch Bindings für weitere Programmiersprachen wie Ruby, PHP, Perl, Pyhton uvm.
Ursprünglich wurde es als Alternative zu Motif für den Gnome Desktop entwickelt und setzt auf X-Window mit
seiner Bibliothek xlib auf. Mittlerweile ist GTK+ aber auch für Windows und Mac OSX erhältlich und bietet
umfassende Schnittstellen, um Programmcode in neue Umgebungen einbinden zu können, solange die
Umgebungen die verwendeten Sprachen interpretieren können.
Die primär von GTK+ genutzte Bibliothek ist die glib[60], die Schnittstellen für Windows, Mac OS, Linux/UNIX,
aber auch Betriebssysteme für mobile Geräte, wie Android oder BADA, bietet und somit multifunktionell
einsetzbar ist. Ziel der Entwickler ist es, GTK+ als universelles Framework zu integrieren, welches für die Nutzer
frei verfügbar ist. Mit der Erweiterung GDK (GIMP Drawing Kit) ist es den Programmierern möglich, im
Grafikprogramm GIMP, welches unter GPL lizenziert ist, Designs zu erstellen, die in GTK+ eingebunden werden
können[61]. Das primäre Einsatzfeld von GTK+ ist, auch historisch bedingt, die Linux-/UNIX-Umgebung und dort
am häufigsten in der Praxis und Literatur zu finden, aber durch stetige Weiterentwicklungen der großen
Entwickler-Community im www findet GTK+ zunehmend auch in anderen Systemarchitekturen seinen Platz.
4.4.1.3 wxWidgets
WxWidgets, ehemals bekannt als wxWindows, ist ein plattformunabhängiges C++ Framework, das zur
Entwicklung von Anwendungen mit GUI angewendet wird[62]. Die wxWidgets-Lizenz ist LGPL, jedoch leicht
modifiziert, so dass die freie Verwendung und der weitere Vertrieb unter derselben Lizenz erfolgt. Es gibt
4.4.1 C und C++
15
Marktüberblick_GUI_Frameworks
verschiedene Bindings, die das Programmieren auch mit anderen Sprachen ermöglicht (z. B. Python, Perl, Java
oder Ruby). Entwickelt wurde wxWidgets 1992 von Julian Smart an der Universität Edingburgh. Die
Dokumentation zu diesem Framework ist sehr umfangreich und es werden viele Beispiele und Tutorials
angeboten, die den Einstieg und die Handhabung erleichtern. Ergänzend hierzu werden Mailinglisten, ein
wxBlog[63] und ein eigenes Wiki[64] angeboten. WxWidgets bietet eine eigene Entwicklungsumgebung
(Code::Blocks) und ist sehr verbreitet. Die Community ist sehr groß und so ist die Weiterentwicklung des
Frameworks sichergestellt. WxWidgets verwendet das native Look and Feel des Betriebssystems. Als Kritikpunkt
wird oft angegeben, dass das System dem MFC sehr ähnlich wirkt, jedoch lässt die kostenlose (auch
kommerzielle) Nutzung diesen Punkt in den Hintergrund rücken.
4.4.1.4 FLTK (Fast Light Tool Kit )
FLTK ist ein in C++ geschriebenes GUI-Framework, das unter der LGPL-Lizenz für verschiedene Plattformen
erhältlich ist. Im Gegensatz zu Qt oder wxWidgets enthält FLTK nur Klassen zur GUI-Erstellung, während
Netzwerk-Kommunikation oder ähnliches nicht vorhanden ist. Dadurch ist FLTK, wie der Name schon vermuten
lässt, sehr kompakt und schnell[65]. Mit Hilfe des integrierten UI-Builders FLUID ist eine einfache Erstellung von
Oberflächen möglich. Es steht eine ausführliche Dokumentation sowie Tutorials zur Verfügung und auch der
Support ist unter anderem durch ein Forum gewährleistet[66]. FLTK ist "relativ einfach [und] einigermaßen
verbreitet."[67]
4.4.1.5 FOX
Der Name FOX steht für Free Objects for X. Es ist ein GUI-Framework, das ursprünglich für LINUX entwickelt
wurde, mittlerweile aber auch für andere Plattformen genutzt werden kann. Auch FOX basiert auf C++ und ist
unter der LGPL-Lizenz erhältlich. Einige Tutorials und die Dokumentation werden zur Verfügung gestellt. Trotz
der geringen Verbreitung wird ein Support durch Mailinglisten und Foren gewährleistet[68].
4.4.1.6 Ultimate++
Ultimate++ ist ein C++ Framework, das plattformunabhängig die GUI-Entwicklung ermöglicht. Neben dem
GUI-Builder beinhaltet Ultimate++ auch eine eigene IDE, die ebenfalls unter der BSD-Lizenz vertrieben und
somit kostenlos zum Download verfügbar ist. Durch das betrieben Forum ist der Support sichergestellt. Ebenso
werden eine kurze Dokumentation sowie Tutorials zur Verfügung gestellt[69]. Der durch Ultimate++ generierte
Code ist häufig kompakter als der von anderen Frameworks[70]. Allerdings ist dieses Framework nicht weit
verbreitet, was dazu führen könnte, dass die Weiterentwicklung nicht fortgesetzt wird.
4.4.1.7 Tk (ToolKit)
Tk ist ein plattformunabhängiges Framework zur Programmierung von GUIs, das für Tcl (Tool command
language) entwickelt wurde. Neben Tcl können auch andere Programmiersprachen verwendet werden, da es
Bindings für z. B. Ruby, C, Perl oder Python gibt. Es wird unter einer Lizenz angeboten, die der BSD-Lizenz
ähnelt[71]. Dadurch, dass Tk als Open-Source-Projekt behandelt wird, wird es von vielen Anwendern
weiterentwickelt. Dem Benutzer stehen verschiedene Supportmöglichkeiten zur Verfügung. Zum einen gibt es
kommerziellen Support durch Anbieter wie z. B. ActiveState[72], die den Anwender auch beim Einstieg in dieses
Framework unterstützen, zum anderen werden diverse Community-Tools wie ein Wiki[73], Mailing-Listen oder
ein Chat zur Verfügung gestellt. Außerdem existiert eine Dokumentation[74]. Des Weiteren gibt es auch
Fachliteratur[75], die dabei hilft, Tk zu erlernen und anzuwenden.
4.4.1.3 wxWidgets
16
Marktüberblick_GUI_Frameworks
4.4.1.8 Clutter
Clutter ist ein GUI-Framework, das sowohl für Windows als auch für Linux und Mac OS X konzipiert wurde. Es
wird unter der LGPL-Lizenz vertrieben und wird von Intel unterstützt[76]. Clutter wurde in C entwickelt, es
existieren aber diverse Bindings, die das Benutzen anderer Programmiersprachen ermöglicht. Der Support wird
unter anderem durch Mailinglisten, Twitter, Chat, Wiki und eine Dokumentation sichergestellt. Auch Beispiele
und Tutorials werden zur Verfügung gestellt. Clutter ist ein recht neues Framework, das momentan in der Version
1.6.0 angeboten wird.
4.4.2 Weitere Programmiersprachen
Neben der Programmierung mit C oder C++ kann eine GUI auch mit anderen Sprachen erstellt werden, von denen
zwei exemplarisch dargestellt werden.
4.4.2.1 Java
Für die GUI-Programmierung stellt Java die JCF zur Verfügung, die aus mehreren Paketen bestehen[77], von
denen unter anderen AWT (Abstract Windowing Toolkit) und SWING zur Erstellung einer GUI verwendet
werden.
AWT
Das AWT ist eine Klassenbibliothek zur Entwicklung von GUIs. Da Java-Programme plattformübergreifend
agieren, sind im AWT nur Komponenten integriert, die alle Plattformen unterstützen. Der Vorteil von AWT liegt
darin, dass die erstellten Anwendungen auf jedem Rechner so wie die anderen Programme aussehen. Allerdings
ist AWT vom Umfang her sehr klein, so dass ?eine professionelle Oberfläche nur mit Mühe erstellbar ist?.[78]
SWING
Swing ist ein Framework, das teilweise auf AWT aufsetzt und ?dessen Funktionalitäten deutlich erweitert?[79]. Im
Gegensatz zu AWT[80]
• bietet Swing mehr Komponenten.
• arbeitet Swing nach dem MVC-Prinzip.
• können Swing-Komponenten transparent, beliebig geformt und mit Rahmen versehen werden.
• sind Swing-Klassen 100% in Java programmiert.
Mit Swing ist es möglich, das Look and Feel einer Anwendung unabhängig von der Plattform zu gestalten.
Neben Swing und AWT existieren verschiedenen Anbindungen für Java an andere Frameworks. Wie bereits im
Abschnitt 4.1.1 erwähnt, bietet eFace die Möglichkeit, WPF auch mit der Programmiersprache Java zu nutzen.
Außerdem existiert mit wx4j eine Anbindung an wxWidgets, java-gnome bietet eine Anbindung an GTK und mit
Tcl/Java ist eine Anbindung das Tk möglich. Auch das Framework Qt ist in einer Java-Version erhältlich, die sich
Qt Jambi nennt. Diese wird jedoch nicht mehr vom Hersteller weiterentwickelt[81].
4.4.2.2 Python
Für Python existieren verschiedene Anbindungen, die es ermöglichen, schon existierende Frameworks auch mit
dieser Programmiersprache zu nutzen.
Tkinter ist eine Anbindung für Tk, die standardmäßig bei Python mitgeliefert wird und daher das am meisten
4.4.1.8 Clutter
17
Marktüberblick_GUI_Frameworks
verwendete Framework ist. PyGTK ist eine Anbindung, mit der GTK+ in Python-Programme eingebunden
werden kann. Es muss vor der Verwendung installiert werden, bietet aber eine einfache und stabile
GUI-Entwicklung. wxPython ist ein Wrapper für wxWidgets, der ebenfalls vor der Verwendung installiert
werden muss. Es ist auf allen Plattformen verfügbar, allerdings ist die Programmierung aufwendiger als z. B. bei
Tkinter. PyQt und PySide sind die Python-Anbindung an Qt. PyQt ist entweder kommerziell oder über GPL
erhältlich. PySide hingegen ist von Nokia selber entworfen und wird über LGPL vertrieben. PyObjC ist eine
Anbindung von Apple an das Cocoa-Framework. PyFLTK ist eine Anbindung an FLTK, die allerdings nicht weit
verbreitet ist. Mit PythonWin besteht die Möglichkeit, MFC in Python zu nutzen. Allerdings ist PythonWin nur
für Windows kompatibel.
Nicht mehr weiterentwickelt wird seit 2002 FXPy als Anbindung an FOX.
Es ist außerdem möglich, Python in andere Programmiersprachen zu implementieren. Z. B. erfolgt die
Implementierung für die .NET-Plattform mithilfe von IronPython, während Jython für Java benutzt wird.
4.4.2.3 Flash
Speziell im Bereich der mobilen Endgeräte gibt es inzwischen einzelne Systemkomponenten, die auf Flash
basieren. Daher gibt es auch Framework-Ansätze in Flash, mit denen die Entwicklung einer Flash GUI
vereinfacht werden soll. Die Komponenten sind in Flash integriert und als geschlossenes System zu sehen. In der
aktuellen Literatur finden sich viele einfache Programmbeispiele[82], die zeigen, dass die Entwicklung bei Flash
auch in Richtung komplexer Frameworks gehen wird.
Aktuelle Flash-basierte GUIs dienen primär der Erstellung von Bildschirmeingaben (Screen Readers) im Rahmen
konventioneller Flash- Animationen oder ?Programme[83]. In diesem Bereich sind es aber nur geringe Teile
komplexer Flash-Anwendungen, die über GUI-Frameworks abgebildet werden.
5 Fazit
Um ein aussagekräftiges Fazit erstellen zu können, ist es nötig, das Fazit in zwei Teile zu gliedern. Im ersten Teil
werden die bisherigen Entwicklungen und Standards zusammengefasst und kritisch gewürdigt. Im zweiten Teil
wird basierend auf der kritischen Würdigung ein Ausblick auf zukünftige Entwicklungen und angekündigte
Neuerungen gelegt.
5.1 Zusammenfassung
Seit den 1980er Jahren stieg die Leistungsfähigkeit der Hardware stetig und somit auch die Anforderung, immer
komfortablere und optisch ansprechendere Betriebssysteme zu entwickeln. Zum Beginn der GUI-Zeit zeigte sich
jeder Benutzer noch mit einfachsten, zweifarbigen Fenstern und Interfaces zufrieden, während in aktuellen Zeiten
aufwendige Effekte und Grafiken zur Standarddarstellung gehören. Entsprechend stieg auch der Aufwand in der
Programmierung der GUIs. Im Zuge dieser Aufwandsteigerung wurden zunehmend Frameworks entwickelt, die
einzelne Komponenten der Programmierung abbilden, um so den sich wiederholenden Aufwand zu bündeln. Über
die im Programmcode ansprechbaren und einbindbaren Bibliotheken wird der Quelltext übersichtlicher und
strukturierter gehalten und muss nicht für jede Funktion oder Darstellung neu erstellt werden.
Für Programmierer gibt es aktuell eine sehr große Auswahl an freien und kommerziellen GUI-Frameworks, so
dass im Rahmen dieser Fallstudie nur ein Teil dargestellt werden kann. Für die Auswahl des passenden
Frameworks können mehrere Ansatzpunkte gewählt werden. Aktuell ist der Hauptsansatzpunkt das
Betriebssystem, für das programmiert werden soll. Aufgrund der historischen Entwicklung der GUI-Frameworks
4.4.2.2 Python
18
Marktüberblick_GUI_Frameworks
ist der größere Teil der aktuell in der Entwicklung genutzten Frameworks von der Plattform abhängig.
Insbesondere in den weitestgehend geschlossenen Systemen Windows und Mac OS gibt es eigens für diese
Systeme entwickelte, größtenteils kommerzielle oder teilkommerzielle Frameworks. Microsoft setzt
beispielsweise auf die Sprache .NET, die auf C# basiert und speziell für die Windows-Entwicklung angepasst
wurde. Im Installationsumfang der hauseigenen Entwicklungsumgebung, Visual Studio, wird neben der Sprache
auch ein komplexes Framework mit vielen windowsspezifischen Bibliotheken geliefert. Eine Entwicklung für
Windows mit microsoftfremden Frameworks wird offiziell nicht unterstützt und somit für die Programmierer
ungleich komplizierter. Bei Mac OS sieht es mit eigenen Frameworks und Bibliotheken ähnlich aus, jedoch ist
eine Entwicklung mit anderen Frameworks etwas überschaubarer, da mit Sprachen aus dem C-Umfeld nicht auf
eine systemspezifische Programmiersprache zurückgegriffen wird.
Im Linux/UNIX-Bereich stellt sich die Situation anders dar. Aufgrund der Systemunterschiede einzelner
Distributionen, deren Verwandtheit teilweise nur durch den Kernel und ggf. X-Window besteht, wird hier auf
systemneutrale Frameworks zurückgegriffen. Die zumeist frei verfügbaren Frameworks wie z. B. Qt oder GTK+,
die in der Regel aus dem C-Umfeld kommen, sind nicht speziell für eine Plattform entwickelt, sondern bieten
Standards und Bibliotheken, die in verschiedenen Linux-Distributionen oder anderen Plattformen genutzt werden
können. In den komplexen Frameworks werden auch Bindings zu systemunabhängigen Sprachen geliefert.
Ein anderer Ansatz zur Wahl des richtigen Frameworks ist die Auswahl der zu Grunde liegenden
Programmiersprache. Aktuell ist ein Großteil der Frameworks auf C oder C++ basierend, jedoch gibt es häufig
Schnittstellen zu anderen Sprachen, um so den Funktionsumfang zu erweitern und weitere Tools einbinden zu
können. Zunehmend gibt es neue Frameworks, die nicht mehr auf C oder C++ setzen, sondern als Grundlage
andere Sprachen wie zum Beispiel JAVA haben, diese sind jedoch aktuell noch nicht zentral am breiten Markt
positioniert, da die Entwicklung hier noch nicht so fortgeschritten ist, wie es bei den eingesessenen C-basierenden
Frameworks der Fall ist.
Eine Übersicht über die betrachteten Frameworks findet sich in nachstehender Tabelle:
Framework
WPF
unterstützte
Betriebssysteme
ab Windows XP
Programmier-sprache
XAML/ C# bzw.
VB.NET
Bindings
lt. Microsoft
werden viele
Sprachen in das
.NET-Framework
Teil des
integriert, u. A.
.NET-Frameworks
Perl, Python,
Eiffel, Pascal und
Smalltalk[84]; für
Java: eFace
MFC
Windows
C++
Python
WTL
Windows
C++
-
5.1 Zusammenfassung
Lizenz
Verbreitu
noch nicht seh
verbreitet, entw
sich aber in die
Richtung
starke Verbreit
Teil von Microsoft nimmt aber ab
Visual Studio
(Entwicklung g
Richtung WPF
Microsoft
verbreitet
Permissive Licence
19
Marktüberblick_GUI_Frameworks
C++
-
BSD
geringe Verbre
Nur Windows (Linux über
Smartwin++ Wine möglich, aber
C++
unvollständig)
-
BSD
geringe Verbre
Objective-C
Perl, Python,
Ruby, C#
wird mit Mac OS
X ausgeliefert
verbreitet
C++
-
BSD
geringe Verbre
VCF
Cocoa
hauptsächlich Windows
Mac OS X
PowerPlant Mac OS und Mac OS X
X-Window
Linux/UNIX-Umfeld
C, (X)
C++, xlib,
eingebunden in
Frameworks wie
Qt, GTK+, etc.
GPL
hohe Verbreitu
Motif
Linux/UNIX-Umfeld
C, C++
X-Window (X11) GPL
hohe Verbreitu
abnehmend
C-Umfeld
wird primär mit
GTK+ entwickelt
GPL
und liefert eigene
Bibliotheken
hohe Verbreitu
C-Umfeld
wird primär mit
Qt entwickelt und
GPL
liefert eigene
Bibliotheken
hohe Verbreitu
C-Umfeld
wird primär mit
GTK+ und
Gnome entwickelt GPL
und liefert eigene
Bibliotheken
geringe Verbre
Ruby, Python,
Ada, C#, Java,
Pascal, Perl, PHP,
Lua, Tcl,
Common Lisp
und weitere
sehr stark verb
Gnome
KDE
Xfce
Qt
Linux/UNIX-Umfeld
Linux/UNIX-Umfeld
Linux/UNIX-Umfeld
Windows 98 bis XP, Mac
C++
OS X, Linux/UNIX (X11)
5.1 Zusammenfassung
LGPL und
kommerzielle
Versionen
verfügbar
20
Marktüberblick_GUI_Frameworks
Linux-/UNIX-Umgebungen
(primär), Windows, Mac
C
OS, mobile Systeme (z.B.
Android, BADA)
C++ (primär),
Ruby, Python,
Ada, C#, Java,
Pascal, Perl, PHP, LGPL
Lua, Tcl,
Common Lisp
und weitere
wxWidgets
Windows, OS X,
Linux/UNIX
C++
Ruby, Python,
Perl, Java, Lua,
JavaScript,
modifizierte LGPL stark verbreitet
Smalltalk, Erlang
und weitere
FLTK
Linux/UNIX (X11),
Microsoft Windows und
MacOS X
C++
Python, Ruby,
Tcl, Perl, Eiffel,
Octave, Lua
LGPL
verbreitet
FOX
Linux/UNIX, Win32
C++
Python, Ruby,
Eiffel
LGPL
geringe Verbre
C++
-
BSD
geringe Verbre
C
Perl, Python, C#,
C++, Vala und
LGPL
Ruby
Tcl
Ruby, Python,
Perl, Ada,
CommonLisp,
Erlang und
weitere
GTK+
Ultimate++ Linx/UNIX, Win32
Clutter
Tk
Windows, Linux/UNIX
und Mac OS X
UNIX (X), Windows (ab
95) und Macintosh
speziell im
Linux-/UNIXsehr stark verb
zunehmende
Marktanteile
geringe Verbre
BSD-artige Lizenz verbreitet
Tabelle 1: Tabellarischer Überblick GUI-Frameworks [85]
5.2 Ausblick
Die Entwicklung geht von starren Strukturen für einzelne Systeme immer mehr in Richtung multieinsetzbarer
Frameworks. Die Entwicklungen werden in Zukunft weniger system- und sprachengebunden sein, damit eine
höhere Flexibilität gewährleistet ist. Zwar liegen nach wie vor Programmiersprachen zu Grunde, jedoch gibt es
immer mehr und komplexere Schnittstellen und Bindings zu anderen Sprachen, Bibliotheken und Funktionen. Am
Markt werden sich künftig die flexiblen Frameworks zentral positionieren können, da auch die Anbindungen zu
verschiedenen Systemen in der Entwicklung gefordert sind, um eine möglichst breite Masse an Systemen mit
gleichbleibendem Programmieraufwand ansprechen zu können.
Bei den geschlossenen Systemen wird sich zeigen, ob die freien, plattformübergreifenden Frameworks weiter Fuß
fassen können oder ob die etablierten Umgebungen die nächsten Schritte gehen, um die Marktanteile behaupten
zu können. Im Linux/UNIX-Umfeld werden weiter freie Frameworks auf den Markt drängen und durch die
5.2 Ausblick
21
Marktüberblick_GUI_Frameworks
großen Communities auch weiterentwickelt. Es wird aber bei allen Systemen so bleiben, dass es Alternativen gibt,
so dass der Programmierer bei seiner Wahl der genutzten Frameworks nach wie vor auf Auswahlkriterien wie
Benutzerkomfort, Verständlichkeit, persönliche Vorlieben, Komplexität, Anbindungsmöglichkeiten, optische
Standards, Kombinationsmöglichkeiten und nicht zuletzt die Kosten achten kann.
6 Endnoten
1. ? vgl. Hofmann (1998), S. 5
2. ? vgl. Myers/Rosson (1992)
3. ? Dabei kann aufgrund der begrenzten Seitenzahl nicht auf alle existierenden Frameworks eingegangen
werden, sondern nur ein grober Überblick gegeben werden.
4. ? Bauer (2000), S. 2
5. ? Grechenig et. al. (2010), S. 249
6. ? Pree (1997), S. 7
7. ? Quelle: Pree (1997), S. 7
8. ? 8,0 8,1 vgl. Pree (1997), S.8
9. ? vgl. Willamowius (1997), S. 14
10. ? Pree (1997), S. 19
11. ? vgl. Monecke (2003), S. 3
12. ? vgl. Grechenig et. al (2010), S. 252
13. ? vgl. Grechenig et. al (2010), S. 253
14. ? vgl. Cooper/Reimann/Cronin (2010 / 2007), S. 393ff
15. ? Quelle: www.mac-history.de
16. ? vgl. Reilly (2003), S. 14
17. ? vgl. Reilly (2003), S. 14-15
18. ? 18,0 18,1 18,2 vgl. Rosenbaum (1998), S. 157ff
19. ? vgl. Microsoft (1998), Vorwort
20. ? vgl. Schulze-Amme (2010), S. 2ff
21. ? Petzold (1999)
22. ? Eder (2011), S.34
23. ? Eder (2011), S.16
24. ? Eder (2011), S.17
25. ? Naujoks (2007), S.12
26. ? Für eine umfassende Analyse von WPF sei auf die Fallstudie von Kadah/Pajonk verwiesen
27. ? z. B. http://www.henkessoft.de/
28. ? Budszuhn (2007), S. 28
29. ? vgl. Kruglinski et. al.(1998),S. 21)
30. ? vgl. Microsoft (2007)
31. ? vgl. Kuri (2005)
32. ? vgl. Viksoe (2002)
33. ? siehe http://tech.groups.yahoo.com/group/wtl/
34. ? vgl. Hansen (2008)
35. ? vgl. Rodewig/Negm-Awad (2007), S. 35
36. ? http://developer.apple.com/technologies/mac/cocoa.html
37. ? Youll (2005)
38. ? vgl. freescale (2005)
39. ? vgl. Wolfinger/Gulbins/Hammer (2005), S. 20f
40. ? Quelle: https://www.linux-user.de/ausgabe/2007/02/028-x-basics/x-window.png
41. ? 41,0 41,1 vgl. Hein (2002), S. 197
6 Endnoten
22
Marktüberblick_GUI_Frameworks
42. ? vgl. Wulf (2006), S. 11f
43. ? vgl. Jones (1989), Vorwort/Einleitung
44. ? Quelle: Gregory (1992), S. 3
45. ? vgl. Gottheil (1992), Vorwort
46. ? vgl. Gregory (1992), S. 2ff
47. ? vgl. Brain (1992), S. 1ff & S. 30ff
48. ? vgl. OSF (1993), I
49. ? vgl. Kofler (2006), S. 102ff
50. ? http://www.gnome.org
51. ? http://www.ubuntu.com/
52. ? PetersenVgl. Petersen (2005), S. 114
53. ? http://www.kde.org
54. ? vgl. Hölzer-Klüpfel et. al (1999), I.
55. ? http://www.xfce.org
56. ? vgl. Nixon (2010), S. 8f
57. ? http://www.xubuntu.org
58. ? vgl. Wolf (2007), S. 15
59. ? vgl. Nokia (2009)
60. ? vgl. Krause (2007), S. 5
61. ? vgl. Krause (2007), S. 7
62. ? vgl. Ollivier (2011)
63. ? http://wxwidgets.blogspot.com
64. ? http://wiki.wxwidgets.org/Main_Page
65. ? vgl. Böttger (2008), S. 50
66. ? vgl. Spitzak (2010)
67. ? vgl. Stroustrup (2010), S. 1158
68. ? vgl. van der Zijp (2010)
69. ? vgl. Ramirez (2011)
70. ? Beispiele hierfür werden auf der Internetseite von Ultimate++ (vgl. Ramirez (2011)) dargestellt.
71. ? vgl. tcl (2005)
72. ? http://www.activestate.com/
73. ? http://wiki.tcl.tk/
74. ? http://www.tkdocs.com/
75. ? z. B. Tcl and the Tk Toolki von John Ousterhout oder Practical Programming in Tcl and Tk von Brent
Welch, Ken Jones und Jeff Hobbs
76. ? vgl. Clutter (2011)
77. ? vgl. Balzert/ Priemer (2008), S.13
78. ? vgl. Ullenboom (2011), Kapitel 19.1.2
79. ? vgl. Balzert/ Priemer (2008), S.13
80. ? vgl. Ullenboom (2011), Kapitel 19.1.4
81. ? vgl. Golem (2009)
82. ? vgl. Rocchi (2011), S. 45ff
83. ? vgl. Stephanidis (1998), S. 12ff
84. ? vgl. Microsoft (2011)
85. ? Quelle: Eigene Darstellung
7 Abkürzungsverzeichnis
Abkürzung
7 Abkürzungsverzeichnis
Bedeutung
23
Marktüberblick_GUI_Frameworks
AWT
CLI
DOS
FLTK
FOX
GDK
GTK
GUI
GPL
LGPL
LISA
MFC
MIT
MS-DOS
MVC
OS/2
PARC
PC
Tk
Qt
UIL
UNIX
VCF
WPF
WTL
www
XAML
XML
Abstract Windowing Toolkit
command line interface
Disk Operating System
Fast Light Tool Kit
Free Objects for X
GIMP Drawing Kit
GIMP Toolkit
Graphical User Interface, dt. grafische Benutzeroberfläche
GNU General Public License
GNU Lesser General Public License
Local Integrated Software Architecture
Microsoft Foundation Classes
Massachusetts Institute of Technology
Microsoft Disk Operating System
Model-View-Controller
Operating System/2
Palo Alto Research Center
Personal Computer
Tool kit
Quasar toolkit
User Interface Language
Uniplexed Information and Computing Service
Visual Component Framework
Windows Presentation Foundation
Windows Template Library
world wide web
Extensible Application Markup Language
Extensible Markup Language
8 Abbildungsverzeichnis
Abb.-Nr.
1
2
3
4
Abbildung
Framework mit Hot-Spots
Screenshot von Apple LISA
Möglichkeit einer X-Window-Struktur
Layers of a X program
9 Tabellenverzeichnis
Tab.-Nr.
Tabelle
1
Tabellarischer Überblick GUI-Frameworks
8 Abbildungsverzeichnis
24
Marktüberblick_GUI_Frameworks
10 Literaturverzeichnis
Helmut Balzert, Jürgen Priemer: Java 6: Anwendungen programmieren: Von der GUI-Programm
Datenbank-Anbindung, W3L GmbH, Herdecke/Witten, 2008
Bauer, Günther: Bausteinbasierte Software: Eine Einführung in moderne Konzepte des Software
Bauer (2000)
Braunschweig/Wiesbaden, 2000
Böttger, Ronny: Konzeptionelle Untersuchung der Windows Presentation Foundation(wpf), GRI
Böttger (2008)
2008
Brain (1992)
Brain, Marshall: Motif programming: the essentials... and more, Digital Press, Newton, 1992
Clutter (2011)
o. V. About Clutter, 2011, http://www.clutter-project.org/about (01.02.2011, 10:00)
Cooper/Reimann/Cronin Cooper, Alan; Reimann, Robert; Cronin, David: About Face: Interface und Interaction Design, m
(2010)
(Übersetzung der amerikanischen Originalausgabe 2007)
Eder (2011)
Eder, Norbert: Windows Presentation Foundation 4, Einführung und Praxis, mitp, Heidelberg, 20
Freescale Semiconductor(Hrsg.): The Benefits of Using PowerPlant, For Mac OS and Mac OS X
Freescale (2005)
2005, http://www.freescale.com/files/soft_dev_tools/doc/white_paper/CWPWRPLNTWP.pdf (1
Gottheil, Klaus: X und Motif: Einführung in die Programmierung des Motif-Toolkits und des XGottheil (1992)
Springer-Verlag, Heidelberg, 1992
Grechenig, Thomas; Bernhart, Mario; Breiteneder, Roland; Kappel, Karin: Softwaretechnik: Mit
Grechenig et. al (2010)
Entwicklungsprojekten, Pearson Studium, München, 2010
o. V.: Qt Jambi wird nicht weiterentwickelt, Klaß & Ihlenfeld, 2009, http://www.golem.de/0902
Golem (2009)
10:00)
Gregory (1992)
Gregory, Keith D.: Programming with Motif, Springer-Verlag, New York, 1992
Hansen, Thomas: Smartwin 1.0, An Open-Source C++ GUI library, 2008, http://smartwin.source
Hansen (2008)
(15.01.2011, 15:00)
Hein (2002)
Hein, Jochen: Linux-Systemadministration, Addison-Wesley, München, 2002
Hofmann, Frank: Grafische Benutzeroberflächen: Generierung aus OOA-Modellen, Spektrum A
Hofmann (1998)
Heidelberg/Berlin, 1998
Hölzer-Klüpfel et. al
Hölzer-Klüpfel,Matthias; Pohlmann, Frank; Röhrig, Bernhard: KDE 1.1. Das GUI für Unix, C &
(1999)
Literaturverlag, Böblingen, 1999
Jones (1989)
Jones, Oliver: Introduction to the X-Window System, Prentice Hall, New Jersey, 1989
Kofler (2006)
Kofler, Michael: Linux: Installation, Konfiguration, Anwendung (7. Auflage), Addison Wesley V
Krause (2007)
Krause, Andrew: Foundations of GTK+ Development, Springer-Verlag, New York, 2007
Kuri, Jürgen: Microsoft will Shared Source vereinfachen, 2005,
Kuri (2005)
http://www.heise.de/newsticker/meldung/Microsoft-will-Shared-Source-vereinfachen-139504.ht
Microsoft (1998)
Microsoft GmbH (Hrsg.): Microsoft Windows-Architektur für Entwickler, Microsoft, Seattle, 19
o. V. : Windows Template Library (WTL) 8.0, 2007,
Microsoft (2007)
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e5ba5ba4-6e6b-462a-b24c-611
(15.01.2011, 15:00)
Microsoft Developer Network (Hrsg.): Weitere Programmiersprachen,
Microsoft (2011)
http://msdn.microsoft.com/de-de/library/aa292164%28v=vs.71%29.aspx, (01.02.2011, 10:00)
Monecke (2003)
Monecke, Marc: Entwurfsmuster, Siegen, 2003
Myers,Brad A.; Rosson, Mary Beth: Survey on user interface programming, IN: Proceedings CH
Myers/Rosson (1992)
York, 1992
Naujoks(2007)
Balzert/ Priemer (2008)
10 Literaturverzeichnis
25
Marktüberblick_GUI_Frameworks
Nixon(2010)
Nokia(2009)
OSF(1993)
Ollivier (2011)
Petersen (2005)
Petzold (1999)
Pree (1997)
Ramirez (2011)
Reilly (2003)
Rocchi (2011)
Rodewig/Negm-Awad
(2007)
Rosenbaum (1998)
Schulze-Amme (2010)
Spitzak (2010)
Stephanidis (2007)
Stroustrup (2010)
Tcl (2005)
Ullenboom (2011)
van der Zijp (2010)
Viksoe (2002)
Willamowius (1997)
Wolf (2007)
Wolfinger (2005)
Wulf (2006)
Youll (2005)
10 Literaturverzeichnis
Naujoks, Manuel: XAML ? WPF per XML, Karlsruhe, 2007,
http://www.neokc.de/aktuelles/dokumente/XAML-Ausarbeitung.pdf (20.01.2011, 08:00)
Nixon, Robin: Ubuntu: Up and Running, O'Reilly, Sebastopol, 2010
Nokia Corporation(Hrsg.): MFC to Qt Migration ? Walkthrough, 2009,
http://doc.qt.nokia.com/solutions/4/qtwinmigrate/winmigrate-walkthrough.html (02.02.2011, 10
Open Software Foundation: Motif programmer's guide, Open Software Foundation, USA, 1993
Ollivier, Kevin: wxWidgets. Cross-Platform GUI Library, 2011, http://www.wxwidgets.org/ (02
Petersen, Richard L.: Red Hat Enterprise Linux & Fedora Core 4, McGraw-Hill, Emeryville, 200
Petzold, Charles: Widnows Programmierung, 5. Auflage, Microsoft Press, Unterschleißheim, 19
Pree, Wolfgang: Komponentenbasierte Softwaretechnik mit Frameworks, dpunkt.verlag, Heidelb
Ramirez, Koldo: Ultimate++ is a C++ cross-platform rapid application development framework,
http://www.ultimatepp.org/ (02.02.2011, 10:00)
Reilly, Edwin D.: Milestones in computer science and information technology, Greenwood Press
Rocchi, Cesare: Data Visualization With Flash Builder, Focal Press, Oxford, 2011
Rodeweig, Klaus; Negm-Awad, Amin: Objective-C und Cocoa: Programmieren unter Apple Ma
books, Kilchberg, 2007
Rosenbaum, David I.: Market dominance: how firms gain, hold, or lose it and the impact on Eco
Praeger Publishers, Westport CT, 1998
Schulze-Amme, Bärbel: Linux, die clevere Alternative zu Windows, GRIN, Norderstedt, 2010
Spitzak, Bill: Fast Light Toolkit, 2010, http://www.fltk.org/, (02.02.2011, 10:00)
Stephanidis, Constantine: 4th International Conference on Universal Access in Human-Compute
held as part of HCI International 2007, Beijing, China, July 22-27, 2007 : proceedings, SpringerBerlin/Heidelberg/New York , 2007
Stroustrup, Bjarne: Einführung in die Programmierung mit C++ , Pearson Studium, München, 20
O.V.: TCL/TK LICENSING TERMS, 2005, HTTP://TCL.TK/SOFTWARE/TCLTK/LICENSE.
Christian Ullenboom: Java ist auch eine Insel, 9. Auflage, Galileo Computing, 2011,
http://openbook.galileocomputing.de/javainsel9/ (02.02.2011, 14:00)
van der Zijp, Jeroen: FOX-TOOLKIT, 2010, http://www.fox-toolkit.org/ (02.02.2011, 10:00)
Viksoe, Bjarke: WTL Documentation, 2002, http://www.viksoe.dk/code/wtldoc.htm (15.01.2011
Willamowius, Jan: Framework-Evolution; am Beispiel eines Frameworks zur Steuerung von Tkhttp://swt-www.informatik.uni-hamburg.de/publications/papers/Dipl/DiplomarbeitWillamowius
Wolf, Jürgen: QT 4. GUI-Entwicklung mit C++, Galilei Press, Bonn, 2007
Wolfinger, Christine; Gulbins, Jürgen; Hammer, Carsen: Linux-Systemadministration: Grundlag
Springer-Verlag, Berlin, 2005
Wulf, Alex: Debian GNU/Linux in der Praxis, Springer-Verlag, Heidelberg, 2006
Youll, Andrew: Apple Drops The Cocoa-Java Bridge, 2005, http://www.osnews.com/story/1116
26