Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Smalltalk IDEs Come to the Browser: Jtalk, tODE, Lively Kernel 2.0

Smalltalk IDEs Come to the Browser: Jtalk, tODE, Lively Kernel 2.0

This item in japanese


Smalltalk implementations have always had tight integration with IDEs, starting with the very first ones created by Dan Ingalls and Alan Kay at Xerox PARC.
IDEs and developer tools have started coming to the web, eg. Cloud9, or use HTML and Javascript GUIs like RЅtudio (RStudio uses GWT) or the WebInspector that's shipped with WebKit browsers. Some Smalltalk implementations have started down that path too.

tODE is a web browser-based frontend to the capabilities in a Pharo (a version of Squeak) and GemStone Smalltalk. tODE brings HTML/Javascript versions of the various browsers (class browsers, etc) to the web browser. The tODE approach makes sense for applications written with the Smalltalk web framework Seaside; it's possible for a developer to use the web application and in case of breakpoints or exceptions makes it possible to be transported straight into the debugging tools - right there in the web browser. The tODE approach also brings inspectors to the browser to help look at the components generated by Seaside.

The first version of tODE 0.1 has just been released and currently works with Pharo and GemStone. The tODE website has a simple way of trying tODE: download the one click application which brings a Pharo VM and image set up for tODE. On launch, start tODE  and point a web browser at http://localhost:8080.
A similar approach has been tried by Cincom with WebVelocity.

Another approach to Smalltalk in the browser is to create a Smalltalk runtime that runs on the Javascript VM. Jtalk is a Smalltalk that uses the Pharo grammar (with a few modifications, eg extension for inline Javascript). The Jtalk compiler is written in Jtalk and compiles straight to Javascript. Some of the solutions of Jtalk can be traced to Avi Bryant's Clamato project, including the use of the PetitParser, a Smalltalk-based PEG parsing library written in Lukas Renggli.
As most Smalltalks, Jtalk comes with the development tools to write, read, and browse available classes; on the Jtalk website, pressing the button "Class browser" pulls up the IDE, including a REPL ("Workspace"). The beginnings of a debugger have been added to Jtalk GitHub repository. The code in the browser can be edited and committed back to a WebDAV server (see documentation on how to use JTalk with a WebDAV server).

Jtalk compiles Smalltalk code to Javascript, and as such has to deal with some of the issues of the Javascript platform. Jtalk creator Nicolas Petton explains the problems of implementing Smalltalk's DNU (doesNotUnderstand, similar to Ruby's method_missing) functionality.
In short, implementing the feature requires that all call sites need to check if a method exists in the receiver, if not it invokes the DNU specific handlers.
Gilad Bracha, one of the creators of the Newspeak language, has recently mentioned that a Javascript version of Newspeak is in the works and, as Newspeak's ancestor list includes Smallalk, has encountered the same problems and more. 
The problem is reminiscient of the problems of implementing dynamic languages on the JVM, which have recently been adressed in Java 7 with the invokedynamic bytecode and related functionality. A somewhat comparable solution for the JS platform are Dynamic Proxies, which will be included in a future version of Javascript. Early versions of Dynamic Proxy support exist in Mozilla Firefox and work on Dynamic Proxy support in Google's V8 has started too. Obviously, it will take a while until languages for Javascript VMs can rely on Dynamic Proxies being available; whether it'll take as long as Java's invokedynamic functionality remains to be seen.

Finally, another approach to bringing a Smalltalk-style IDEs to the web browser is the Lively Kernel. Created a while ago by a team around Dan Ingalls, it was moved from Oracle into its own project. The project's been silent for a while, but a recent announcement shows that Lively Kernel 2.0 has been progressing. Dan Ingalls has explained the reasons the ideas and concepts behind the original Lively Kernel, and the Lively Kernel 2.0 brings a new rendering mode for the Morphic based GUI, a new way to serialize the state of a Lively session, similar to Smallalk Images.

Rate this Article


Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • You are missing one

    by Erlis Vidal,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    This is a good one, created by Peter Fisk

  • Re: You are missing one

    by Werner Schuster,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Yes, I've been tracking Peter's work, including QuickSilver Smalltalk (and the predecessor GWT Smalltalk: as well as _its_ predecessor Vista Smalltalk).
    The reason I didn't include QuickSilver Smalltalk is that the project hasn't really seen much activity recently, at least from what I can see on the blog:

  • Nice to see Smalltak resurgence

    by Faisal Waris,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    As an ex Smalltalk-er, it is nice to see that the language is still thriving.

    Looking (breifly) at the many mentioned here, I like the idea of building SPAs (single page apps) with jTalk and Lively Kernel. It seems much more sane than hacking raw HTML5 and javascript together.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p