Was ist ein Framework?

BlubBlub

Bekanntes Mitglied
Hi,

ich wollte mal genauer wissen was ein Framework ist?
Dazu hab ich mir einen Artikel bei Wikipedia durchgelesen.
Nun steht dort, dass ein Framework ein Programmiergerüst ist.
Versteht man unter einem Framework also ein fast fertiges Programm,
dessen Funktionen und Prozeduren nur noch mit Inhalt gefüllt werden müssen?

Ich wollte mir mal ein verständliches Beispiel für ein Framework anschauen,
leider konnte ich kein solches Beispiel finden.
 

DerEisteeTrinker

Bekanntes Mitglied
Also ein fast fertiges Programm ist zu viel gesagt. In einem Framework werden sinnvolle Programmieransätze, Hilfsalgorithmen und Unterstützungen zusammengefasst. Es ist keine Anwendung im eigentlichen Sinne, sondern du kannst es dir wie eine Werkzeugkiste vorstellen. Wo du das Werkzeug findest, dass du zum Hausbau brauchst. Mit diesem Werkzeug sparst du dir die Entwicklung des Betons, weil sich da schon mal wer den Kopf drüber zerbrochen hat ;)

Es gibt aber viele verschiedene Frameworks und jedes hat seine Vor- und Nachteile. Du als Programmierer musst halt immer entscheiden, welches für die Aufgabe am Besten geeignet ist.

Als Beispiel für ein Framework, wären für mich die commons-lang von Apache. Da hast du viele Klassen, z.Bsp. die Stringutils, die dir unter Umständen viel Arbeit und Zeit sparen.
 
M

maki

Gast
@maki

Wo liegt dann der Unterschied zwischen Framework und Lib? Ich persönlich würde Lib als eine besondere Art des Framework sehen.
Umgekehrt wird ein Schuh draus :)

Ein Framework ist auch eine Lib, aber nicht jede Lib ein Framework ;)
Wie gesagt, IoC ist das Zauberwort, steht sowol im Fowler Artikel, als auch im Wiki Artikel.

Eine Lib ist nichts weiter als eine Sammlung von Klassen/Methoden, die du als Entwickler aufrufst wenn du sie nutzen möchtest, Beispiel commons-lang.
Ein Framework dagegen ruft deine Klassen auf(die "invertierte Kontrolle" eben), welche entweder durch Annotationen/Vererbung/Interface Implementierung/sonstige Konfiguration in das Framework eingehängt werden, Beispiel struts/JSF/Hibernate/iBatis/Spring/EJBs.
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Das sehe ich nicht ganz so. Kannst du die entsprechenden Stellen mal zitieren, die genau diese Aussage stützen?
Klar.
MF Bliki: InversionOfControl
Inversion of Control is a common phenomenon that you come across when extending frameworks. Indeed it's often seen as a defining characteristic of a framework.
......

These are complicated cases of inversion of control, but you run into this effect in much simpler situations. A template method is a good example: the super-class defines the flow of control, subclasses extend this overriding methods or implementing abstract methods to do the extension. So in JUnit, the framework code calls setUp and tearDown methods for you to create and clean up your text fixture. It does the calling, your code reacts - so again control is inverted.

There is some confusion these days over the meaning of inversion of control due to the rise of IoC containers; some people confuse the general principle here with the specific styles of inversion of control (such as dependency injection) that these containers use. The name is somewhat confusing (and ironic) since IoC containers are generally regarded as a competitor to EJB, yet EJB uses inversion of control just as much (if not more).

Etymology: As far as I can tell, the term Inversion of Control first came to light in Johnson and Foote's paper Designing Reusable Classes, published by the Journal of Object-Oriented Programming in 1988. The paper is one of those that's aged well - it's well worth a read now over fifteen years later. They think they got the term from somewhere else, but can't remember what. The term then insinuated itself into the object-oriented community and appears in the Gang of Four book. The more colorful synonym 'Hollywood Principle' seems to originate in a paper by Richard Sweet on Mesa in 1983. In a list of design goals he writes: "Don't call us, we'll call you (Hollywood's Law): A tool should arrange for Tajo to notify it when the user wishes to communicate some event to the tool, rather than adopt an 'ask the user for a command and execute it' model." John Vlissides wrote a column for C++ report that provides a good explanation of the concept under the 'Hollywood Principle' moniker. (Thanks to Brian Foote and Ralph Johnson for helping me with the Etymology.)

Inversion of Control Containers and the Dependency Injection pattern
Inversion of Control

When these containers talk about how they are so useful because they implement "Inversion of Control" I end up very puzzled. Inversion of control is a common characteristic of frameworks, so saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels.
...

In einem seinem Bücher sagt es das nochmals, detailierter, weiss aber nicht mehr in welchem...

Fowler z.B. verwendet den Begriff Framework auch ohne Hinblick auf IoC. Und das würde ich auch tun.
Natürlich, der Begriff Framework impliziert IoC, wozu also redundant Framework & IoC sagen, wenn das eine das andere beinhaltet.
 
Zuletzt bearbeitet von einem Moderator:

FArt

Top Contributor
Dann passt es wieder. es heißt dort "often" und "common" und dies relativiert die Aussage damit wieder.

Ein Framework ist auch eine Lib, aber nicht jede Lib ein Framework ;)
Wie gesagt, IoC ist das Zauberwort, steht sowol im Fowler Artikel, als auch im Wiki Artikel.

Ich wäre mir nicht sicher, ob ich eine API in den Adelstand des Frameworks erheben könnte, indem ich lediglich z.B. einen Observer- oder Callbackmechnismus hinzufüge. Also als einziges Merkmal für und wider Library oder Framework finde ich IoC nicht geeignet.
 
M

maki

Gast
Dann passt es wieder. es heißt dort "often" und "common" und dies relativiert die Aussage damit wieder.

Ich wäre mir nicht sicher, ob ich eine API in den Adelstand des Frameworks erheben könnte, indem ich lediglich z.B. einen Observer- oder Callbackmechnismus hinzufüge. Also als einziges Merkmal für und wider Library oder Framework finde ich IoC nicht geeignet.
Ja, wohl etwas zu Absolut dargestellt von mir, der engl. Wikipedia Artikel defniert noch 3 weitere Eigenschaften eines Frameworks.
Software framework - Wikipedia, the free encyclopedia
...
Software frameworks have these distinguishing features that separate them from libraries or normal user applications:

1. inversion of control - In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not dictated by the caller, but by the framework.[1]
2. default behavior - A framework has a default behavior. This default behavior must actually be some useful behavior and not a series of no-ops.
3. extensibility - A framework can be extended by the user usually by selective overriding or specialized by user code providing specific functionality.
4. non-modifiable framework code - The framework code, in general, is not allowed to be modified. Users can extend the framework, but not modify its code.
...
Aber jedes Framework bietet IoC, dabei bleibe ich (erstmal) ;)
 
I

imho1001

Gast
Und die "Kategorie:GUI-Framework" (die auch Swing benennt) in Wikipedia ist wohl Zufall oder was?
 
M

maki

Gast
Klar sind Swing & SWT Frameworks, denkt einfach nur mal an die Listener & sonstige Anonymen Klassen die vom Framework bei Events aufgerufen werden.
Das war übrigens Fowlers (klassisches) Beispiel das ich nciht mehr finde.
Der Vergleich war zu früheren konsolenbasierten Programmen, in dem man von der Ausgabe, refresh & Verarbeitung der Eingaben alles selber machen musste.

Wenn man aber die letzten 10+ Jahre keine Konsolenanwendungen mehr geschrieben hat, fällt einem das wohl ncht mehr so krass auf ;)

Nachtrag:
Hab was gefunden unter dem IoC Artikel
The question, is what aspect of control are they inverting? When I first ran into inversion of control, it was in the main control of a user interface. Early user interfaces were controlled by the application program. You would have a sequence of commands like "Enter name", "enter address"; your program would drive the prompts and pick up a response to each one. With graphical (or even screen based) UIs the UI framework would contain this main loop and your program instead provided event handlers for the various fields on the screen. The main control of the program was inverted, moved away from you to the framework.
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Dann wäre wohl der Unterschied zwischen Toolkit und GUI Framework interessant ;)...

Da auf den beiden wiki Seiten nur von Toolkits und Grafiklibs aber nicht von Frameworks die Rede ist.
Swing (Java) ? Wikipedia
Standard Widget Toolkit ? Wikipedia
Sieh dir die englischen Artikel an, da kommt auch Framework vor, aber abgesehen davon ist WikiPedia keine "akademische" Quelle ;)

"ToolKit" ist wohl eine abgeschwächte Form von Framework aber mehr als eine Lib, was auch immer das heissen mag *g*
 
G

Gast2

Gast
Swing hab ich mir jetzt nich durchgelesen. Aber SWT hört sich für mich immer noch mehr als GrafikLib an.

SWT exposes developers to more low level details than Swing. This is because SWT is technically just a layer over native library provided GUI functionality – that said, exposing the programmer to native GUI code seems to be part of the design intent of SWT: "Its goal is not to provide a rich user-interface design framework but rather the thinnest possible user-interface API that can be implemented uniformly on the largest possible set of platforms while still providing sufficient functionality to build rich graphical user interface (GUI) applications."
 
M

maki

Gast
Wo hilft mir denn das Swing-Framework beim Injizieren von Abhängigkeiten mittels IoC?
IoC hat gar nix mit Dependency Injection zu tun ;)
Umgekehrt ist eine Dependency Injection Framework aber IoC, darum ging es in meinem allerersten lLink in diesem Thread, Fowler erklärt die Begriffe/Unterschiede/Zusammenhänge.
Dependency Injection geht ja auch ohne Framework (Setter- und Methodparameter Injection).

Spring hat eben einfach den falschen Begriff für die ihre Lib verwendet, DI wäre "richtiger" (weil genauer) gewesen.

Swing hab ich mir jetzt nich durchgelesen. Aber SWT hört sich für mich immer noch mehr als GrafikLib an.
Wenn man sich die Definition von Framework durchliest, ist es ein Framework, glasklar :)

haben wir nicht schon mal 20 Seiten darüber gestritten was ein Server ist... ist doch Ansichtsache!
Naja, man kann auch darüber streiten was ein Programm ist... es gibt immer Einzelmeinungen, vor allem hat die IT aber ein generelles Problem was Terminologie betrifft, Marketingschlampen sorgen schon dafür dass neue Buzzwords Uralte Konzepte verschleiern.
Trotzdem finde ich dass "alles Ansichtsache" das Problem nicht vereinfacht, sondernd as Gegenteil erreicht.
 
Zuletzt bearbeitet von einem Moderator:

tfa

Top Contributor
@maki:
Dann hatte ich dein erstes Posting falsch interpretiert. Der Framework-Begriff ist dann aber trotzdem ziemlich weit gefasst. Demnach sind commons-collection und java.util auch welche.
 

Sonecc

Gesperrter Benutzer
Wenn man sich die Definition von Framework durchliest, ist es ein Framework, glasklar :)

Meine Rede... Hab ich in nem anderen Thema vor kurzem schon erläutern wollen.

Btw. Warum werden Zitate nicht verschachtelt? Wenn ich wen zitiere, der wen zitiert hat, geht das zitat verloren von dem der zitiert wurde. (geiler satz :rtfm:)
 
M

maki

Gast
@maki:
Dann hatte ich dein erstes Posting falsch interpretiert. Der Framework-Begriff ist dann aber trotzdem ziemlich weit gefasst. Demnach sind commons-collection und java.util auch welche.
Ja, "Framework" ist auch ziemlich weit gefasst, es heisst ja auch das "Java Collections Framework".
IMHO unterscheidet eben das IoC (und anch verbreiteter Meinung auch andere Kriterien) "Framework" von "Lib/API", und letzteres ist wirklich "alles" wenn man so will.

Fowler geht soweit das er sogar dem "Template Pattern" IoC unterstellt ;)
 
G

Gast2

Gast
Gut dann kann man fast soweit gehen, dass jede lib die eine Schnittstelle anbietet ein Framework ist.
 

Atze

Top Contributor
Gut dann kann man fast soweit gehen, dass jede lib die eine Schnittstelle anbietet ein Framework ist.

ich habs so verstanden, das libs/apis passiv sind (funktionen bieten, in welcher form auch immer) und frameworks aktiv! nicht jede lib, in der ich ein paar klassen zusammengefasst habe, ist ja gleich ein framework, oder?
 
G

Gast2

Gast
Bis auf die, die nur einfache Utility-Methoden anbieten wie commons-lang.

Util Methoden sind ja auch keine Schnittstellen. Die benutzt du einfach und gut ist.
Eine Schnittstelle anbietet heißt für mich, ich mache eine Implentation und das "Framework" benutzt diese.
z.B. die Schnittstelle List... Kannst deine eigene Liste machen die den größten Schwachsinn macht, aber das Collection Framework verwendet diese.

Das heißt jede lib, die eine Art Listener oder Schnittstellen Konzept anbietet ist ein Framework, da das Framework deine eigenen Implentationen benutzt...
 
Zuletzt bearbeitet von einem Moderator:

FArt

Top Contributor
haben wir nicht schon mal 20 Seiten darüber gestritten was ein Server ist... ist doch Ansichtsache!

Hier wird nicht gestritten sondern diskutiert.

Ich bin ganz froh, dass in diesem Forum endlich mal wieder nicht nur das alte Fragen-Antwort-Spiel gespielt wird.

Dieser Thread ist mit Sicherheit für viele interessanter und lehrreicher als die Lösung zu einem von tausend warum-geht-mein-programm-nicht Threads.

Die hier vorgetragenen Meinungen haben durchaus alle ihre Berechtigung und sind es wert diskutiert zu werden. Auch die Meinung von maki, der mit Martin Fowler verwandt sein muss ;-)

Ich zumindest habe heute ausgehend von diesem Thread und dem Thema ein paar interessante Sachen im Netz gelesen...
 

Jango

Gesperrter Benutzer
Auch die Meinung von maki, der mit Martin Fowler verwandt sein muss ;-)

:lol:

Ja, weiter bitte...

Aber ich will mal net so sein:

Ein Framework beinhaltet Feature, die für die Programmierung notwendig sind.
Das .NET Framework beinhaltet so ziemlich alles - ein Framework für viele Dinge.
Java braucht viele viele Frameworks, um auf den selben Stand zu kommen.

Frage beantwortet?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JUNG Framework edge length Allgemeine Java-Themen 0
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand PDF Erstellung / Reports Framework Allgemeine Java-Themen 3
OnDemand Pluginsystem Framework Allgemeine Java-Themen 8
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C Gutes Framework für ein Neuronales Netz Allgemeine Java-Themen 15
F Machine-learning Framework Allgemeine Java-Themen 0
D Library/Framework zum Umwandeln von Sound in Notenbilder Allgemeine Java-Themen 1
G Framework von nöten? Allgemeine Java-Themen 1
C BlackBox-Framework - Plugin Programmierung Allgemeine Java-Themen 4
F Framework/Plugin für Tree-Darstellung in Graph Allgemeine Java-Themen 0
F Parser Framework/Plugin für Datei in Custom-Format Allgemeine Java-Themen 2
W Suche Framework zur Prüfung von IPv4 und IPv6 Allgemeine Java-Themen 2
J Interface Interface für Framework verwenden Allgemeine Java-Themen 4
M Suche Framework/API für Monitoring-Anwendung Allgemeine Java-Themen 3
S Android: SQLite Framework einbinden Allgemeine Java-Themen 2
B Experte Play Framework 1.2.5 Allgemeine Java-Themen 5
S OOP Problembereichsmodell: Bestehende Framework Klasse in eigene Klassenstruktur einbinden Allgemeine Java-Themen 9
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
S Framework für symetrische und asymetrische Verschlüsselung Allgemeine Java-Themen 3
W Framework für RichClient Anwendung? Allgemeine Java-Themen 4
A Framework für einen Web Service Allgemeine Java-Themen 6
D Frage zu Dependency Injection (mit Framework) Allgemeine Java-Themen 3
F Bildbearbeitung Framework Allgemeine Java-Themen 2
J Java Komponenten / Framework Allgemeine Java-Themen 5
L Web-Framework und Swing Framework o.ä Allgemeine Java-Themen 15
B Framework zum durchstöbern des classpath Allgemeine Java-Themen 2
E Java Media Framework Allgemeine Java-Themen 5
G Suche "richtiges" Framework/Library Allgemeine Java-Themen 14
M Swing Wünsche Feedback zu GUI-Framework Allgemeine Java-Themen 6
A 2D Framework für Java Allgemeine Java-Themen 2
N Graph mit JUNG-Framework erstellen Allgemeine Java-Themen 2
H Framework empfehlung / gute Anfängerbeispiele gesucht Allgemeine Java-Themen 12
T Lib/Framework zum Automatischen Aufruf von Methoden Allgemeine Java-Themen 2
T jmf Java Media Framework - Liste der unterstützten Medien? Allgemeine Java-Themen 11
X JAVA Framework für suspend and resume Allgemeine Java-Themen 2
D Banking Framework gesucht Allgemeine Java-Themen 5
G Swing Validierungs Framework Allgemeine Java-Themen 2
J Kleine Hilfe zum Framework Click Allgemeine Java-Themen 2
G Sehr gutes Java-Framework(Gui-Builder) auf XML-Basis gesucht Allgemeine Java-Themen 21
G Was ist ein Framework Allgemeine Java-Themen 4
C java media framework - Mikrofon wird nicht gefunden Allgemeine Java-Themen 18
J mp4 dateien mit dem Java Media Framework abspielen. Allgemeine Java-Themen 2
G Framework für Multi-Prozessor-Programmierung? Allgemeine Java-Themen 4
G Java Media Framework Allgemeine Java-Themen 8
ARadauer Java Desktop Framework Allgemeine Java-Themen 3
C JUNG Framework - einfacher Graph Allgemeine Java-Themen 7
H Java6 Scripting Framework. Allgemeine Java-Themen 3
N Was benötigt man fürs Java Media Framework? Allgemeine Java-Themen 12
J Problem mit Java Multimedia Framework Allgemeine Java-Themen 6
J Eure Meinung - Das JMF (Java Media Framework) Allgemeine Java-Themen 3
G Java Media Framework - Probleme Allgemeine Java-Themen 8
R Entsprechung von Stack() im Collections Framework...? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben