Bean Bowl

Fuzzy2.gif (2058 bytes)
version 1.3
released 2001-10-14

Copyright © Henrik Kniberg

CoolRedHorizontalLine.gif (1279 bytes)
** NEWS **
Bean Bowl goes open source!
This project is now hosted at source forge: http://www.sf.net/projects/beanbowl/

CoolRedHorizontalLine.gif (1279 bytes)

What is the Bean Bowl?
How does it look?
I want to run it as an Applet!
I want to download and run it!
Features to come...
Recent changes
Other links

CoolRedHorizontalLine.gif (1279 bytes)


What is the Bean Bowl?

Bean Bowl is a 100% pure Java program that allows you to work with Java classes and objects in "real time", using direct manipulation techniques. I developed it as a tool to aid my own Java-related work, but realized that this must be useful to many other Java programmers as well. Basically it lets you study and debug programs, classes, and APIs without having to write any code at all.  You can also save and load your bean bowls, thus saving a collection of objects that can later on be reloaded in the exact state (this only works if all objects in you bowl implement the java.io.Serializable interface).
Here are three situations in which the Bean Bowl is really useful: At first glance this may look no different than, for example, the BeanBox that comes with the BDK.  But at second glance the differences should become apparent:
CoolRedHorizontalLine.gif (1279 bytes)


How does it look?

 Click here to see a full screenshot.
 
 
Bean bowl contents
This panel on the left side of the main window shows all the objects that are currently included in your bean bowl.  Here you can choose which class to browse, and manipulate the objects. mainwindow.gif (4813 bytes)

 
 
Class browser
This window lets you directly manipulate a class. The "Constructors" panel lets you create a new instance - you simply select a constructor, feed in the parameters, and press "Create". The new object instance will be added to the Bean Bowl. The "Static Methods" panel exposes all the static methods that this class provides. You can execute them directly - in this example I have used getProperty() to check the value of the "java.version" property.
constructors.gif (4328 bytes) staticMethods.gif (5301 bytes)

 
 
Object browser
The object browser can be opened for any object. The "Properties" tab exposes all properties of the object, and lets you modify the ones that aren't read-only. The "Methods" tab lets you directly execute any methods on the object. In the example below I have used the add() method to add a JCheckBox to my panel.
properties.gif (7522 bytes) methods.gif (5502 bytes)

 
 
Component viewer
To view a component, use the pop-up menu and select "view".  popup.gif (5059 bytes) gui.gif (1139 bytes)

 
 
Exceptions
If something goes wrong, an object browser will simply be displayed for that Exception, allowing you to examine exactly what went wrong, where, and why.  exception.gif (3563 bytes)
CoolRedHorizontalLine.gif (1279 bytes)


I want to run it as an Applet!

In that case I'm afraid you'll have to wait for the next version, I can't be bothered to fight all the browser incompatibilities right now.  If you really badly want to run it as an applet, let me know and I might hurry up. Or better yet, join the project and do it yourself!
CoolRedHorizontalLine.gif (1279 bytes)


I want to download and run it!

NOTE - you must have Java 1.2 or (preferrably) 1.3 installed on your computer and the JAVA_HOME environment variable must point to where it is installed (for example d:/java/jdk1.3).
The "ext.dirs" stuff means that any other JARs that you place in the ./external directory will be included. If you want to include class files that are not JAR'ed you have to create a subdirectory under ./external, for example "./external/myclasses", and place your classes under there.

Here's a quick start guide.

CoolRedHorizontalLine.gif (1279 bytes)


Features to come...

The following stuff is not yet implemented but definitely planned for the future:

High priority

Not as high priority
CoolRedHorizontalLine.gif (1279 bytes)


Recent changes

Done for version 1.3.1: Done for version 1.2.19:
  • Updated to JDK 1.3
  • Removed the object selection feature, due to certain complications that I need to have a closer look at. It didn't have any real purpose anyway, except making the GUI look more cool...
  • No more expiration dates, you can use this version forever
  • Fixed some minor bugs here and there
  • Done for version 1.1.3: Done for version 1.1.2: Done for version 1.1.1: Done for version 1.1:

    Other links

    CoolRedHorizontalLine.gif (1279 bytes)
    Fuzzy2.gif (2058 bytes)
    Copyright © Henrik Kniberg