Dr. Winston Prakash Ph.D. 

Personal Website

My involvement in Visual Web Development Tool

It all started way back in late 2002, few of Sun Senior Engineers (including me) pondered, what if we create an IDE that would attract developers new to Java world, especially who would like to move from VB/ASP to Java. We thought the primary attraction would be a Visual Web Development Tool. Sun already has an IDE called Netbeans. However, at that time Netbeans was meant for developers with advanced Java skills, which of course is no longer true. Netbeans has grown so much over years, it can now cater for wide range of developers, from novice to advanced. That is why the Visual Web Development Tool has been fully integrated in to Netbeans.

Developing an IDE from scratch is next to impossible, so must start with an existing IDE and modify. The solution may be to completely overhaul Netbeans. However, being an established Open Source tool, making incompatible changes to Netbeans for the sake of another breed of developers with out the consent of the community sounded impractical. So the idea of a new IDE was born, that would fork Netbeans source base (in a closed repository), and make incompatible changes to it, to make its look and feel similar to that of an IDE familiar to VB/ASP Developers. The new IDE was later called Sun Java Studio Creator. Since VB/ASP developers were the main target audience, developing an IDE for Java Based JSF application was an ideal choice. In order to mold Netbeans into this ease of use tool, we identified the following major area of work for May 2003 Java one presentation.

  • Dockable Window System
  • Server Navigator for easy interaction with services like datasources, EJB and web services
  • Palette for drag and drop components
  • Project Navigator
  • Dynamic Help
  • Document outline Pane
  • Single Click Deployment to bundled Application Server
  • Single Click web application debugging.

Following are the major area I contributed.

Window Manager (WM)

One of the main sluggishness of NB 3.5 is its Window Manager. Even though there were proposal to rewrite the WM, the time line to finish was Feb. 2004. However, we want it by May 2003 for Java One. Since we had only 4 months left for Java One, it was impossible to wait fro the new WM from netbeans. I proposed to use a third party tool called JIDE. I presented my proposal on Dec 2002 just before the winter break. The major problem with then (NB3.5) window manager was, it was never built with MVC (Model-View-Controller) paradigm in mind. Even though JIDE is architected as MVC, using it as such would break the modules as they depend heavily on the Netbeans Window Manager architecture. So I chose to rewrite the Model and Controller part of the Window System Architecture (a major re-write called Rave Window Manager ) and use JIDE as View (Layout Manager). Since, I know that there may be issues if I tightly integrate JIDE and JIDE licensing could not be worked out, I architected additional layer of abstraction between Rave Window Manager & Layout Manager and the interaction between them is defined by a simple event model. This facilitates easy substitution of another layout manager with out any modification to the Window manager controller. I worked effectively with JIDE software to resolve many of the issues associated with integrating their product with Rave and we successfully did the Rave demo with JIDE integrated at Java ONE , May 2002.

However, due to licensing issue (legal could not work out a deal with JIDE), we had to drop JIDE. Since we need to have a window manager for TP release (Oct 2003) and JIDE deal has fallen out, I took the decision to rewrite the Layout Manager ourselves. Since I already architected such as way JIDE could be easily replaced this was not a major issue. I designed the Layout manager from scratch and did the coding along with a contractor from Germany.

Toolbox & Designer-Toolbox interaction Model

One of the main deficiency of Netbeans is lack of provision to drag and drop components on to designer. For this we need two parts.

  • A generic toolbox to display the set of components
  • A simple drag and drop model to drop components on to designer

I designed and developed the toolbox from scratch which can display set of components . Additionally, I implemented the simple Drag and Drop component model to drop the components on to the designer

Modifying Netbeans core platform

In order to make the Netbeans into a ease of use tool there were several changes needed to Netbeans IDE as a whole, including

  • Several changes to the look and Feel. Worked with HIE and external designers, Rocket communication to create and integrate the icons and modified the core to reflect their specifications and recommendations to create a “pretty” IDE.
  • Based on the rocket communication designers specifications (color and shading), I developed the pluggable Swing Look And Feel based on the Java Swing Look and Feel specification
  • A start page (welcome panel) where the user could start their new project or open the existing project.
  • Several modifications related to “active node” (a global way for interaction among IDE sub components) for proper interaction between toolbox, project, designer and property sheets and dynamic help system.

Server based application debugging for ease use

Even though Netbeans IDE has a well defined debugger and attaching to a remote JVM for remote debugging, it is a tedious process to debug a web application. Everything is manual including

  • Creating a web application
  • Building a web application
  • Starting the server in debug mode
  • Deploying the web application
  • Starting the debugger
  • Attaching the debugger to Application Server
  • Running the application to reach the debug point

I designed a methodology to automate the whole process using project profiles that has a flag to inform that the project is in “debug” mode. Also introduced logic for the project to invoke the application server in debug mode, if the project is in debug mode. Overall implemented such a way that a simple menu “debug project” would do all the step with out any manual interaction.

Server based web application error handling

I architected, designed the socket based simple client server model for handling error occurs in a web application developed using Rave IDE (see for details

The concept has three parts

  • A error handler Servlet in the JSF application acts as the client that communicates with IDE.
  • An IDE module that acts as the server. The server accepts simple commands from the client and executes them
  • A simple protocol for mutual communication between the client and server.

I also involved considerably in other parts of the IDE