Skij: Scheme in Java for Interactive Debugging and Scripting

What is Skij?

Skij is (or was) a scheme interpreter in Java, designed chiefly for easy scripting, debugging, and exploratory programming in the Java environment. Some cursory documentation for skij is available here. An unpublished draft of an article on Skij is available here.

Status of Skij

Skij was developed by me at IBM Watson Labs, which released it under their alphaWorks program. Unfortunately they have now "retired" it, so it is no longer available. I've asked IBM several times if they will release it under an open source license, but to no avail (basically it's too small a thing for them to bother with the paperwork). If you'd like to get Skij released in some form, please write to John Field at IBM and tell him so. Or you could write to alphaWorks and ask them to unretire it

Alternatives to Skij

There are quite a few other Scheme-in-Java systems out there, including JScheme, Kawa, and SISC. All of these have reasonable licenses, unlike Skij. Although they all have significant merits, none are quite as good (IMO) as Skij at the main thing it was designed for, which is making it as convenient as possible to explore the world of Java objects interactively.

JScheme is probably the closest to Skij in concept -- a simple interpreter, with the ability to access Java functionality from Scheme. In fact, some of the undocumented innards of JScheme are, um, highly compatible with Skij. Unfortunately JScheme is not quite as convenient to use as Skij, and there appear to be some problems with its method dispatching facility (according to reports I've received from people trying to port Skij code to JScheme).

SISC (Second Interpreter of Scheme Code) is a newer Scheme interpreter that adheres much more closely to the full Scheme standard than any of the other implementations I've seen, and even implements a full call-with-current-continuation. It has excellent performance to boot. Unfortunately it's interface to Java classes is somewhat clunky to use.

Kawa compiles Scheme to bytecodes so is much faster than Skij or JScheme, at the cost of being a larger and more complex system.


Michael Travers / mt(at)alum.mit.edu