When the Java programming language was introduced more than a year ago, the Java Developer's Kit was the only development tool that programmers could use. The Kit enables you to write, compile, and debug Java programs, but it is primitive compared to the tools available for programmers using Visual Basic, Borland Delphi, and other languages.
With many languages, programs can be developed with a suite of tools called an integrated development environment (also known as an IDE). An integrated development environment combines several development tools into a single package. This package usually contains a program text editor, a compiler, a debugger, and other tools. These tools complement each other as you go through the process of creating programs. Most professional IDEs use drag-and-drop, multiple windows, and other graphical features. If they work well, designing a program should be faster and more efficient than using a more rudimentary tool such as the Java Developer's Kit. Programs also ought to be easier to debug.
Many IDEs use rapid application development, also known as RAD, in their approach to programming. RAD is a strategy to speed up program development by using tools such as an interface designer. Product advertisements that promise the capability to "create Java programs without writing a line of code" are referring to a RAD feature. Most Java programming environments to date use RAD tools primarily in the design of a graphical user interface. Some of these IDEs connect interface design directly to programming so that you can create a clickable button, for example, and immediately write statements to handle the button.
More than 40 Java development environments have been released in beta or final form. This appendix focuses on some of the more commonly used environments so that you can decide whether they match your programming needs. You'll be introduced to each IDE with details about the systems it can run on and things to consider when evaluating the development product. This appendix also has capsule descriptions of some other tools, such as Microsoft Visual J++.
The Gamelan Web directory of Java resources maintains a page with links to IDE Web sites and related information. This page is available by choosing Programming in Java | Development Tools | IDEs from the main Gamelan page at the following address:
You can attempt to go there directly at the following URL:
The following development environments are described in this appendix:
As you decide whether to choose an IDE and which one you might choose, there are some questions that are helpful to ask about what you need when programming. Issues related to the Java language can make a difference in your choice. Ask yourself each of these questions:
Thanks to Microsoft Windows and Apple Macintosh machines, windowing systems are the way most users want to operate their computers. Users want their software to use the mouse and offer common windowing features, such as resizable windows. These expectations make user interface design important to consider when you're developing a program. If your software uses a command-line environment in the tradition of the Java Developer's Kit or MS-DOS, your program will be less attractive to people who use it.
In the same vein, interface design is important to consider when selecting an IDE. The available Java IDEs take different approaches to interface design and the other features that should be available as you design an interface. Some tools focus almost entirely on interface development, such as Rogue Wave's JFactory. Many of these interface development tools can automatically create Java code that handles user events. Visual Basic programmers will be familiar with this feature, because that language's IDE enables quick interface design and programming.
Most of the interface builders function similarly to drawing programs. User interface elements are arranged in a palette and can be dropped directly onto a workspace. Most of the components come from the Java Abstract Windowing Toolkit, or AWT. Java WorkShop and other IDEs add a layer between the AWT and your programs that is supposed to make windowing and interface programming easier. For some programmers, this might not be an attractive feature, because they would prefer to do the same kind of AWT programming that was described in this book. Other programmers might like to use these new interface features and avoid AWT programming.
A feature to look for as you evaluate the different IDEs is adherence to Java's promise of platform independence. Some of the development tools are no different than using the Java Developer's Kit--they produce programs that are fully usable on all Java implementations. In fact, many of these IDEs, such as SourceCraft NetCraft, work in conjunction with the JDK, running tools like javac behind the scenes. Java WorkShop, Symantec Café, and other development tools come with their own specialized versions of the JDK.
Almost all IDEs aim to help you to write portable, platform-independent programs. A notable exception is Microsoft Visual J++, which offers features that are specific to Microsoft Windows systems and cannot be handled by other platforms. A Java program designed with Visual J++ can be developed to run on all types of computer systems if it does not use any of the special Windows-specific features.
Many Java programmers believe that all development environments should produce platform-independent programs because this capability is essential to the continuing success of the language. This belief is the subject of contentious discussion on the Internet and elsewhere. Although platform-independent programs are an important part of Java, most IDEs are not completely independent themselves, even when written using Java. These development tools are available only for specific platforms, primarily because they use native code, which consists of parts of Java programs that are written using other languages such as C++ or C.
As you look over the sales pitches for each IDE, one thing that doesn't get enough attention is that many of these tools require a lot of skill and experience to use successfully. It can be difficult for an IDE to improve your programming if you can't figure out how the IDE works.
IDEs are often the most complicated software you will use. They can include multiple-document windows, numerous configuration options, and other sophisticated features. Novice programmers can become confused with many IDEs because of the complexity, especially if they are still learning how to use a new programming language. For this reason, the IDE you choose should be suited to your experience level as a programmer and as an IDE user.
Several Java IDEs are highly suitable for novices. Perhaps the best example of an easy-to-understand interface is SunSoft Java WorkShop, which uses a browser interface that should be well-known to anyone who surfs the World Wide Web. The downside to the easier-to-use IDEs is that they might require more work to get something done than an IDE that has more functions at the programmer's fingertips.
If you are using more than one language as you program, another thing to consider about an IDE is whether you can use it with multiple languages. The Borland 5.0 C++ IDE, MetroWerks CodeWarrior, and other tools can handle Java and other languages or work identically to other IDEs from the company.
One advantage to using an IDE that works with multiple languages is that you don't have to learn a different IDE when using a different language. (Of course, the IDE isn't any easier to learn the first time around.) Another plus to using a multilanguage tool is that you can write Java statements and non-Java native methods with the same tool. The Borland 5.0 Java environment is an example of this type of IDE; it can compile C and C++ code and Java statements.
An IDE should make you a better programmer and make it easier or more enjoyable for you to develop programs. As you evaluate each of the products described in the following sections, you can determine which of the features of a specific IDE you might need. Because so many development tools are available for Java, you should be able to find one that suits your skills and personal preferences. Of course, you can always use the Java Developer's Kit that you learned about during this book and enhance it by using custom interface builders, your preferred word processor, and other software.
Caution: If you download trial copies of several different IDEs, as was done for this appendix, you might run into difficulties because of how each IDE configures your system. Many Java development tools use environment variables such as CLASSPATH and JAVAHOME, and these variables could be set up incorrectly if another IDE has already configured them. Before installing a test version of an IDE, you should uninstall any other Java IDEs that are present on your system.
Rogue Wave JFactory is an interface builder instead of an IDE, in contrast to other IDEs that are available for Java programming. It delivers some programming capabilities along with interface design features, enabling interface actions to be handled within JFactory. It also can compile and test programs during development, so it's similar enough to a full IDE to be worth consideration. Though you can use JFactory with any editor and Java compiler, JFactory provides a word processor and can use the JDK compiler. Figure B.1 provides a look at the JFactory environment.
Figure B.1. Rogue Wave JFactory at work.
Versions of JFactory are available for the following platforms:
JFactory, which is based on a multiplatform C++ programming tool from Rogue Wave, has numerous features that help you to design applications rapidly. Because Rogue Wave has a lot of experience with similar tools, JFactory is different from many Java IDEs that are still in a beta stage of development or are new products. The strength of JFactory is the visual, drag-and-drop editor for interface creation, which is superior to most other visual development tools currently available for the Java language.
As you develop an interface with JFactory, you can test it at any time. Another useful feature is the way that custom components can be added to a program toolbar along with AWT components such as text fields, text labels, and radio buttons. JFactory automatically creates a lot of the Java statements that are needed to offer interface components in a program. If you need to do some of your own programming to customize the interface, you can do it in a way so that you can change the interface later without overwriting the customized portions of your program.
With JFactory, you can use the mouse or the keyboard to place a component. You can set up the height, width, and x and y coordinates of a component from a properties dialog box. This capability makes it easier to align components correctly. When you create a window, menu, or dialog box, you can save it in an object library for use with other programs.
JFactory is not a full-fledged IDE, so it does not include its own compiler, debugger, or other tools. However, the software's visual editor might make up for the loss of some other IDE functionality. Unless the absence of sophisticated tools such as a class browser and integrated debugger slows down your programming, JFactory could be an excellent choice.
JFactory retails for $195; a multiplatform package that includes the Microsoft Windows, UNIX, and OS/2 versions is available for $390. For more details and the opportunity to download a demo version or to purchase JFactory online, visit the home page for JFactory at the following URL:
http://www.roguewave.com/products/jfactory/jfactory.html
The e-mail address for comments and questions regarding JFactory is support@roguewave.com.
Symantec Café, the first development environment other than the JDK that became widely available for Java programming, is called an integrated development and debugging environment (IDDE) by Symantec. (Although other IDEs are missing the extra D in their acronyms, most of them contain debuggers as well.) Café is a stand-alone product based on Symantec's C++ environment. Figure B.2 shows an example of Café at work.
Figure B.2. A screen capture of Symantec Café.
Symantec has released versions of Café for the Microsoft Windows 95, Windows NT 3.5x, and Macintosh systems. Windows users must have at least an Intel 386 processor and 8M memory, but a 486 or better and 16M memory are recommended. You need at least a VGA monitor, but Symantec recommends that you use an SVGA monitor if one is available. The software and all its sample files and Help files require 60M of disk space and a CD-ROM drive. Macintosh owners need a Power Macintosh, 68030, or 68040 Macintosh and 16M memory. The full installation of the software requires 30M of disk space.
Café incorporates the JDK into its release with a full implementation of the Java class libraries and source code samples. You do not have to have the JDK before installing Café. In fact, you should uninstall the JDK if you already have it on your system before implementing Café to avoid configuration conflicts between the two.
Café is more robust than some other IDEs, and it has been documented more fully than some other IDEs in books such as Teach Yourself Java in Café in 21 Days, available now from Sams.net Publishing. The main features of Café are described in the following list:
The most recent retail price for Café is $129.95 for Windows users. A comparable price is being offered to Macintosh owners. You can purchase Café from Symantec's Web site, as well as from retail and mail-order outlets.
Some folks might not have to buy Café at all! Customers who bought Symantec C++ between December 1, 1995, and March 1, 1996, are entitled to a free upgrade to Café.
The home page for Symantec Café is the following URL:
http://cafe.symantec.com/
The customer service number for the company is (800) 441-7234, and its e-mail address for Java-related comments and questions is javainfo@symantec.com.
SunSoft Java WorkShop, the development tool offered by the language's home team, is an IDE written almost entirely in Java. Its development was used at Sun to help improve the Java language by tackling a large-scale software project using Java, but it also is a useful tool for Java programmers to consider. Figure B.3 shows an example of Java WorkShop being used to develop a program.
Figure B.3. Java WorkShop in use.
Versions of Java WorkShop are available for the following systems: Microsoft Windows 95, Windows NT 3.5.1, SPARC Solaris (2.4 or later), and Intel x86 Solaris systems. Microsoft Windows 95 and NT systems must be running a 90MHz Pentium or better with 16M of memory and 45M of hard disk space. Solaris systems must have 32M of memory, 45M of disk space, and an OSF/Motif 1.2.3-compliant windowing system. The recommended display resolution to use with Java WorkShop is 800 by 600 pixels.
Java WorkShop comes with its own modified version of the JDK, so you cannot use it in conjunction with an existing installation of the Kit. Like Café, Java WorkShop requires that any existing JDK copies be uninstalled before you can install and run WorkShop correctly.
Java WorkShop, one of the most approachable IDEs for a novice programmer, uses a Web interface to offer a program text editor, class browser, debugger, project management system, and Visual Java. That last tool provides a way to visually design a graphical interface. WorkShop is fully detailed in Teach Yourself SunSoft Java WorkShop in 21 Days, available now from Sams.net Publishing.
The most striking difference between Java WorkShop and other IDEs is its interface. Java WorkShop looks more like a Web browser than a programming development environment, because it is a Web browser. Java WorkShop's browser interface is easier to use for programmers who are unfamiliar with more complex IDEs, but the browser interface can be frustrating for developers who are comfortable with these tools. WorkShop has a source browser for viewing variables, a class hierarchy, and public methods. The browser creates HTML pages in the same format as HTML documentation generated by the javadoc utility included with the JDK.
The WorkShop program text editor lacks some of the cut-and-paste functionality of other, more established editors. It works with WorkShop's debugger so that compile errors create links directly into the editor for fixing. The WorkShop debugger provides breakpoints and other methods of debugging.
Visual Java, like Café Studio, provides a way to graphically design an interface. Programmers can develop dialog boxes and other visual elements and automatically create handlers to respond to events generated by these components.
The WorkShop environment is not customizable in the way Café is, but the Web interface makes it easy to integrate other tools and programs into WorkShop. Basically, the program is a group of Web pages with Java programs featured on them. You can go to a different page from within Java WorkShop as easily as you visit a URL in a Web browser. This structure makes it possible for a programmer to create original Java development tools that can be linked to WorkShop pages, an unusual feature. This arrangement is unorthodox in comparison to development environments that are cohesive, unchangeable files. However, it is compatible with the approach to the Java language in general--small, self-contained programs that can reach out to other programs over the Internet or other means.
SunSoft Java WorkShop currently sells over the World Wide Web for a retail price of $84.99. The software can be downloaded for a free 30-day evaluation. For more details, visit the following URL:
http://www.sun.com/sunsoft/Developer-products/java/index.html
The customer service number to use for the company is (800) 786-7638 (SUN-SOFT) in the United States or (512) 434-1511 elsewhere. The company's e-mail address for comments and questions is sunsoft@selectnet.com.
SourceCraft, the developer of the ObjectCraft development environment, is making its Java IDE, NetCraft, available at no cost if you comply with the terms and conditions for use. This makes NetCraft attractive because of the cost, but the IDE still must be useful to you or you will pay in other ways due to lost efficiency. Figure B.4 provides a screen shot of the NetCraft environment.
Figure B.4. NetCraft at work.
Versions of NetCraft are available for Microsoft Windows 95 and Windows NT 3.5.1 systems running a 486 or better with 8M of memory. NetCraft comes bundled with the current version of the JDK; SourceCraft also makes NetCraft available for download without the JDK if you already have the JDK installed.
SourceCraft NetCraft does not offer as many features as other IDEs, but it is a comparable replacement for the JDK. It creates Java programs that are usable across Java implementations for all systems. NetCraft has an editor, class inspector, user interface designer, and compiler.
You can use NetCraft for any type of Java applet or application. You can use the Package Inspector, part of NetCraft's system for organizing projects, to browse class methods. The Class Inspector can show you the position of a class in the hierarchy, its methods, and its variables. You can view the source code of the method and how it is used in a program when you are looking at a method with this tool.
Like Café and Java WorkShop, NetCraft includes a way to visually create a graphical user interface. The UI Builder generates Java code that uses the Abstract Windowing Toolkit, so the program does not rely on any new classes introduced with the development environment. When you create an interface component, NetCraft generates Java statements for that component, complete with a TODO comment line where the action event handling statements for that component are placed. The approach is simpler than some of the alternatives, so a programmer familiar with the AWT should be comfortable with it.
NetCraft's program editor uses cut-and-paste commands and is similar to other small word processors. Though the components in the currently available release have the odd habit of moving around a little after they are clicked, a nice feature of the builder is the capability to set a component's height and width coordinates by entering numbers into text fields. This feature enables you to easily align wandering components with each other.
The NetCraft environment is simpler to use than other IDEs, but this simplicity might be a problem when you need to create programs that have numerous windows and interactive components. Some of the tools that can make complex software more manageable to design are not available in NetCraft. NetCraft appears to be a good substitute for JDK users who want to use a graphical interface as they write simple programs and applets. Because it is free, this IDE can be a good place for novices to start when they're deciding which IDE to use.
For more details and the opportunity to download NetCraft at no cost, visit the home page for NetCraft at the following URL:
http://www.sourcecraft.com:4800/about/netcraft/
The customer service number for the company is (617) 221-5665; the company's e-mail address for comments and questions is edc@sourcecraft.com.
Pro-C WinGEN for Java is an IDE designed for people who do not write programs. The focus is on automatically generating code so that HTML designers and other programming novices can develop Java programs. You can develop the graphical interface of an applet or application using drag-and-drop and introduce elements such as animation without writing a single Java statement. The IDE calls the JDK from within WinGEN to run and compile programs. Figure B.5 shows the WinGEN environment.
Figure B.5. WinGEN for Java in use.
Versions of WinGEN are available for Microsoft Windows 95 and Windows NT 3.5.1 systems running a 486 or better with 8M of memory and 10M of hard disk space. To unpack WinGEN Lite, the evaluation edition of the software, you must have a program that can unpack ZIP files into long file names. (For users of Windows systems, the Windows 95 operating system introduced file names longer than eight characters and a three-character extension.) If you use a ZIP unpack program that does not support long file names, files will not be named correctly, and the setup will fail. WinGEN includes the current version of the JDK, which must be installed before WinGEN is installed so that the IDE will function.
WinGEN supports the JDK rather than replacing it and can run the Kit's compiler and interpreter from within the IDE. Because of WinGEN's focus on beginners, WinGEN emphasizes a point-and-click approach to graphical user interface creation. You can create many user events through WinGEN without any programming.
The arrangement of WinGEN's user interface should be familiar to programmers who have used other GUI design tools, especially for those who have used Visual Basic. The current WinGEN version can be difficult to use when aligning components, but laying out text fields, labels, and other things is easier than it can be with other programming tools.
The IDE takes a resource-centric view of development. What this means is that you start with the menus and dialog boxes and then create programming functions rather than using programming to create those components. One thing that WinGEN does not offer is the capability to preview a program's interface before any Java statements have been generated.
A system called CodeHooks enables you to add Java statements that handle circumstances WinGEN can't handle. These hooks, which accomplish specific tasks like a special event handler, are separated from the statements that WinGEN automatically generates. This separation of statements enables programmers to change the GUI and use CodeHooks without reentering anything.
WinGEN can be useful for the programming of simple applets and applications or as a tool for Java novices. Though it lacks a debugger, source browser, and other IDE features, later versions of the software might implement some of these tools.
You can purchase WinGEN online for $79.95. For more details, the opportunity to download WinGEN Lite at no cost, or to purchase the full version online, visit the home page for WinGEN at the following URL:
http://www.pro-c.com/products/wfj/java.html
The phone number at Pro-C for inquiries related to the software is (813) 227-7762; the company's e-mail address for comments and questions regarding WinGEN is support@pro-c.com.
The following products for Java development are profiled to provide a more complete picture of the programming tools that are available.
Borland C++ 5.0 with Java Enhancements is a C++ development environment that has been extended to include Java programming tools. The advantages of this approach are multilanguage development within the same environment for native method use, the capability to program in three languages (C, C++, and Java) without learning three IDEs, and the use of software that has become robust from several years of use by the C and C++ development community. The home page for Borland's Internet development tools is as follows:
http://www.borland.com/internet/.
CodeWarrior is one of several IDEs that are available for Apple Macintosh or Microsoft Windows Java development. CodeWarrior is a multilanguage development environment with an introductory version called Discover Programming with Java that is intended for novices. You can use CodeWarrior to develop programs in C, C++, ObjectPascal, and Java. One interesting feature of this development environment is that you can compile Windows versions of a Java program using a Macintosh and vice versa. The main page for MetroWerks is the following URL:
http://www.metrowerks.com
Before being christened Kalimantan, this IDE was one of several Java-related products that staked a claim to the name Espresso. The developers have been kind enough to offer links to the other Espressos, so the Kalimantan Web page is a good place to sort out any Espresso confusion you may have.
Kalimantan is another cross-platform IDE. It has been tested for use with Solaris 2.4 and up, as well as Windows 95 systems. Kalimantan's current beta release includes only an inspector to look at the values of internal variables and a debugger, but it is bundled with the teikade suite of utilities from PFU Limited. This suite includes a class browser that is familiar to those who have used class browsers with the Smalltalk programming language. The home page for Kalimantan is the following URL:
http://www.real-time.com/java/kalimantan/index.html
Roaster was made available to developers in January 1996, making it the first Java IDE for the Macintosh. The Roaster Professional Edition includes a visual interface builder, the ability to compile programs that can be targeted for Macintosh or Microsoft Windows systems, and an extended class library. The Sams.net book Teach Yourself Java for the Macintosh in 21 Days was written for the Roaster environment. Details on Roaster are available from the following URL:
http://www.natural.com/pages/products/roaster/index.html
Microsoft Visual J++ is Microsoft's machine-proprietary answer to Java development. It features extensions to the Java class library that are specific to Microsoft's operating system and integrates Java with the component object model (COM) through Microsoft ActiveX. Visual J++ is integrated with the Internet Explorer browser that implemented Java with its 3.0 release. The home page for Visual J++ is the following URL:
http://www.microsoft.com/visualj/
The integrated development environment that you choose depends on many factors: your programming experience, the tasks you must accomplish, and personal preference. Java Usenet newsgroups such as comp.lang.java.misc and comp.lang.java.programmer are a way to get a range of user opinions on the IDEs you are considering. Many IDE developers also participate in these forums, including Symantec representatives and the developers of Java WorkShop.
Most Java IDEs that are not in final release can be downloaded over the World Wide Web. It can be troublesome to download and install these trial versions, especially if you must first uninstall something else, but the approaches taken in each IDE are worth examining in detail. Of course, if you have grown comfortable with the Java Developer's Kit from your use of it during this book, no one says you have to use one of the more complex IDEs.