Newsletter sign-up
View all newsletters

Sign up for our technology specific newsletters.

Enterprise Java
Email Address:

A first look at Borland's JBuilder IDE

After an extended pause, Borland jumps into the Java IDE market in a big way -- find out how this tool measures up and how it compares to the Symantec IDE Visual Cafe

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone

Page 3 of 4

Along the left side of the source window, small dots indicate lines where breakpoints can be installed. Clicking on the dot highlights the line, and the breakpoint symbol appears. Another useful feature is "run to cursor" -- for those times when you don't want to single step through every iteration of a for loop. Simply click on the line, select "run to cursor," and execution stops right there.

Handling output

A final area in which I found JBuilder to be particularly useful was its handling of the output from executing a Java application. The execution log is a window that contains all of the data sent to System.out from the current run. However, when multiple projects are open, the execution log maintains separate tabs for each project! An example of this is shown below.

Maintaining separate tabs for multiple projects

As you can see in the image there are two tabs, one for "example" and one for "BASIC," the current project. This separation is essential when building multiple class libraries at the same time because it keeps you from mixing up the output from the two projects.

What I like about JBuilder

Sometimes it is the little things. I really like that one can print Java source code to a color printer and have it come out with its fonts and syntax highlighting intact. If I could customize the page headers and footers and specify a "two-up" output (two pages of source code printed side by side on a landscape output page), it would be perfect.

The support for Java 1.1 is very nice. While JDK 1.1 has been out for a while, and Symantec has had beta support for 1.1, there is nothing like having an IDE that is designed from the ground up to work with 1.1.

As I stated earlier, the debugger is very nice as well: It gives a large amount of information in an easy-to-comprehend way. Much of the debugging is "point-and-shoot" style, which some users like (I do) and some don't (believing that "gdb" stands for God's DeBugger). I believe it's sufficient to find even the most difficult thread deadlock bugs.

What I dislike about JBuilder

JBuilder's configurable IDE actually isn't configurable in two crucial ways:

  • First, you can't set the default background and foreground colors in the display. Instead, you first have to set them for your entire desktop and then JBuilder will notice the changes. You can, however, set them using some of their "canned" color schemes.

  • The second serious defect is that you can't customize the editor's keystrokes. My two favorite editors in this regard are EMACS and the Programmer's File Editor (PFE). JBuilder's editor customization tab consists of being able to select some prepackaged key mappings -- default, Brief, Classic, and Epsilon are included -- and being able to select how things such as auto-indenting, highlighting, and wrap-around work. I'm still looking for the editor that lets you define macro packages in Java.


In the area of presentation, JBuilder suffers from some simple bugs that I expect will be fixed in the first patch release or so. For example, if your desktop has "Large Fonts" selected (which Microsoft insists means to take Arial 10 and "multiply" it by some factor), the computation on how much space is needed by the toolbar breaks and the component libraries icons are cut off. If, on the other hand, you set the font appearances explicitly in the "Appearance" section of your desktop properties, such as 14 point Arial, then the component bar is rendered correctly. Clearly, it's a Microsoft bogosity (where a 10pt font doesn't always render as a 10pt font), but the folks at Borland need to deal with it.

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comment
Login
Forgot your account info?
Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources
  • "A look at inner classes"
    Reduce class clutter in your Java designsUse inner classes. http://www.javaworld.com/javaworld/jw-10-1997/jw-10-indepth.html
  • "Take an in-depth look at the Java Reflection API"
    Learn about the new Java 1.1 tools for finding out information about classes. http://www.javaworld.com/javaworld/jw-09-1997/jw-09-indepth.html
  • "Take a look inside Java classes"
    Learn to deduce properties of a Java class from inside a Java program. http://www.javaworld.com/javaworld/jw-08-1997/jw-08-indepth.html
  • "Build an interpreter in Java -- Implement the execution engine"
    Here's how to take the interpreter classes and run with them. http://www.javaworld.com/javaworld/jw-07-1997/jw-07-indepth.html
  • "How to build an interpreter in Java, Part 2The structure"
    The trick to assembling the foundation classes for a simple interpreter. http://www.javaworld.com/javaworld/jw-06-1997/jw-06-indepth.html
  • "How to build an interpreter in Java, Part 1The BASICs"
    For complex applications requiring a scripting language, Java can be used to implement the interpreter, adding scripting abilities to any Java app. http://www.javaworld.com/javaworld/jw-05-1997/jw-05-indepth.html
  • "Lexical analysis, Part 2Build an application"
    How to use the StreamTokenizer object to implement an interactive calculator. http://www.javaworld.com/javaworld/jw-02-1997/jw-02-indepth.html
  • "Lexical analysis and JavaPart 1"
    Learn how to convert human-readable text into machine-readable data using the StringTokenizer and StreamTokenizer classes. http://www.javaworld.com/javaworld/jw-01-1997/jw-01-indepth.html
  • "Code reuse and object-oriented systems"
    Use a helper class to enforce dynamic behavior. http://www.javaworld.com/javaworld/jw-12-1996/jw-12-indepth.html
  • "Container support for objects in Java 1.0.2"
    Organizing objects is easy when you put them into containers. This article walks you through the design and implementation of a container. http://www.javaworld.com/javaworld/jw-11-1996/jw-11-indepth.html
  • "The basics of Java class loaders"
    The fundamentals of this key component of the Java architecture. http://www.javaworld.com/javaworld/jw-10-1996/jw-10-indepth.html
  • "Not using garbage collection"
    Minimize heap thrashing in your Java programs. http://www.javaworld.com/javaworld/jw-09-1996/jw-09-indepth.html
  • "Threads and applets and visual controls"
    This final part of the series explores reading multiple data channels. http://www.javaworld.com/javaworld/jw-07-1996/jw-07-mcmanis.html
  • "Using communication channels in applets, Part 3"
    Develop Visual Basic-style techniques to applet design -- and convert temperatures in the process. http://www.javaworld.com/javaworld/jw-06-1996/jw-06-mcmanis.html
  • "Synchronizing threads in Java, Part II"
    Learn how to write a data channel class, and then create a simple example application that illustrates a real-world implementation of the class. http://www.javaworld.com/javaworld/jw-05-1996/jw-05-mcmanis.html
  • "Synchronizing threads in Java"
    Former Java team developer Chuck McManis walks you through a simple example illustrating how to synchronize threads to assure reliable and predictable applet behavior. http://www.javaworld.com/javaworld/jw-04-1996/jw-04-synch.html