Building a Better Mousetrap: Making Development Easier with Java Tools

   
By Janice J. Heiss, May 10, 2005  

As part of Sun Developer Tools Month, we caught up with Bob Brewin, a Sun Microsystems Distinguished Engineer and Chief Architect for Developer Tools, as well as the original architect of Sun Java Studio Creator. Bob has worked with a number of internal groups focused on ease-of-development improvements in Java technology tools and the Java technology platform, and has participated as a member of expert groups for some active Java Specification Requests within the Java Community Process (JCP). We met with him to get the latest on Java tools and developer productivity.

Why is there a difference in tools and products? Why not have one tool for Java development?

Developers, like the applications they create, or the environments they execute in, are all different. Whether that's due to a skill set issue or the task they are working on, tools typically are tailored for specific developers and tasks. The old adage about using the right tool for the job applies here. NetBeans provides the general tools for development in a classic IDE setting. Many of the APIs provided by the Java platform (including those that are bleeding edge) are available, but the IDE is generally tailored for the professional developer who is comfortable with the language and platform and with coding the majority of their application in the editor.

Tools like Java Studio Enterprise, on the other hand, provide the advanced developer with specialized tools necessary for large-scale Java 2 Platform, Enterprise Edition (J2EE) application development. Tools like UML modeling facilities, specific J2EE tools and various facilities help the developer "wire" an enterprise application together. Moreover, Java Studio Enterprise is the only tool in its class that provides marker-less roundtrip engineering and is the only tool to incorporate load generation facilities. And while it's true that one could build an enterprise application in NetBeans, Java Studio Enterprise can make one more productive while providing additional support in solving enterprise-specific problems, such as enterprise server deployment, and support for enterprise web-services and SOA.

NetBeans and Java Studio Enterprise support opposite sides of the development spectrum. Java Studio Creator strikes a balance between these two extremes. It's designed to help all developers rapidly create applications intended to consume and use data and web services -- frequently those created with Java Studio Enterprise or NetBeans.

After the 2004 JavaOne Conference, you wrote: "Most of the developers I met 'raved' about Sun Java Studio Creator, or at least about the principles upon which the tool was created -- ease-of-development, high productivity, Java standards, and making Java platform development easy for the large number of developers for whom Java is not their second language."

Two questions: First, since then, how have developers responded to Creator? And second, how is Sun promoting the core principles that are found in Creator that Java developers value?

"The response to Creator has been overwhelmingly positive. The biggest problem has not been finding people who love the tool, it's been satisfying the demand for more."
 
 
Bob Brewin
Distinguished Engineer and Chief Architect for Sun Developer Tools
Sun Microsystems
 
 

The response to Creator has been overwhelmingly positive. The value of the tool cannot be overstated, especially for those who are looking for an extremely high-productive development environment for Java web applications. The biggest problem has not been finding people who love the tool, it's been satisfying the demand for more -- more support for different databases, services, servers, application types and JavaServer Faces (JSF) components. And while we have made progress in all of these areas, it's the component market which is perhaps the most exciting of all. Companies like Otrix, SoftwareFX, ESRI, ILOG and Business Objects are hard at work delivering standard JSF components for the Creator developer to use in their applications.

Looking forward, I think everyone will be pleased with the new components Sun will offer as well. These components will demonstrate the ease of development of JSF-based applications within Creator, apps that provide a rich web client experience previously available only by hand-coding JSP applications through leveraging scripting.

As for Sun's efforts to promote these core principles: First, the general philosophy of simplifying application construction, as opposed to code creation, is gradually finding its way into all of Sun's tool offerings. Second, improving the tools support for WYSIWYG design and component interaction within a design-time environment has always been a goal, and with the submission of JSR 273 (approved by the executive committee), it should soon be possible to have a consistent JavaBeans component design-time support infrastructure that all tools can leverage.

Round-Trip Engineering
 
"Creator and Enterprise share the notion of round-trip engineering -- from model to code and back to model again. It's an incredible productivity win."
 
 
Bob Brewin
Distinguished Engineer and Chief Architect for Sun Developer Tools
Sun Microsystems
 
 

How might features like collaboration and UML modeling in Java Studio Enterprise, and visual Java development in Java Studio Creator, enhance developer productivity?

Put simply, it's all about making the application construction process as easy as possible. Historically, the answer to "productivity" was the inclusion of "wizards" which automatically generated boilerplate code for the developer. Unfortunately, these facilities rarely supported round-trip engineering. If your requirements changed, you would need to re-execute the wizard, perhaps losing valuable code in the process. Creator and Enterprise share the notion of round-trip engineering -- from model to code and back to model again. It's an incredible productivity win. Moreover, it's actual code that the developer gets as a result, not incomprehensible machine-readable metadata. "Truth in code" is now a reality.

Collaboration is a different beast entirely. While tools such as Java Studio and NetBeans have incorporated a number of truly cool productivity features based on visual design, the collaboration facility is unique in that it extends productivity across teams of developers. It's become commonplace for engineering teams (development, QA, etc.) to become distributed. This can lead to huge disconnects or inefficiencies, where such activities as staging code changes to manage synchronization issues have become commonplace.

Imagine, instead, that multiple developers can work simultaneously on the same code, and not only are those changes managed and visible to those developers while they are occurring, but the facility allows for those developers to easily collaborate and coordinate changes with messaging in real time. I think we've only barely scratched the surface of how valuable these facilities will be.

Tiger and Productivity

How does the Tiger release enhance developer productivity?

The Tiger release enhances developer productivity in a number of ways at the language level, rather than in the layered tools on top of the Java platform. Metadata and generics can provide huge benefits for developers. With the Tiger release, tools are incorporating support for its features. Big gains will be obvious in J2EE 1.5, with its support for the next version of EJBs (where, for example, metadata use is leveraged). Productivity will be greatly enhanced in creating and integrating J2EE objects which leverage J2EE 1.5 in their applications.

NetBeans

What should developers understand about NetBeans?

A few things are worth mentioning here. First, all of the tools that Sun delivers have a foundation in NetBeans. Second, the NetBeans IDE has proven that it's the best in its class. NetBeans has won the 2005 Open Source Tool of the Year award, getting more than 60% of the vote, no less. The NetBeans IDE is full-featured, cross-platform, and the first Java IDE to support the Tiger release of Java 2 Platform, Standard Edition (J2SE). It's a significant challenge to discover any IDE that can compete with NetBeans in the areas of quality, performance, features, or broad support for the Java platform. And it's getting better. With the 4.1 release of NetBeans, developers now get full J2EE 1.4 support and some radically new and cool improvements for Java 2 Platform, Micro Edition (J2ME) development, including new GUI design tools and visual layout tools for MIDlet workflow.

Tools for the Enterprise

What is happening with tools for enterprise integration and tools for the larger-scale enterprise application?

Applications are becoming more and more complex, especially in an environment where businesses are attempting to tie together systems and services in a loosely-coupled manner. And while the buzzword tossed freely around is "SOA," the main focus for many companies interested in solutions "today" is pretty much on just that -- the creation, integration and orchestration of "systems" built out of these loosely coupled services.

If you want proof of this, look at some of the largest commercial websites out there. What used to be a single electronic store is now a single storefront which incorporates data from a potentially huge number of sources. Building such a thing would not have been possible only a few years ago, and as complexity continues to rise, so does the role of tools. Looking forward, the primary role for tools (aside from the easy creation and manipulation of those services) will be the task of "management," which includes not only what we classically think of in terms of managing a running system, but the construction of an "application" which potentially spans the Internet. Such an application is beyond the ken of any single (or likely) group of mere mortals without some help in visualizing, binding, orchestrating, and deploying these systems. Look for tools to make this process easier and more powerful in coming releases of products like Java Studio Enterprise.

The Future of Java Tools
"We are rapidly approaching the point -- if we are not there already -- where applications are too complex for a classic IDE, much less the developer, to comprehend."
 
 
Bob Brewin
Distinguished Engineer and Chief Architect for Sun Developer Tools
Sun Microsystems
 
 

Where do you see Java tools heading in the next few years?

Java tools went through a series of phases over the past decade, from extremely rudimentary tools, to C++ or Pascal environments which were retrofitted to handle Java software, and finally to extremely complex systems which allowed developers to access the entire breadth of the Java platform APIs. Today, most of those IDEs are shifting from a model where the emphasis is on API-to-feature count, to one of enhancing overall productivity -- even if that means that there aren't new wizards or shortcuts to the latest-and-greatest APIs.

The trend in application types is moving towards the more complex, and rather than matching complexity with complexity, the designers of tools are recognizing that their goal should be to simplify the development of complex applications. We are rapidly approaching the point - if we are not there already -- where applications are too complex for a classic IDE, much less the developer, to comprehend. So the future lies in simplifying the task of working on the individual application components, "knitting" those components together into a working system, and then debugging, monitoring, and maintaining them through their life-cycle.

Surfing and Developing

Finally, you are known for your love of surfing -- on the ocean. Do you want to say anything about the similarities between surfing and what you do at Sun?

A fun one! Aside from the fact that it's one of my most enjoyable pastimes (I do it as often as I can, which turns out not to be often at all given work and travel!), I have noted that the actual task of surfing a wave is much like developing software. It's a blend between science and art -- you can't be an exceptional programmer or surfer without artistry and "feel". In surfing, every wave is unique, every ride is different. Moreover, every surfer is different, with different skill levels, different viewpoints, and different expectations about the process or task.

In software, it's similar. Rarely do we discover the same problem or arrive at the same solution in the development process. While the basic skill set is pretty much the same, how you apply it depends on various factors which change from day to day and hour to hour. A big challenge, from my perspective, is trying to keep a "weather eye" on the changing developer and application conditions, which includes gathering an enormous amount of customer data/requirements, and then adapting and applying our skills to the always changing environment. It's easy to see the parallels between my job and surfing, and I find that I enjoy them equally.

See Also

Bob Brewin's Blog
NetBeans.org

Rate and Review
Tell us what you think of the content of this page.
Excellent   Good   Fair   Poor  
Comments:
Your email address (no reply is possible without an address):
Sun Privacy Policy

Note: We are not able to respond to all submitted comments.