Background

There is a growing trend towards integration of multiple languages through scripting. In a famously controversial white paper (Ousterhout 97), John Ousterhout, now of Scriptics Corporation, argues that scripting -- the use of a high-level, untyped, interpreted language to "glue" together components written in a lower-level language -- provides greater reuse benefits than other reuse technologies. Acording to Ousterhout, "system programming languages are strongly typed to help manage complexity, while scripting languages are typeless to simplify connections between components and provide rapid application development."

Although traditionally a language such as C or C++ has been the lower-level language, more recent efforts have focused on using Java. In early 1998, Sun Microsystems Laboratories announced two products aimed at fulfilling this goal with the Tcl and Java programming languages. The goals of these products are to "create a synergy between Java and Tcl" and to "make Tcl the scripting language for Java" (Johnson 98).

The first product, Tcl Blend, is a C interface between the Tcl interpreter and the Java virtual machine (JVM). The Tcl programmer is provided with a set of commands that create and manipulate Java objects, and allow Java code to create and access Tcl interpreters. Tcl Blend originated in a simpler interface named TclJava which was created by Scott Stanton and Ken Corey (Stanton and Corey 96) of Sun Laboratories. The second, Jacl (Lam 97), is an implementation of the Tcl interpreter written entirely in Java. This project originated as a research project developed by Ioi Lam and Brian Smith of Cornell University.

The combination of scripting and Java is taking place on other fronts. Users of the Python language, for example, are looking at integrating Python and Java, with very similar goals to those of the Sun team (Cunningham et al 97, Hugunin 97). The creator of Perl, Larry Wall, has written a Java-Perl interface for O'Reilly Software (JPL 98). JavaScript, although primarily a language for scripting Web Browsers, nonetheless provides a seamless interface to Java code running inside the same browser.

In this tutorial, we will be demonstrating how Tcl and Java combine with Tcl Blend and Jacl. These two languages are, individually, wonderful choices for a scripting and a systems-programming language. They both have active development communities, are mature and well-designed, and are portable across many platforms. Being able to use these two languages together produces a whole that is, in many respects, greater than the sum of its parts.