JavaOne offers advancements, mind benders, and disappointments

At JavaSoft's main event, which took place in San Francisco in early April, Java came off as a great success. Here's a look at the JavaOne technology triumphs -- and, a disappointment or two

This year's JavaOne Worldwide Developer Conference was a triumphant festival for the Java faithful. Sun took great pride in announcing that, in a little more than 18 months, Java has grown from a minor curiosity to the #2 development language in the world -- and it's still growing.

Perhaps more important is the fact that Sun continues to occupy the moral high ground in the quest for a platform-neutral and vendor-neutral language system by acknowledging contributions by IBM, Netscape, Novell, and others to the Java language and APIs. In other words, Java does not represent a single-vendor solution to common industry problems; it's the result of a collaboration among some of the best minds in the business.

By maintaining control of its development, so far Sun has managed to keep Java from being the product of politics, compromise, vote-gathering, and committee decision. Instead, Sun's open specification and feedback process, combined with a willingness to incorporate good ideas, has produced a language that is powerful enough to tackle enterprise projects, but that remains true to its original design goal to keep the simple things simple.

For details on JavaOne announcements and sessions, see JavaWorld's JavaOne coverage in this month's issue, as well as JavaWorld's JavaOne Today show daily. With this article, I hit on the show's highs and lows: "Java Advancements," "Best of Show," and "Biggest Mind Bender" highlights, and the "Biggest Disappointment" lowlight.

Java advancements

In the center ring, Sun, and JavaSoft specifically, paraded a plethora of advances, including remote method invocation (RMI); JDBC, the database API; JNI, a standard cross-platform interface for calling and being called by native routines, JNDI, an interface for a cross-platform directory and naming service; jars, compressed archive files for distributing multiple classes and resource files; JavaBeans, the cross-platform component architecture; Swing, lightweight, all-Java components; and the Reflection API for runtime interrogation and creation of Java classes. Announcements were made of agreements with Symantec for its fast just-in-time compiler (JIT) and Java virtual machine (JVM), an agreement with Informix, and a switch to compile a Java program into native code. In addition, applet signatures were announced, along with the capability to grant "trusted applets" the same kind of system access as a locally-loaded application.

Timelines were given for future announcements including an advanced, adaptive performance optimizer that will make compilation unnecessary, and drag and drop between Java programs and native applications (as well as among Java applications, as currently supported in version 1.1). In addition, the forthcoming Java Foundation Classes (JFC) were announced. These will let the developer choose a "look and feel" that is native to the runtime platform, one that is consistent with a Java-centric, cross-platform look and feel, or one that is consistent with a corporation's custom standard. The developer also will be able to pass on the decision to the end users, and give them the choice! Finally, fine-grained security capabilities are in the works, so users will be able to choose what kinds of access to grant to their systems, and to whom to grant them.

Best of show but badly publicized: ObjectSoft's BrewMaster

Amid all the fanfare, there were a few relatively unheralded achievements of fairly gigantic proportions. Topping the list was the BrewMaster development environment from ObjectSoft. This small wonder incorporates a version control system as part of the integrated development environment (IDE). The granularity for the version control is at the method level; that capability is used as the basis for some other superb features that are enormously useful in a production environment.

For example, once you select a method, you can view all methods by that name in other classes; this is wonderful for ensuring compatible behavior and for "borrowing" code. You can also find every caller of that method, so if an API is going to change, you can see who will be affected and make the changes.

At the class level, you can see all classes that contain a given class and all methods that return it. You also can get a list of all inherited methods so you can easily determine all the behaviors a given class is capable of. As a small bonus, you get automatic syntax checks on your code without even having to click a button!

Needless to say, these features are highly desirable when developing a production system. About the only thing lacking is a visual designer and a program profiler. An "ultimate development system" you could put together today would look something like Sun's Java Workshop for the code profiling, Symantec's Visual Cafe or Sun's Java Studio for the visual designer, and ObjectSoft's BrewMaster for version control and class/method references.

To download a trial version of BrewMaster, visit ObjectSoft's Web site (see Resources). It's worth a look.

RMI, the show's biggest mind bender

The cumulative effect of all the extensions and additions to Java and its APIs was mind-boggling. But the biggest single mind bender of the show was remote method invocation (RMI). Using RMI, you can load a new object and all its behavior from a remote system. That opens the door to a whole new world of extensible functionality.

For example, you could have a chess game GUI on your own platform. You could look up the strategy by name in a service directory, and use RMI to create and use a strategy object. The application could present service choices to the user, or it could make decisions on its own based on availability or other criteria. In other words, in the world of RMI, a server not only services multiple clients, but a client can access multiple servers!

As another example, you could get a copy of a generally useful computational class, and at the end of your work day let your computer add itself to a list of available servers and rent out your computer to others who want to distribute their computations. In such a world, who is the client, and who is the server? Eight hours a day, you pay others to use their services. The other 16 hours, they pay you. What a concept!

Biggest disappointment: For printing, no news is bad news

By far the biggest disappointment of the show was the fact that virtually nothing was said about printing to PostScript or PCL devices, and nothing was forthcoming regarding timelines or plans for this functionality. At this point, the only things standing in the way of 100 percent usability for serious applications is printing capability and integrated help.

And we're getting there. An API for this is buried in the Java Management API in the AVM module. But it's based on Java's 1.0 functionality, and it lacks certain critical ingredients, like pop-ups. However, valueTip functionality is an "any day now" feature, so seriously useful help is probably not far behind.

That leaves printing. The inability to print to a PostScript or PCL device obviously is the largest remaining stumbling block to delivering enterprise-quality applications. Sun was so remarkably and uncharacteristically quiet on this subject that one wonders whether sensitive negotiations are going on. Let's hope they are.

Conclusion

The JavaOne conference was an outstanding success, with 10,000 attendees -- up from "only" 6,000 a year ago. Several important additions to the language and many outstanding additions to the APIs were announced and described, making Java more than ever ideally suited for any network-centric application. Printing and help functionality are the only missing gaps, but they are more than likely to be covered by the time any large-scale project is completed.

Eric Armstrong has been programming and writing professionally well before the existence of personal computers. His production experience includes AI programs, system libraries, real-time programs, and business applications in a variety of languages. He is currently writing a book on a soon-to-be-released Java IDE.

Learn more about this topic