Many of the productivity and quality gains made available by objects and components are made possible by the use of modern development environments. We cannot catalog the whole spectrum of available products, but we will mention one or two leading or typical products in each class used for enterprise application development in Java. Some of these sophisticated tool sets support development in other programming languages as well, even COBOL. Many Java programmers simply use the current Java Development Kit (JDK), which can be downloaded for free from the Sun Microsystems Web site. For the individual developer it is adequate. For the solo programmer who prefers a window-oriented environment, the TextPad PDE can be downloaded from Sun's Web site for a free 30-day trial and/or can be purchased over the Internet for $29. The next step up from a PDE is a work-group-capable IDE. The most readily available and lowest-cost of these is Sun Microsystems' Sun ONE Studio 4, which was formerly known as Forte. A number of commercially available products are in this capability range and a bit beyond. They include the widely used Borland JBuilder, which supports medium to large development workgroups. Finally, for large workgroups or enterprise-wide development, Eclipse and IntelliJ IDEA 4.5 are available. Eclipse is especially well documented and is supported by a number of textbooks, handbooks, and user guides. You can download it from the Eclipse Web site for free. It supports a number of programming languages other than Java, including COBOL. The TextPad PDE is very popular in college computer science departments that teach Java. It's also popular among solo programmers who want a convenient Windows environment without needing to go to a command-line interface, even to run programs having command-line arguments. It doesn't let you test or run Java Servlets or Java Server Pages, but it can be augmented with Apache Tomcat if you need those services. TextPad cannot incorporate or deploy JavaBeans, because a true IDE such as Sun ONE is needed to do that. Site licenses are available for schools or commercial development groups. The URL is http://www.textpad.com/. A similar PDE with a few more IDE-like capabilities, especially for the user of JavaBeans, is NetBeans. It is also popular in academic computer science programs based on the Java programming language. It can be downloaded and used for free. The URL is http://www.netbeans.org/. Other products in this class of super-PDE but sub-full-IDE include Java Creator and Net Computing from Germany. Their URLs are http://www.jcreator.com/ and http://www.netcomputing.de/. A similar product from Apache is Ant, which can be downloaded from http://ant.apache.org. The user manual for Ant can be read or downloaded from http://ant.apache.org/manual/index.html. Sun ONE Studio 4 was derived from the earlier Forte IDE for Java. It simplifies testing and deploying code on application servers, but it lacks some features that more-advanced IDEs offer, including UML modeling, refactoring, Struts support, and profiling. It is built on Sun's NetBeans, which makes a number of third-party plug-ins available. It has a built-in update center wizard that checks for and installs new or updated IDE components. Templates for various types of classes, such as Enterprise JavaBeans, Java Server Pages, and Web services, help the user create classes and write code. Sun ONE Studio's code editor provides right-click context menus that create stubs for constructors, methods, and inner classes. But an application framework is not included with the basic IDE; Sun offers the Sun ONE Application Framework as a separate $1,495 product. Without this framework, implementing business logic requires that the developer write more code by hand than if using a more capable IDE. As you will see later, this is not always a disadvantage. A GUI designer in the Sun IDE generates code for building Abstract Windows Toolkit and Swing interfaces but does not support two-way editing. Auto-generated GUI code is marked as guarded and protected from manual changes. This is unlike Eclipse, which reflects most manual changes of the Java automatically generated code back into the GUI specification. The IDE doesn't include a UML modeling tool, but wizards make it easy to generate a variety of entity beans from existing database tables. On the back end, a number of integrated components help make predeployment testing a quick and relatively painless process. The IDE does include Apache's Web server Tomcat and a hobbled PointBase database server. An EJB test application requires a few clicks to create, and it presents a Web form interface that lets the user invoke methods on newly coded beans and observe the results. Essential IDE features such as code completion and incremental search are built in, as is good support for Javadoc. Although Sun ONE Studio doesn't include some development life-cycle tools that other packages offer, it offers a solid, basic set of features that will meet the needs of most small enterprise development groups. An excellent series of textbooks for this product is popular in technical colleges and universities.[24], [25] There is also a textbook for rapid application development using Sun ONE Studio 4.[26] The Sun URL for this product, recently upgraded to version 5, is http://www.sun.com/software/sundev/jde/index.xml. One of the big kahunas for Java (and other) language IDEs is Borland JBuilder from Imprise Software. Borland came out with JBuilder shortly after Symantec Cafe, one of the first Java IDEs. About the same time, IBM announced a Java IDE that soon became the basis of Eclipse and then shortly later became open-source. JBuilder is a capable fully featured product that supports a large development workgroup. Although it is rather expensive, a service contact provides in-depth user support. The URL for JBuilder's Web site is http://www.borland.com/jbuilder/foundation/. One of the most popular IDEs for commercial development workgroups is Eclipse. Like JBuilder, it allows cross-platform developmentwhich is Java's raision d'etre. It allows UML specification as well, but it is a very large-scale developer's tool set, not recommended for small or loosely integrated groups. Every Java program in the system is put into the Eclipse source file, and the whole system is recompiled every time each user changes his or her program and asks for a compile. It takes a patient programmer to deal with a small change that produces hundreds or even thousands of errors all over the developing system. The big advantage of Eclipse (other than its being a typical IBM product, offering everything for everyone) is that it can be downloaded for free. Eclipse is a big system, and a number of ponderous tomes describe its features and usage. Their essence has been distilled into a small, accessible book titled, oddly enough, Eclipse Distilled.[27] It's highly recommended for the development manager evaluating or planning an Eclipse installation. Many developers think that Eclipse is too much of a good thing. However, a senior software developer and former Eclipse user who recently switched back from IntelliJ made the following statement to one of the authors in a recent e-mail. We quote it here because it is typical of the experience reported by developers who have climbed this product's rather steep learning curve:
So, there is the testimony of a typical Eclipse heat-seeker and senior business applications architect. The URL for Eclipse is http://www.eclipse.org/. IntelliJ IDEA 4.5 is the current version of the Java IDE developed in the Czech Republic. It is widely used in Europe and North America. It is comparable to Eclipse. It is not free, but it is significantly less costly per seat than most other commercial Java IDEs. The user interface is far less complex than Eclipse and much more developer-friendly. It has a large following in the United States. The vendor's URL is http://www.intellij.com/idea/. Finally, we want to address the issue of whether you should use an IDE at all, and we'll point out some of the cons. You don't have to become dependent on the convenience of IDE automation; the use of public-domain software like Emacs is no more expensive than the use of IBM Eclipse. When a development group's productivity becomes tightly tied to a particular IDE and its magical shortcuts, this can be a limiting dependency. A change in organizational standards from one tool to another can reduce productivity overnight. Limiting the use of proprietary special features is difficult because programmers work around such rules. Also, an expensive IDE license is an easy target for cost-cutting. Many of the most capable IDEs have high licensing fees. The best programmers frequently develop at home as well and expect to use the same toolset both at work and at home. The more costly an IDE, the more likely a developer will not be able to afford a personal license, which means a divergence between the home and work tool sets. Site licenses allowing one person use from either the developer's home or office computer at any given time often can be negotiated. Many serious programmers are very productive using only a simple text editor that is much less resource-intensive in its use of both memory and CPU time. A capable IDE with its many shortcuts and automatic code generation and wizards creates an abstraction from specification issues and takes at least 65MB of memory. It also requires a rather steep learning curve before the new user becomes proficient. Developers need to understand Java specifications in detail before taking shortcuts, but a good IDE encourages the opposite. It is not wise to automate what you do not understand how to do manually. An IDE also takes the effort out of performing certain tasks, such as compiling, generating Java archive (JAR) files, and generating RMI stubs. An IDE is convenient in isolation, but not always in a development team, where team members must interact regularly, in terms of both source code control and the build process. The development environment should be completely transparent to these two processes. Thorough knowledge of source code control and build environments is key to understanding integration and addressing problems without bringing the whole development team to a halt when some minor fault occurs. A project configuration management engineer will not always be available, so team members should be familiar with the build process. Committed IDE users often do not understand these systems, because IDE automation effectively insulates them. Few IDEs support multiple languages, but the most capable ones all do. Although IDEs facilitate integration with third-party applications, such as source code control tools, such integration is often limited. Often the third-party integration doesn't include all of the third-party tool's features. By nature, IDE automation insulates the developer from the technology and typically produces project artifacts such as hierarchical directory structures or configuration files that must be properly in place to use the code in the project. |