Copyright © Henrik Kniberg
** NEWS **
Bean Bowl goes open source!
This project is now hosted at source forge: http://www.sf.net/projects/beanbowl/
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:
- Debug your own programs dynamically - this lets you directly manipulate your objects, call methods, check the results, catch exceptions, etc. No more having to write "main"-methods to test your code!
- Study a third-party API - The best way to learn a new API (for example a third party class library), besides reading the documentation, is to play around with it! Use the Bean Bowl to study the behaviour of the classes.
- Learn or teach Java - Again, the best way to learn is to play around - use the Bean Bowl to study (or demonstrate, if you are trying to teach someone else) the behaviour of Java objects and classes.
- Bean Bowl works with any objects, not just JavaBeans.
- You can refer to objects that you have previously created, using an automated naming mechanism. This makes it very easy to connect objects to each other.
- You can refer to classes directly, and access their constructors and static methods.
- You can call any methods directly, and easily access the output value.
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.
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.
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.
Component viewer To view a component, use the pop-up menu and select "view".
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.
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!
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).
- Download the latest beanbowl-x.x.x.zip from sourceforge.
- Unzip it on your local system
- Run it by either executing run.bat (if you are on a windows system) or by browsing to your bean bowl directory and typing:
java -Djava.ext.dirs=./external -classpath ./lib/beanbowl.jar com.netbreeze.bbowl.gui.BeanBowlGUI
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.
The following stuff is not yet implemented but definitely planned for the future:
Not as high priority
- Add seperate editors for java.util.Set and java.util.List, since they are quite different.
- Add editors for arrays
- Add a web layer, so you can interact with a bean bowl remotely through a web browser.
- Event notification and triggering
- Dynamic class loading, right now you can only use the classes that were in your CLASSPATH when you started BeanBowl...
- Helper GUIs and shortcuts for things like:
- Looking up objects over JNDI, for example EJBs
- Distributed computing via Java RMI, Voyager and other similar protocols
- Interacting with JMS queus and topics
- Online help
- Make it work as an applet
- Make more use of drag & drop
Done for version 1.3.1:
Done for version 1.2.19:
- This is now an open source project! Hurray! If you want to get involved go to http://sourceforge.net/projects/beanbowl/
- Implement property editors for collections, i.e. GUIs for viewing and editing the contents of java.util.Collections. You can use drag & drop to add and remove elements. It is still a bit crude, for example you can't rearrange items within a list and things like that (unless you use normal method calls of course...). Another important thing that is missing is GUIs for array management.
- Refactored the whole project to make it more clean and independent.Done for version 1.1.3:
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.2:
- You can now rename your beans
Done for version 1.1.1:
- Hardly anything at all, haven't had time. Just changed the version number and the expiration date. Oh yeah, I removed an unneccessary warning that was being displayed when you settings file was missing (which happens the first time you run bean bowl).
Done for version 1.1:
- Fixed the icon problem. Now the icons are snugly embedded in beanbowl.zip
- General GUI enhancements:
- enhanced menu system
- changed to platform-neutral look & feel
- went back to using the internal windows within one single main window, so that you can easily move and minimize the whole bean bowl application.
- and some other details...
- Added a cool splash image :o)