- JSKore (pronounced "JAY-score") - wrappers around the JSC references and various wrapper to allow access to JSC interpreters and objects and passing of basic types to and from JSC and simple callbacks from JavaScript into Objective-C code.
- Libraries - additional runtime time libraries that expose a range of standard "scripting language" common routines to the JavaScript code. This includes both "JSKlasses" and "JSKobjects". The former is for things which can get instantiated like File, the latter is singleton packages like Sys.
- JSObjC (pronounced "JAY-sobj-CEE")- a very simple "Objective-C from JavaScript" library. Based on older (10.4 compatible NSInvocation) technology, this is useful to allow for simple introspection and dynamic scripting work in your application [NB: Current version has some functional limitations]
- jski (pronounced "JAY-skee"), a command line interpreter tool that uses the core and libraries to provide a shell scripting language package.
- JSKoa (pronounced "JAY-skow"), a full JavaScript - Objective-C bridge, leveraging Leopard's "Cocoa Bridge" support that allows seamless interaction between JavaScript and Cocoa (allowing Cocoa applications to be written in JavaScript). [NB: JSKoa isn't currently available]
JSKoa requires 10.5, while the rest work fine under 10.4 with a recent version of Safari.
The Core and Libraries are built on an "explicit permission" model, meaning that JavaScript code can only access things outside of the scripting context by having things explicitly exposed to it. As a result, this allows for using it to embed a JavaScript interpreter inside an application and not have to worry about JavaScript code potentially causing problems. For example, libraries must be explicitly added to the scripting environment, so one could create an application that allows the JavaScript interpreter to have local file access but not network access.
JSKoa, on the other hand, automatically gets access to all of the Cocoa classes, so it's basically wide open and permissive. As such, this means that using JSKoa in an embedded scripting solution is probably not a good idea.
JSKit also comes with a simple "turtle graphics" example, that shows how one would use the various JSKit layers and objects (including a simple editor using JSKEditor)