GNU offers a new kind of Java IDE

The Free Builder Project is 100 percent pure Java, nonproprietary, and free

Seasoned programmers and hackers are well aware that often the best things -- or at least potentially the best things -- are free. If you're interested in a new integrated development environment (IDE) for Java, consider avoiding shrinkwrap, price tags, and encrypted proprietary code. Instead, consider the Free Builder Project, a public-domain Java IDE licensed under the Free Software Foundation's GNU's Not Unix! (GNU) General Public License (GPL). As with many GNU projects, the Free Builder Project (hereafter referred to as FB) software and documentation are available for free. And since the source code is publicly available, if you want something added to or changed in the software, you have an opportunity to do it yourself.

FB currently offers a working prototype for Linux and Windows 95/NT that includes a customizable visual tool interface, a text editor that supports compiler error messages, a compiler module, and debugging support. Some components and features currently in development include a project manager, a background parser, a class analyzer, a multithreaded debugger, a visual component builder, JavaBean support, and support for mpEDIT -- which adds syntax coloring and enables the use of EditBeans. (An EditBean is a a simple editor bean that returns strings and processes text; see Resources for more on these.)

Free Builder, a working prototype of an open-source Java IDE, provides a visual interface that can be customized (Click for full-size image)

The origins of Free Builder

A team of volunteer Java programmers has been working on FB for over a year. The Free Builder Project was initiated by Ivelin Atanasoff Ivanov, a resident of Sofia, Bulgaria, and currently the software development department manager for Macrotex -- a U.S.-Bulgarian company developing specialized security software packages for Fortune 500 companies and the mass market. Ivanov started FB in February 1997, right after Sun Microsystems first published JDK 1.1. Ivanov organized the FB Web site and developed the first public version v.0.4.97, which was released on April 1, 1997.

Then, in November 1997, George Petkov and Peter Radkov, both working at Vanand Ltd. in Sofia, formed a new FB team and reengineered the entire Free Builder Project from scratch. In March of this year, Petkov and Radkov published the first screenshots of the new FB in development, which generated significant interest from the Java development community -- 20,000 downloads since this version first appeared. Specifically, developers requested that the source code be made available to the public.

FB promises to eventually deliver a worthy Java IDE, but before you get excited enough to download FB and get to work, be warned that it is still in a very early stage of development. Bugs and glitches are numerous, yet often simple to fix. In fact, the current FB code is only a prototype for the final product -- so downloading, configuring, and using FB is like being in the alpha-testing lab.

The FB development process

According to George Petkov, project leader at Vanand Ltd. in Sofia, FB is currently a working prototype -- a basis upon which new tools must be built, added, and modified. For example, FB includes a JavaBeans palette but no visual design tool, and the editor requires a lot of work. Like many GNU projects, FB represents an "as we go" development process. Instead of a top-down, initial-blueprints-to-final-testing-stage approach, the FB developers decide what needs to be done next, develop the feature, test it, and move on to the next decision. This flexible approach makes for powerful development, often covering the needs of many developers instead of following marketing trends and designing for profit. There are two disadvantages: that there is no official production schedule, and product support is shaky at best.

FB has some logistical problems with regard to its development, as do most GNU projects. For example, although the FB team maintains a GNUish atmosphere of flexibility, the developers are all volunteers -- so they work on FB when they can, and not according to a production schedule. As a consequence, the development of FB has been a slow process, and FB has never had an official release date.

Petkov began working on Version 07 of FB after he finished another IDE-development project using Delphi/Pascal. He had written a Pascal compiler that produced Java-like bytecode that is interpreted. As with Java, the code used a stack machine and was therefore not designed for a specific platform. Although the development of FB required completely different coding and instructions, Petkov used his IDE-development experience as a template for the GNU project.

During the process of designing and programming the various components of FB, Petkov had to learn some of the basics of Java development -- including the purpose and structure of a bean, serializing some objects, working with interfaces, and the benefits of a garbage collector.

The cons (and pros) of FB

Despite FB's importance to the Java development and free software communities, not all Java developers are convinced that IDEs are a good thing in general. Carl Muckenhoupt, a former EarthWeb developer who now does consulting work for the company, outlines the problems with IDEs.

Limited choice of development apps

First, Muckenhoupt explains, an IDE limits a programmer's choice of development applications. For example, someone who prefers to use emacs as the source code editor -- and has developed a custom emacs configuration over a long period of time -- can't take advantage of it when using an IDE. Muckenhoupt feels that the editors in IDEs are generally inferior to a custom-designed one -- so a substitution of the IDE's built-in tools may take developers several steps back in convenience and usability.

FB is constructed from JavaBeans -- so, theoretically, it should be easy to swap in an alternate editor bean. Even if this works, a programmer must choose from Java-based editors, and unfortunately these are neither the best nor the most popular editors.

Single process problems

Second, an IDE often runs as a single process. Because of this, any individual component (such as the debugger) that crashes creates a chain-reaction and crashes the entire application. This can be disruptive and even destructive if a programmer has five or six files open at the time -- not an uncommon situation for a large Java project. The programmer is then forced to reopen all of the files following the crash of a single component.

Fortunately, FB does not have this problem. When Run or Debug is selected, it starts a project as a separate process -- so each project can be terminated without crashing the entire application.

Problems peculiar to IDEs

Third, IDEs present particular problems to development teams. IDEs typically have their own built-in project management systems, which means that if several developers are working on a project, they must either all use the same IDE, which limits the choice of tools for all the programmers, or set up the same project files, which is redundant. In addition, it's difficult to start or stop using a particular IDE in mid-development, which is not a problem with non-IDE programming tools.

GUI avoidance

Lastly, Muckenhoupt, like many programmers, avoids using GUIs altogether. "Although they shorten the learning curve," he explains, "they generally make any sufficiently complicated task either difficult or impossible. If you try to put everything in a box, you'll eventually hit a point where you need to go outside that box." Muckenhoupt feels that FB compounds this problem by virtue of its being 100 percent platform-independent Java -- it can't support the integration of native code. An established, proprietary IDE like Symantec's Visual Café has the same conceptual problems as FB, but it is much more usable at this point.

But even a skeptic like Muckenhoupt concedes that FB represents a step in the right direction. The fact that the source code is available and that FB uses beans allows for a relatively easy way to drop in custom-made components -- thus returning some of the freedom that IDEs take away from the programmer. In addition, FB runs under Linux, which is an option often welcomed by programmers -- especially those who appreciate nonproprietary code.

Petkov provides some convincing arguments for using an IDE, and FB in particular. One obvious advantage of using an IDE is that developers can quickly navigate the large number of files present in a project. An IDE organizes Java packages into directories, which makes it easy to see the package structure within a tree and choose individual files. Since Java itself does not provide a method of prototyping, an IDE allows a programmer to see methods, properties, and fields of a class, rather than just implementations. FB in particular allows the documentation of a class to be viewed in a Web browser. Petkov also believes that IDEs make for much easier debugging and visual programming.


If FB intrigues you, you may download the software, read the documentation, and consider joining the development team or contributing to the project. A good way to start is by joining the 100-plus-subscriber FB mailing list, which apparently has a high signal-to-noise ratio in terms of useful and productive discussions. The FB team carefully considers all ideas, suggestions, and valid criticisms, and welcomes new volunteers and testers.

A 10-year veteran of the Internet, Mariva H. Aviram is an Internet consultant and writer covering the computer industry. Mariva's published works include articles in c|net, NetscapeWorld, and InfoWorld. Recently, Mariva wrote XML For Dummies Quick Reference, which is pending publication by IDG Books Worldwide. For more information, visit

Learn more about this topic

  • Free Builder site
  • The FB Web site includes:
  • FB download page
  • FB mailing list information
  • The Free Builder Hacker's Guide
  • The Free Builder Architecture v.0.4.97
  • FB specifications
  • FB current state of development
  • FB progress log
  • FB development goals
  • The Free Builder CVS server accelerates the development process
  • The Free Software Foundation's GNU's Not Unix! (GNU) Project offers software with freely available, nonproprietary source code
  • Java Lobby, a Java advocacy group, mentions FB in its Java news
  • mpEDIT adds syntax coloring and enables the use of EditBeans
  • For information on EditBeans, see