Andreas Zeller‘s “The Future of Programming Environments”, provides an high level overview on the current trends of development tools. In this article, Zeller stated that development tools are evolving from extensible frameworks that supports integrated tools and their automation to “automated assistance in all development decisions”. Zeller further pointed out many known techniques that collects data about a piece of code in both static form and during run-time, then apply various automated analysis techniques that leads to visualization, statistics, data mining and machine learning to increase the productivity and code quality.
The paper serve more of a “review” or a “digest” of current trend of tools development than a “research” paper. Zeller certainly stated various recommendations that can serve as “best practices” for developers of tools. I would treat these recommendations as more of “common sense” than “design patterns”. This certainly is a good introductory paper with some interesting ideas and examples on what others have done in the tools space.
I spent a little bit of time check out both webtest and jWebUnit. Here are my first impression:
When I tried to use jMaki’s dojo.editor, I first thought “Hay this is dojo, so I can just use it the way dojo related documentation stated it, right?” No. jMaki created a wrapper for dojo and the configuration argument doesn’t match 100%. So, After reading across several documentations, here is one trick for configure dojo.editor with medium pre-set tool bar. The default is small. Beyond that, there isn’t too much more you can configure. So, dojo.editor in jMaki isn’t as configurable as dojo.editor by itself. This simplification is fine if the presets are good enough for your needs.
I found repeated need to search and replace a lot of known little text strings all over a text configuration file, private.properties for NetBeans. Since I expect to do this several times in the future, I used sed commands in a script do the trick. With examples on this page and a little bit of regular expression, I was able to create a simple script to do what I need for now.
Subversion can ignore certain files when you attempt to commit. In NetBeans, it is just as simple as right click on the Locally Modified file in Subversion panel and choose Ignore option. On the command-line, you can see this section from the documentation. you can also configure the global-ignore property in Subversion’s configuration file.
NetBeans 5.5 hard-wire some of the environment information, such as where libraries are located on the file system. You can certainly right click on a project and choose “Resolve Reference Problems…”, however you will have to figure out where each library is located. Personally, I feel it is more painful than manually tweak [YOUR_NETBEANS_PROJECT_HOME]/nbproject/private/private.properties file. So, I just replace the prefix to fit my local environment and NetBeans is happy again. :) You might want to make a backup copy in case you are working with a code versioning system, so that you can preserve your own configuration in case you did an update.
Maybe NetBeans 6.0 is smarter about this. Since all the jar files are in the same directory tree, the IDE should just figure out where all of its libraries are located using relative paths rather than absolute paths. Eclipse doesn’t have an issue with this. ;)
Belenix “is an OpenSolaris Distribution with a Live CD (runs directly off the CD).” Just a couple days ago, Belenix DVD just released, which has NetBeans 5.5 and Glassfish. After downloaded the image off the net and burned onto a DVD, here are my initial observations on one system:
+ It recognizes ATI video chip and works with wide screen. This is pretty cool.
+ ACPI works out-of-box. I am impressed. Ubuntu 6.06 doesn’t work with this box. At least not yet.
– No sound. I can live with that on a development box.
– It can’t recognize the Ethernet out-of-box. That just kills my dream to play with Belenix on this box. Maybe I’ll try it on a slower/older machine.
+ NetBeans runs as advertised. No installation necessary. This is very cool.
I know that most of negative (-) points I made are addressable in OpenSolaris rather than in Belenix. So, I am still impressed at what folks at Belenix did. Keep up the good work.
I was looking at a blob of code that I don’t know where to start to get a handle on what it does. The code also didn’t come with documentation. So, I turned to NetBeans Enterprise Pack 5.5 beta. The feature that I wanted to try was it’s UML reverse engineering features. I downloaded it, installed it on top of NetBeans 5.5 rc1, and started NetBeans. Then I followed this tutorial to generate UML model from source code. The tutorial has some screen-casts that shows you step-by-step on how to use UML modeling features in NetBeans Enterprise Pack 5.5 beta. Finally, I started to generate some class diagrams. The diagrams certainly helped me to better understand which classes are related to which and helped me to conceptualize the blob of java code that I am trying to understand. I was able to export smaller diagrams to image files. Diagrams with larger number of classes didn’t export successfully. I hope it will be fixed by FCS. All in all, it’s a handy feature to keep in your toolbox. Don’t expect to throw away your whiteboard and dry erase markers, you may find them useful too.
At end of the session, I also used Dia to draw a variation of finite state machine to map out the flow of a piece of code.