"One picture is worth a thousand words."
    -- Fred Barnard


"Write one to throw away."
    -- Fred Brooks


Tomato is an experimental prototype of a Java application development environment. It aims to augment text-based Java programming with a point-and-click visual programming language.

The prototype works sufficiently to be used to help develop parts of itself. As parts of Tomato are developed in Tomato, the development process itself is being evaluated to find ways to improve Tomato. Thus, Tomato development is shaped by real-world development requirements, rather than adherence to a predetermined abstract design. This process of long-term ad-hoc prototyping1 should either produce a working visual programming system, or leave a trail of empirical evidence to indicate why general purpose visual programming systems aren't viable.

Once the Tomato prototype can handle most development tasks and demonstrate that general purpose visual programming is viable, it will be redesigned from scratch. The next generation Tomato will be developed entirely within the final evolution of the Tomato prototype.

To our knowledge, Tomato is the first open source development tool of its kind for the Java platform.



Specialised visual programming languages -- eg., National Instruments' LabVIEW, the shader language in Houdini, or ToonTalk -- have proven successful in niche markets or genres. In these contexts, visual programming has demonstrated advantages over traditional text-based programming.

Visual programming has not yet made a significant impact on general application development. While efforts like Sun's BeanBox or the BlueJ project are promising, they are limited in scope. Tomato was created to explore the use of visual programming for general purpose development.







Tomato is a work in progress. The current release is a working prototype, suitable for experiments and creating simple classes or test scripts, but it is not ready for production.

The visual scripting and class authoring facilities are incomplete. It is possible to write useful Java classes, but inner classes are not yet supported, building expressions is laborious, parameters cannot be defined for new methods and constructors, and so on.

The documentation, including this document, is incomplete.

These and other limitations will be addressed in future versions.

In other words, this tomato ain't ripe! Tomato is being released at this embryonic stage in order to develop interest and solicit feedback on the design.



Tomato is a Java application, and should run wherever Java is available. Tomato was developed under Linux, however, and has received limited testing under Windows.

You will require a version 1.4.x Java 2 Platform and should have a Java compiler.

See the Download and Installation section below for URLs where you can obtain these.

The Java compiler is optional, but without it you cannot compile new classes; you will only be able to work with existing Java classes.



We provide a unique bit pattern known as "Tomato". As we have no way of knowing how Tomato may be used, we make no claims as to its fitness for any particular purpose, including whatever purposes might be implied by or inferred from this or any other document, including Tomato itself. We are not responsible in any way for the use of Tomato. You are fully and wholly responsible for the results of any and all use of Tomato.

Tomato may not be used to test or develop applications where vertebrate lifeforms may be harmed by a possible malfunction. This includes but is not limited to medical, weapons, and aircraft flight control systems.

The Tomato source code is released under the Gnu Public License, a copy of which can be found at

Classes and applications created using Tomato are not bound by this license.

"Java" is a trademark of Sun Microsystems, Inc.

"Linux" is a trademark of Linus Torvalds.

"Windows" is a trademark of Microsoft Corporation.



Please try out the TomatoWiki.



Please see

Tomato is hosted on SourceForge at



None yet...


Current Version

The current release of Tomato is version 0.0.0-pre.


Download and Installation

  1. Download and install the Sun Java 2 Standard Edition SDK from Obtain the SDK, not the JRE. The JRE (Java Runtime Edition) does not include the Java compiler.

  2. (Optional) The Sun Java compiler is slow. You may wish to use the Jikes compiler, which is much faster. Obtain it from Jikes is just the compiler -- you'll still need the Java 2 Platform.

  3. Download to a directory of your choice.

  4. Unzip the file, including all its subdirectories, into a directory of your choice.


Running Tomato

Note: In the following instructions, replace <directory> with the directory you created in Step 4 under Download and Installation.

Windows: Select "Start | Run", enter java <directory>/Tomato

UNIX or Linux: Type cd <directory>; java Tomato

MacOS: Unknown.


Getting Started

Please see the Tomato - Getting Started document.



The most annoying bug is that your visual programming source files -- 'Models' in the Tomato parlance -- may occasionally become corrupt when saved. Make frequent backups!

Compilation using Jikes does not work under Windows.

Some of the sample models may not work reliably under Windows.


Taw-MAY-toe or taw-MAH-toe?

Neither. The correct pronunciation is "TAWM-ah-toe", in order to avoid confusion with a popular vegetable
3 of the same spelling.



Comments and questions regarding Tomato should be emailed to Suggestions, additions, donations and code patches will be gratefully received and duly credited. Replies are not guaranteed, but all mails will be read.



Tomato was developed by Dave Voorhis. The author may be contacted via email at Idle complaints will be ignored; interesting rants will be forwarded to interested parties; viruses will be filtered; spam will be blackholed; and job or contract offers will be seriously considered.



1 I.e., "hacking" in the classic sense.

2 Modifying an application while it executes is an unusual and strangely exhilarating experience.

3 Botanically, a tomato is a fruit.


Copyright © 2002, 2003 Armchair Airlines Computer Services Inc. All Rights Reserved. Logo