You may already be familiar with the NetBeans Integrated Development Environment (IDE), the product of the NetBeans open source project -- it's a world-class multi-language IDE in its own right, and forms the the basis for development tools from Sun Microsystems (SunONE Studio), Compuware (OptimalJ), and a number of other companies.
But you may not know about some of the fascinating uses to which the IDE's architecture has already been put within the industry -- outside of the realm of development tools. NetBeans' core infrastructure is that of a "generic desktop application," which may be reused to create solid, cross-platform applications in record time.
The key principle driving the surge of interest in NetBeans is that the IDE is modular. This means that there is a "core," the generic desktop application, with all of the components common to such applications. There is infrastructure for managing these components, such as actions, windows, data storage, settings storage, and so forth. To make an IDE, a set of modules are bundled with this core runtime. These are what provide the functionality that makes the NetBeans IDE an IDE. The support for the Java language is a plug-in module. The code editor is a plug-in module. Every piece of useful functionality the NetBeans IDE offers is provided by modules. Branding (splash screen, application name, etc.) is easily alterable using Java resource bundles. Thus it stands to reason that, if you use the NetBeans platform and a set of non-IDE modules, you end up with an application that is not an IDE.
As James Gosling, creator of the Java language, puts it: "What attracts me to NetBeans is the fact that, contrary to the marketing material, it is not an ... integrated development environment. It is better described as a DDE -- a disintegrated development environment. At its most basic, NetBeans is just a spine. It is a framework that components can be plugged into. When you run NetBeans, almost everything you see is a plug-in."
What the platform provides is a set of well-defined APIs and abstractions for implementing functionality quickly and easily. Developers do not have to worry about managing code for menus and windows (although if special presentation is needed, this is possible). Almost all desktop applications will need these things. It makes sense for the runtime to handle this logic and not trouble the developer with coding them unless it is needed. The same is true of persistent user-configurable settings, access to data, and the hierarchical presentation of data. The NetBeans Open APIs provide abstractions and infrastructure for all of these things.
Think of the NetBeans platform as conceptually similar to an application server. An application server is a runtime which provides an execution context for arbitrary Enterprise Java Beans components. It provides abstractions that allow developers to concentrate on business logic, while common requirements are handled by the runtime itself. The NetBeans platform is a runtime in which arbitrary modules execute. The runtime handles much of the grunt work of building an application. Developers get to concentrate on implementing their logic, not on reinventing the wheel.
But all of this talk about the wonders of a platform is meaningless without examples of companies and individuals benefitting from using it. To get an idea of just how broad the uses of this toolset are, consider some of the companies and institutions using it:
ECS International, an Australian mining software company, is the developer of Minex, an integrated software solution for the evaluation and planning of open-cut and underground mines for both coal and minerals. ECSI modified NetBeans to use an advanced OpenGL/PEX/Phigs graphics environment and socket communication with a server back-end.
GenePattern, developed by the Whitehead Institute/MIT Center for Genome Research, is a collection of gene-expression-related modules connected to the NetBeans platform. The use of modules offers the advantage that users can add new features as modules to GenePattern. Software developers can implement analysis algorithms as modules to plug in to the GenePattern-NetBeans framework.
Project XEMO is an open source, modular software environment for the development and delivery of interactive music, audio, and sound applications. XEMO Integrated Composition Environment (ICE) is the desktop delivery platform for the integration of application modules into an interactive musical application. It provides those services needed for all musical applications, such as common data representations, music file formats, and common interface components (e.g., playback controls). These services are implemented as a set of shared APIs that are available to music application developers.
Compuware's OptimalJ is an advanced development environment enabling the rapid design, development, and deployment of J2EE applications. OptimalJ generates complete, working applications directly from a visual model, using sophisticated patterns to implement accepted best practices for coding to the J2EE specs.
There will always be a place in the world for "fat clients." The NetBeans platform brings to desktop applications the same advantages that J2EE architecture brings to server-side applications:
By taking advantage of this free, standards-based toolset, developers can build complex applications faster and with greater assurance of robustness.
In NetBeans: The Definitive Guide, you'll find out how to use this IDE to its fullest, making your Java programming more efficient and productive than ever before.
Please attend the NetBeans technical session at OSCON, on Tuesday, July 23, 2002 (in the Sea Breeze II room from 8:45am to 12:15pm) and learn how to build your own modules for the NetBeans IDE or applications built on the NetBeans Platform.
For more information on NetBeans-related activities at OSCON, see the NetBeans OSCON pages on the NetBeans Web site.
The source code is accessable via anonymous CVS at cvs.netbeans.org. Ongoing development of the platform, proposals, and support happen on the NetBeans public mailing lists, which are also accessible via newsreaders at news.netbeans.org.
Tim Boudreau is a product manager and software engineer with Sun Microsystems in the Czech Republic. He has been working with NetBeans since 1999.
Return to ONJava.com.
Copyright © 2009 O'Reilly Media, Inc.