JHotDraw
JHotDraw ist ein freies, Java-basiertes Framework zur Erstellung von grafischen Editoren. Typische Bestandteile dieser Art von Editoren sind domänenspezifische, grafische Objekte (engl.: Figures) und Sichten (engl.: Views), Werkzeugpaletten (engl.: tool palette) und eine konsistente Art und Weise diese Objekte zu sondieren und zu manipulieren.
Anwendungen von JHotDraw
[Bearbeiten | Quelltext bearbeiten]UML-Editoren, Workflow-Management-Systeme oder (grafische) Petri-Netz-Simulatoren sind prädestinierte Anwendungen für JHotDraw.
Benutzung von JHotDraw
[Bearbeiten | Quelltext bearbeiten]Charakteristischer Unterschied gegenüber Klassenbibliotheken ist, dass der Kontrollfluss vom Framework vorgegeben wird. Der Benutzer des Frameworks kann sich mittels Vererbung und dem Überladen dafür vorgesehener Methoden in die Ereignisverarbeitung (Maus-/Tastatur-Events, Repaint-Events) einklinken, um domänenspezifische Funktionalität zu implementieren.
Entwurfsmuster in JHotDraw
[Bearbeiten | Quelltext bearbeiten]JHotDraw wird (nicht nur) im akademischen Bereich gerne genutzt, um den gewinnbringenden Einsatz von Entwurfsmuster (engl. "design patterns") zu demonstrieren und zu untersuchen. Erich Gamma, Mitautor des GoF-Buchs "Entwurfsmuster – Elemente wiederverwendbarer objektorientierter Software" ist einer der Entwickler von JHotDraw.
Wurzeln
[Bearbeiten | Quelltext bearbeiten]Die Wurzeln von JHotDraw liegen im Smalltalk-basierten "HotDraw"-Framework.
Alternativen
[Bearbeiten | Quelltext bearbeiten]Es gibt diverse andere Frameworks, die ähnliche Funktionalität bieten wie JHotDraw. Hauptkonkurrent ist das ebenfalls kostenlose Graphical Editing Framework (GEF) aus dem Eclipse-Projekt, welches statt AWT/Swing das SWT-Toolkit nutzt. Damit ist man bei der Wahl des Widget-Toolkits relativ festgelegt, auch wenn Brücken-Komponenten entwickelt werden um Swing/Java2D-basierte Subsysteme mit SWT (und umgekehrt) nutzen zu können. Das Piccolo-Projekt bietet einen komplexen, Scene-Graph basierten Ansatz zur Darstellung von Figuren sowie als spezielles Merkmal stufenlose Vergrößerung auf Basis von Java2D.