JHotDraw ist ein freies,Java-basiertesFramework 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.
UML-Editoren,Workflow-Management-Systeme oder (grafische)Petri-Netz-Simulatoren sind prädestinierte Anwendungen für JHotDraw.
Charakteristischer Unterschied gegenüberKlassenbibliotheken ist, dass derKontrollfluss vomFramework 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.
JHotDraw wird (nicht nur) im akademischen Bereich gerne genutzt, um den gewinnbringenden Einsatz vonEntwurfsmuster (engl. "design patterns") zu demonstrieren und zu untersuchen.Erich Gamma, Mitautor desGoF-Buchs "Entwurfsmuster – Elemente wiederverwendbarer objektorientierter Software" ist einer der Entwickler von JHotDraw.
Die Wurzeln von JHotDraw liegen imSmalltalk-basierten "HotDraw"-Framework.
Es gibt diverse andere Frameworks, die ähnliche Funktionalität bieten wie JHotDraw. Hauptkonkurrent ist das ebenfalls kostenloseGraphical Editing Framework (GEF) aus demEclipse-Projekt, welches stattAWT/Swing dasSWT-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.