JhotDraw là một khung làm việc ứng dụng cho việc xây dựng các ứng dụng vẽ hình đồ họa. Nó là một khung làm việc thuần Java và là một sản phẩm mã nguồn mở. Người sử dụng dùng các trình vẽ hình để tổ chức các đối tượng hình đồ họa trên một miền vẽ. Nó là một loại ứng dụng rất hay gặp trong các máy tính để bản. Tuy nhiên các loại hình đồ họa vẽ lại khác nhau. Một số trình vẽ hình cho phép người sử dụng vẽ các hình như tranh ản, một số khác lại cho phép vẽ hình trong một miền nào đó để khi thao tác với các hình đó thì nó thể hiện ngữ nghĩa của miền đó.
JhotDraw là một khung làm việc ứng dụng có thể được phát triển cho các trình vẽ hình mang tính kỹ thuật. Ban đầu nó được phát triển trong SmallTalk bởi Kent Back và Ward Cunningham. Sau đó nó được phát triển bởi Erich Gamma và Thomas Eggenschwiler (sau này được gọi là nhóm bộ tứ). Phiên bản hiện tại là 6.1 beeta. Nó là một khung làm việc có độ tin cậy và độ chắc chắn rất cao, và là một sản phẩm mã
- 19 -
nguồn mở rất nổi tiếng, được thế giới mã nguồn mở phát triển hơn 10 năm nay. Nó cũng là một trong những dự án phát triển phần mềm được thiết kế một cách sáng sủa để sử dụng lại và được gán cái nhãn “Khung làm việc” (Framework).
JhotDraw, bản thân chúng dựa trên lịch sử lâu dài của các khung làm việc cho các trình vẽ hình. Một cách cụ thể, JhotDraw là một phiên bản Java của một khung làm việc SmallTalk (ngôn ngữ lập trình hướng đối tượng đầu tiên), khung làm việc đó được gọi là HotDraw. HotDraw dựa trên SmallTalk cũng là một sản phẩm mã nguồn mở và hiện tại nó cũng phát triển song song cùng phiên bản của nó (JhotDraw) dựa trên Java. Hơn nữa, những phiên bản JhotDraw còn dựa trên nền tảng của ET++, một khung làm việc ứng dụng C++ trước đó.
Erich Gamma sử dụng JhotDraw cho mục đích dạy học, đó chính là lý do tại sao nó được thiết kế và được triển khai rất tốt. Mã nguồn của nó được chú giải theo cách chú giải của tài liệu Java. Hiện nay nó đang là một sản phầm mã nguồn mở rất nổi tiếng trên sourcefogce.net, đang được Wolfram Kaiser chịu trách nhiệm tổng hợp các phản hồi và chịu trách nhiệm chính cho việc phát triển nó.