Few would dispute that Java was a great idea, but it takes years for even the biggest brainstorm to evolve into a technology ecosystem. A decade is none too long. Sun Microsystems Inc.s 10th annual JavaOne conference, held in San Francisco at the end of last month, combined that level of maturity with a surprising vigor of continuing growth.
This years JavaOne showed off an impressive array of robust products—not just technology demos—attesting to the leverage that technology providers have gained from Javas original core design decisions.
During conference keynotes and show-floor briefings, eWEEK Labs had an opportunity to evaluate significant Java-based offerings in the key areas of software performance improvement, application integration and virtualization of computing resources—creating the scalable and cost-effective platforms required for the high peak-to-average workloads of the Web services world.
One of the fondest hopes of object-oriented technology has been the prospect of introspection and reflection—that is, of enabling software modules to offer the rest of the world a simple means of determining what they do and how to make them do it.
Javas reflection interfaces, added in the now-ancient times of the 1.1 release, allow a program to ask an object run-time questions about its class, its supported methods and its internal data fields.
Missing from that picture, though, has been the ability to ask crucial questions about the use of time and memory and other key resources in production environments as control moves from Java code through the virtual machine into the operating system and back.
That information is vital, said Sun Solaris Kernel Engineer Adam Leventhal during a JavaOne keynote demo, because Java developers are "sitting on top of a huge tower of abstraction, and a small thing at the top can trigger a hurricane of work at the lower levels of memory use or disk I/O."
Developers have long recognized the double-edged nature of objects powerful abstractions. A minor change in the manner of using an object, with its self-managing infrastructure, can substantially alter application performance.
Leventhal demonstrated a well-received improvement in the analysis of such effects, extending Suns DTrace dynamic measurement technology to offer information about internal Java calls all the way down into underlying software layers.
DTrace is not a cosmetically appealing visual tool but rather a decidedly command-line experience based on a C-like language called D. The foundation is there, however, for third-party toolmakers to build visual shells, while developers enjoy immediate opportunities to answer previously vexing questions about what their Java code is doing.
The biggest hit of the 10th JavaOne, as measured by session attendance, was the rollout of the Java Community Process JBI (Java Business Integration) 1.0 specification, previously dubbed JSR-208. (Actually, JSR-000208, but perhaps we need not worry about the implication that there could be more than 999,000 Java Specification Requests still to come.)
The JBI specification comprises 240 pages, but its core purpose is concisely summarized as establishing a standard interface for interaction and management of services. These are mediated by an environment that provides—indeed, based on eWEEK Labs reading, assures—asynchronous interaction to preserve loose coupling and avoid platform dependence in SOAs (service-oriented architectures).
Dave Chappell, vice president and chief technology evangelist at Sonic Software Corp. and a member of the JBI Expert Group, described JBI to eWEEK Labs as enabling third-party components "to plug together into an SOA-based environment."
Giving developers more flexibility than the Enterprise JavaBeans technology, JBI standardizes a basic service container: "Its dramatically going to reduce the burden of coding to different proprietary code," said Chappell.
The decoupling provided by the JBI environment, it appears to the Labs, will deliver the additional resilience thats needed to move from Web services as a mere model of modularity to an enterprise-class SOA. An interoperability demo at JavaOne successfully integrated services created separately by each of several participating vendors; a demo of Sonics Continuous Availability Architecture actually shut down a machine in the middle of processing purchase order messages between Java- and .Net-based services, transferring the task to a backup server without disrupting services or transactions.