Java grows up

Opportunities for Java API and Java Platform development, now and in the year ahead, were highlighted at this year's JavaOne

The JavaOne conference that took place in early April at the Moscone Convention Center featured keynotes, technical sessions, and a show floor packed with product demonstrations. The following are some impressions from a developer's point of view.

Roadmaps, keynotes, and technical sessions

Several roadmaps were presented during the conference. Unfortunately, most of the developers discovered that they had far too few dates. The maps were definitely not timelines; even the near-term availabilities were cloaked in "real soon now" (RSN) or "watch our Web site for more details" marketing lingo.

This did not, however, deter developers from trying to nail down specific dates. In every session I attended, developers repeatedly asked questions about release dates for APIs and products. Thankfully, there were enough new and interesting things to discuss that most of us found ourselves grudgingly willing to accept RSN. The new JDK 1.1 APIs, combined with continuing work on JavaBeans, electronic commerce and security, AWT and UI, media and communication APIs, and Java Everywhere (from personal devices to servers) gave us plenty to listen to and discuss in those three short days.

Technical content in the keynotes was disappointingly low, and almost every developer I spoke with found the technical sessions focused on delivering marketing messages rather than providing valuable engineering and development information. This was especially prevalent in the first day's tech sessions, which in many cases showed less actual code than even the most basic examples would have provided for the given topic.

JavaSoft had a tremendous opportunity to encourage industry partners, with a hand in developing portions of the Java APIs, to help present the technical sessions. Although this would have helped to demonstrate industry commitment to Java, it also may have diluted the Sun/JavaSoft-specific marketing message. Still, we already know and believe "write once, run anywhere." Let's allow industry partners to prove it to us through programming- and engineering-oriented technical presentations, rather than solely through JavaSoft's marketing initiatives.

Perhaps the saving graces for JavaSoft were the final two days of JavaOne, which were decidedly less marketing-oriented and of greater technical content. Plus, much useful technical and business information changed hands on the Java Pavilion floor and in the sideline birds-of-a-feather (BOF) sessions. As John Gage (director of Sun's science office) had encouraged in his introductions to a couple keynotes, many attendees found the most direct payoff in approaching new people and building new relationships.

JavaBeans deliver on promise of portable components

One major promise of object-oriented programming in general, and of Java in particular, has been the ability to develop interoperable, portable, and powerful software components. No language or technology, including Java as available in JDK 1.0, has been able to deliver on this. JavaBeans and JDK 1.1 do.

Several sessions dealt with Beans, some in fairly good technical detail. The promise: If you design a Java class such that it implements its methods according to the Beans' design patterns, you will have an interoperable, binary (bytecode) portable component. This component can be used with a Beans-capable Java development tool, including the next-generation visual tools, to rapidly create applications.

True, there are many more levels of detail (implementation of the new java.io.Serializable interface if the Bean needs to save state, or specification of a BeansInfo class to enable more direct control of the introspection process by which Bean builders or Java run times expose available methods and properties of a Bean), but if you are content to let the Introspector (used by the Bean builder to automatically determine how to provide access to a Bean's functionality) do its magic, you can turn existing classes into Beans in very short order. There even is a wrapper available that allows a pre-existing applet to run as a JavaBean without any additional coding. I was particularly impressed with the JavaBeans-to-ActiveX Bridge and the ActiveX-to-JavaBeans Migration Assistant, both of which required some well thought out design and engineering effort. As one JavaSoft developer noted, ironically the Bridge and Migration Assistant make the Java Development Kit (JDK) the cheapest environment available on the market today for ActiveX development. (This brought the expected chuckle from the crowd.)

The message is clear: Components have arrived at last, and Java is the language to write them in. At the least, you should begin to seriously explore the possibilities with JavaBeans as a part of any component development effort. Ignore Beans, and the new opportunities created by them, at your peril.

Commerce in the Information Age

We've all heard that the Internet will revolutionize commerce, right? With a few specific exceptions (I love online trading!), we've yet to see any major transformation occur. Two new Java APIs, however, can facilitate the realization of this dream of bit-based capitalism.

Talks on Java Commerce and Security APIs occurred separately, but in my mind they should have been together. The flow of digital money with the assurance of safe, public key encryption can enable many real-world financial transactions that without this security will languish or remain unfinished. I fear that separating the discussion of commerce from that of security may have downplayed the importance of the interconnections between the two. To be clear ("Hello, Mr. Clinton?"), commerce without free and unregulated encryption will never blossom.

JavaSoft and its partners have realized the need for this connection and are building a strong security base with JDK 1.1 and beyond. Object signing (using JAR archives and security classes in java.security) enables not only safer applet downloads but also more trustworthy, and thereby useful, enterprise-scale digital commerce applications.

What can you do? Write secure commerce software in Java now for deployment when JDK 1.1 browsers become available. Ubiquity of security in the Java platform will ensure not only your business components' success, but also quite possibly the success of electronic commerce as a whole.

AWT and the UI framework

At any Java Users Group meeting in the world, if you ask "Who doesn't have a single complaint with graphics support in JDK 1.0?," you can rest assured that those who raise their hands (if anyone does, that is) haven't done much GUI work! JavaSoft has set out with JDK 1.1 and future work to change this for the better.

Several sessions, from James Gosling's keynote to the various abstract windowing toolkit (AWT) technical presentations and Java Pavilion exhibits, illustrated the power of JDK 1.1's AWT and outlined the future availability of Java Foundation Classes (JFCs for short, based on Netscape's IFC). AWT in 1.1 uses a Delegation Model for transferring events to interested parties. This model, based on the new java.util.EventObject, results in cleaner GUI code while simultaneously speeding up many Java applications considerably. (There's less communication overhead to contend with.) AWT 1.1 also contains a set of lightweight components to further speed up execution times, and all AWT components are themselves usable as JavaBeans, allowing for further customization.

In the future, JavaSoft plans to deliver one or more sets of advanced components built on top of AWT. The JFC integration work, called Project "Swing Set," will be completed as part of the grander scheme of enabling pluggable UI frameworks. Stay tuned for more details: graphics and GUIs in Java are becoming a lot more interesting!

Got media?

Up till now, Java has had sparse support for multimedia of all sorts, with virtually no built-in support for media processing or manipulation. A suite of new post-JDK 1.1 APIs are aimed at remedying that predicament.

The Media APIs (often referred to as media and communication APIs) are numerous and in various states of availability -- from JMF Players in beta with certain implementations already available, to Java Speech being only in the early definition phase. So I won't go through these APIs in great detail but instead will refer the interested reader to the JavaOne materials online and the JavaSoft API Overview page (see Resources).

By next year's JavaOne, we'll all be taking media capabilities in Java for granted. By then, Java will be the most capable language for capturing, playing, controlling, and in most other ways interacting with media of all sorts. Multimedia has come to Java.

From your pocket to your server (and beyond)

As several speakers remarked, new Java APIs are simultaneously evolving Java out from the middle ground of desktop and workstation computing that it has chiefly occupied in the past, in the small-scale world of appliances and personal devices on the low end, and in the large-scale area of compute, middle-tier, and other servers on the high end.

Discussions of the Java Card API, PersonalJava, and Java devices (phones, PDAs, and beyond) illustrated Java's potential in the embedded and small footprint device markets. In an industry panel on Java devices, panelists unanimously encouraged developers to begin exploring the business opportunities now, as next-generation devices will be available RSN (again, that favorite of all acronyms) that will make use of the new APIs and Java Platforms for information appliances.

Similarly, talks on Java Web Server and Servlet API illustrated how Java can enable server-based functionality, in many cases providing both greater stability and speed while scaling up well to meet serving demands. Some intriguing discussions occurred on the use of the Server Toolkit to create non-HTTP services (for instance, CORBA/IIOP, RMI, and so on). Servlets and Java services have the potential to revolutionize server design and deployment.

Conclusions

As a language Java has grown up. Enterprises are deploying software written in Java for mission-critical applications, while new businesses and industries are coalescing around technologies enabled by its use. The current generation of 1.1 APIs allows for greater reliability, interoperability, and portability than any other computing language or system in widespread use today. Future APIs will continue to build on the 1.1 technology base to make the Java language more powerful and feature rich. Last year, writing applications in Java was still somewhat risky: this year, it's smart engineering and good business.

Bill Day is a software engineer at Silicon Graphics Computer Systems. He worked on SGI's Java IDE, Cosmo Code, before designing a test suite for SGI's implementation of the Java Media Framework Player API. His freeware applet, VisAnimator, has received numerous awards from around the Web. When Bill's not working on Web projects or next-generation workstations at SGI, he loves to travel with his wife, speak French, and enjoy life. Java, c'est magnifique!

Learn more about this topic