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 2 of 4

JBuilder browser window.
Click on thumbnail to view full-size image.



The browser window is split vertically -- with the file tree view on the left and the viewer on the right. The vertical split is called the "curtain." Borland's user interface allows you to remove the curtain when you want a full-screen view of the source code you are working on. Under each half of the browser window are control tabs that change the semantics of the view itself.

When viewing Java source code, the tabs on the viewer-half of the browser are labeled source, design, and doc.

  • The source tab simply shows you the source code, and you can edit it using the included syntax highlighting editor.

  • The design tab shows a visual workspace where any user interface information you've defined exists. So, for example, if your source code had panel definitions, buttons, and so on, this panel is the drag-and-drop area where you can compose that information.

  • The doc tab shows you the HTML document that is generated from the nested comments in the source code. The HTML document can be extracted using JavaDoc, however, there is no automated way that I could find to generate this document.
Perhaps one of the most clever aspects of the browser implementation is that when you browse a class file, the browser reads in the class file and decompiles it enough to show you the structure of the source code. This can be very helpful if you are used to reading source, rather than looking at an object diagram. Further, when you select any of the Java standard classes or the Borland custom classes, clicking on the doc tab will return the JavaDoc page for that class. This allows you to do things like: highlight a system class, select "browse selected symbol", and see both the reconstructed source, or the documentation for the class. I prefer this method, which preserves the HTML formatting that is embedded in the JavaDoc data, to systems that convert the Java documentation into Microsoft "help" files.

The JBuilder debugger

Of course, writing code is easy. It's getting it to work that's hard. Perhaps the most important feature for any IDE is its debugger. Fortunately, the Borland JBuilder debugger does not disappoint. A screen shot of the debugger is shown below.

When debugging, the browser window is reconfigured to support looking at your class's status. The tree structured file view is split into an upper window containing thread status and a lower window containing information about active variables. Also, the left half of the browser gains some addtional tab controls at the bottom that control the operation of the debugger.

JBuilder debugger.
Click on thumbnail to view full-size image.



Additionally, pop-up windows will display a variable's value in the source window in much the same way that Symantec's debugger works. All of the standard debugging features are present: single step, watch points, break points, conditional break points, and so on. Of note is the thread support, which is outstanding. In the thread window in the upper-left corner, you can click on the currently-executing line of any piece of code in any thread, and the source window will pop to that place in the code. Furthermore, the lower-left window will display any local and global state that is visible to that thread. JBuilder's debugger definitely represents the new standard against which other Java debuggers will be measured.

  • 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