Zusammenhang Glib <-> Gtk

M

miketech

Routinier
Hi,

kann mir jemand den Zusammenhang von Glib und Gtk erklären? Mir ist nicht ganz klar, ob Glib nun ein Teil von Gtk ist, oder nicht. Manchmal lese ich, dass Glib zu Gtk gehört und mal höre ich, dass Gtk nur das Toolkit ist, während Glib extra ist. Was denn nun? :)

Außerdem: Es gibt ja Gtk Bindings für verschiedene Sprachen. Zum einen für viele Skriptsprachen, als auch für z.B. Java, oder C#.

Wenn bei Gtk nun die Glib dabei ist, dann habe ich ja automatisch sehr viele neue Datentypen und auch viele zusätzliche Funktionen. Angenommen die glib bietet mir nun die Möglichkeit Threads zu erstellen: Viele Sprachen bieten von Haus aus die Möglichkeit Threads zu verwenden. Klar, ich nehme jetzt eigentlich die Implementierung, die die Sprache bereits mitgibt. Aber dann ist Glib Ballast. Oder wird bei den Bindings nur der GUI Bereich von Gtk implementiert? Oder ist Gtk nur das GUI Toolkit? Wer hat den Durchblick?

Gruß


Mike
 
Wenn ich mich nicht irre ist die glibc die C-Bibliothek von GNU und somit auch GNU/Linux. Sie enthält die Standart C-Funktionen und Makros. GTK (The Gimp Toolkit) ist eine Bibliothek um grafische Anwendungen zu entwickeln.
Hat das wenigsten einen Teil deiner Frage beantwortet?
 
OculusAquilae schrieb:
Wenn ich mich nicht irre ist die glibc die C-Bibliothek von GNU und somit auch GNU/Linux. Sie enthält die Standart C-Funktionen und Makros. GTK (The Gimp Toolkit) ist eine Bibliothek um grafische Anwendungen zu entwickeln.
Hat das wenigsten einen Teil deiner Frage beantwortet?

glib != glibc

die glib enthält einige Sachen die für Gtk+ notwendig bzw. hilfreich sind. Zum Beispiel ist darin afaik auch das Objekt-Modell für C implementiert.
Glib findet eigentlich nur anwendung in Verbindung mit Gtk+ (also C) wobei man es natürlich theoretisch auch in reinen C Programmen (Konsole) verwenden kann.
Bei den Bindings spielt glib afaik keine Rolle, zumindest habe ich noch keine Bindings Doku gefunden die irgendwas aus der glib dokumentiert.

Imf Gtk+ Faq werden die Zusammenhänge auch erklärt:
http://www.gtk.org/faq/
 
miketech schrieb:
kann mir jemand den Zusammenhang von Glib und Gtk erklären? Mir ist nicht ganz klar, ob Glib nun ein Teil von Gtk ist, oder nicht. Manchmal lese ich, dass Glib zu Gtk gehört und mal höre ich, dass Gtk nur das Toolkit ist, während Glib extra ist. Was denn nun? :)
Der Zusammenhang ist im Prinzip ganz einfach. GTK+ und Glib gibt es seperat zum downloaden, jedoch braucht GTK+ Glib. Das hat den einfachen Grund, dass C nämlich keine höheren Datentypen, wie etwa verkettete Listen oder Strings im eigentlichen Sinne, oder andere Sachen, wie von dir angesprochen Threads, platformübergreifend bereitstellt. Wenn du also GTK+ mit C benutzt, bist du auf die Glib angewiesen, ohne würde es auch eher zu einem großen Gewurschtl werden. ;)

miketech schrieb:
Außerdem: Es gibt ja Gtk Bindings für verschiedene Sprachen. Zum einen für viele Skriptsprachen, als auch für z.B. Java, oder C#.

Wenn bei Gtk nun die Glib dabei ist, dann habe ich ja automatisch sehr viele neue Datentypen und auch viele zusätzliche Funktionen. Angenommen die glib bietet mir nun die Möglichkeit Threads zu erstellen: Viele Sprachen bieten von Haus aus die Möglichkeit Threads zu verwenden. Klar, ich nehme jetzt eigentlich die Implementierung, die die Sprache bereits mitgibt. Aber dann ist Glib Ballast. Oder wird bei den Bindings nur der GUI Bereich von Gtk implementiert? Oder ist Gtk nur das GUI Toolkit? Wer hat den Durchblick?
Naja, die Glib kann man als Ballast ansehen. Wenn GTK+ in anderen Sprachen benutzt wird, wird immer (wenn nicht, kein gutes Binding ;)) die Implementierung, wie etwa von dir angesprochen Threads, oder Listen oder so benutzt. Das macht den Einbau einer GTK+ GUI in ein Programm in einer solchen Programmiersprache viel unkomplizierter.
Aber die Glib wird leider noch immer genutzt, so viel ich weiß. Wir haben ja dann das Problem, dass die Bindings trotzdem auf das GTK+ C-Interface zugreifen müssen, wofür auch die Glib benötigt wird. In diesem Bereich bin ich mir aber nicht sicher, ob da wirklich auch die Glib benutzt wird, ich schätze aber mal ja. Deswegen könnte man die Glib als Ballast ansehen. Vielleicht weiß pinky mehr darüber. ;)

EDIT nach Beitrag von pinky:
Ich tippe mal darauf, dass die Glib transparent, also ohne Wissen des Users, benutzt wird, kann das aber nicht beweisen, nur ne Vermutung. Ich werd mal recherchieren. ;)
 
Zuletzt bearbeitet:
Hi,

zunächst danke für Eure Antworten. Also wenn ich das richtig verstanden habe, dient die glib primär dazu, fehlende Datentypen und Funktionen von C zu ergänzen.

Bei den Bindings arbeitet die glib primär im Hintergrund. Sie kann immer noch verwendet werden, um eventuell noch fehlende Funktionalität zu ermöglichen (Datentypen usw.), jedoch sollte das Binding insoweit konstruiert sein, dass es mit den hausinternen Funktionen und Datentypen der verwendeten Sprache zusammenarbeitet. Die Funktionen der glib sollten dann nur eingesetzt werden, wenn die Sprache diese nicht bereits ermöglicht.

Ist das so korrekt?

Gruß

Mike
 

Ähnliche Themen

Verzweifeling!!!^^ Video/Audio-Player

Plattformunabhängigkeit mit Gtk und C++ (Socket und Threads)

Fragen zu Mono

GUI Programmierung: Toolkit vergleich

Java 5 - Performance und Vergleich zu C++

Zurück
Oben