The JIVE project aims to produce a binary free, cross platform application
development environment. JIVE stands for Joel's Integrated Visual Environment,
and includes a visual application editor, and a basic library of "Machines",
and "Connection Machines". Machines are plugged together dynamically
to
create an application, which is defined in a script file. This script
is read
by a standard binary application when it is run, which uses JIVE library
functions to initialize the working application by dynamically linking
together the "Machines" until they form a working system.
A "Machine" is like an object which dynamically connects to all the
data
it works on, and generally performs one specific task, at one specific
abstraction level. Basic machines are simply containers for other machines,
which are run in turn (like a dynamic list of functions) to create
a desired
function or effect. Machines communicate with their containers about
the
data they require to connect to, in able to function correctly. Their
containers attempt to provide them with this data.
To design a machine program, you work abstractly from the top down (or
from
the bottom up, or middle out - as you're working abstractly it doesn't
matter), setting up an application machine, then inserting the different
areas the application wishes to achieve, and continuing to do this
until
you reach a very basic level. Machines which do actual work are then
placed
into this framework, and the application begins to function.
The goal of JIVE is to provide an environment allowing real time manipulating
of the application machines (while the application is running), and
to
provide maximum real time debugging output to enable problems to be
solved
simultaneously with the program being edited as it is run.