HomeDigital EditionSys-Con RadioSearch Java Cd
Advanced Java AWT Book Reviews/Excerpts Client Server Corba Editorials Embedded Java Enterprise Java IDE's Industry Watch Integration Interviews Java Applet Java & Databases Java & Web Services Java Fundamentals Java Native Interface Java Servlets Java Beans J2ME Libraries .NET Object Orientation Observations/IMHO Product Reviews Scalability & Performance Security Server Side Source Code Straight Talking Swing Threads Using Java with others Wireless XML

At JavaOne, Jonathan Schwartz, executive vice president of Sun's Software Group, outlined his mission to increase the number of Java developers from 3 million to 10 million. The hope is to attract these extra seven million from the legions of Visual Basic (VB) developers. Visual Basic's strength comes from a tool experience that is inseparable from the language and, in order to capture their mind share, Java needs the killer IDE.

Early Java programming books were often bundled with a copy of Visual Café, allowing readers to concentrate on learning the language syntax instead of esoteric JDK command syntax. While some programmers pride themselves on writing macros to customize their favorite text editors, integrated development environments (IDEs) offer the easy life of code assist, incremental compilation, and integrated debuggers.

Since Visual Café, a number of great IDEs have been created. JBuilder, IntelliJ, and Eclipse lead the 2003 JDJ Readers' Choice Awards with TogetherJ, Oracle9i Developer, and Sun ONE all equally worthy of pole positions. The irony is that having so many good development tools is a weakness, not a strength, when it comes to tackling Microsoft.

The current Java IDE landscape makes extensibility APIs either constrained to the lowest common denominator or proprietary to each vendor. JavaBeans and JavaServer Faces (JSF) are examples of the former because, while components can be good citizens for how a tool will use them, they cannot exercise sufficient control over the environment hosting them. To truly leverage a tool requires knowledge of its object model for representing artifacts, the life-cycle API for how data is persisted, and the control of event notification between viewers. If the IDE surfaces these internals to the component, a much richer edit time experience can be created. The case in point is Microsoft Design-Time Control (DTC), which allows customization of Web page components through in-place ActiveX controls that run within the source editor. Java's answer to DTC is JSF. Without being able to surface a satisfactory mechanism to plug into the IDE's viewers, the source-editing experience relies on using the JSF component as you would any other JavaServer Page (JSP) tag library or JavaBean. This is not going to lure the VB crowd who want in-place preferences dialogs for their component embedded directly in the source page.

The most successful challenge to Microsoft tools in the Java space so far is to adopt a proprietary approach as used by JBuilder, IntelliJ, or Eclipse. These surface the APIs that tool vendors and component builders need to leverage the edit time experience. However, their bespoke interfaces cause fragmentation in the tools space, and while JSR 198 is a well-intentioned attempt to resolve this problem, it's too little too late and is fated to become the lowest common denominator.

Any successful extension API needs to be more than skin deep, and what motivation do the tools vendors have to come together and agree on a common object model or life-cycle API? It is IBM's doomed AD cycle all over again. If a compromise API is reached, the IDE vendors will do half-hearted shoe horning of this into their existing tool, while still retaining their internal extension APIs for serious platform development. The issue is further complicated by the inability of Swing and SWT to interoperate, and if the GUI toolkit can't be agreed upon, there is surely little hope that the internals can converge.

The only solution I see is for one of the existing IDEs to become the de facto tool for Java. The benefit of having only one tool is that people can program to its extension API, have access to the internals of its object model and construction and, in an ideal scenario, the tool would be offered with JDK downloads to round off the whole Java "out of the box" experience. This way when the seven million newcomers we are hoping to attract first taste Java, they feel at home with a rich set of design-time tools fully integrated with the language.

About The Author
Henry Roswell is a veteran consultant who would like to think he's seen it all, but is constantly amazed by new events everyday. [email protected]

All Rights Reserved
Copyright ©  2004 SYS-CON Media, Inc.
  E-mail: [email protected]

Java and Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. SYS-CON Publications, Inc. is independent of Sun Microsystems, Inc.