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