QTk is a tool built on top of Tcl/Tk that allows user interface designers to adopt a cost-effective model-based approach for designing executable user interfaces. QTk is based on a descriptive approach that uses a declarative style where appropriate (symbolic records to specify widget types, initial states, and geometry management; procedure values to specify actions), augmented with objects and threads to handle the active part of the interface. QTk offers four original advantages: unicity of language (only one language serves as both modeling and programming language), reduced development cost (the interface model immediately gives rise to an executable user interface), tight integration of tools (specification, construction, and execution tools are all integrated), and improved expressiveness (the interface model is very compact to produce and cheap to manipulate). The advantages are made possible by a tight integration with a multiparadigm programming language, Oz, that supports symbolic data structures, a functional programming style, an object programming style, and cheap threads. QTk is a module of the Mozart Programming System, which implements Oz. We show how to port QTk to Java, which allows to retain some but not all of the tool's advantages.