JavaSoft has promised that they will deliver many enterprise-based APIs to the Java environment, and, hopefully, they will one day make Java the ideal language for creating professional business applications quickly. Until that day comes, however, we have Vibe. Vibe is the latest in the long line of Java IDEs that claims to deliver high-performance, easy-to-use, Java power to developers. In this newly maturing field, there have been two basic approaches to the creation of development environments. Sun Microsystems, not surprisingly, has placed their faith in an IDE created entirely in Java, which gives them certain advantages, but also has numerous drawbacks. The opposite approach, taken first by Symantec's Café, is to write the IDE in an older-generation language, like C++, to increase its speed and efficiency. Vibe takes this latter approach, but extends it in ways that its competitors have not. Not only does Vibe have a first-rate IDE with all of the basic features, it also provides developer with an extensive set of classes, implemented in native C, which support features from graphics to printing to ActiveX integration. Visix claims this set is "superior to any other Java tool in existence". And they're not kidding.
The Vibe IDE
At the core of Vibe is its Integrated Development Environment (IDE). Although by no means a Visix innovation, Vibe has all of the standard features you'd like to see from any IDE: color syntax highlighting, drag-and-drop GUI building, class browsers and automation for simple tasks.
For the most part, Vibe's IDE is intuitive and easy enough to use. Vibe is organized around projects containing source code, class files and "resources", which can include GUI elements, images and even stored objects. These resources are nice because they can be shared between projects (which other IDEs often can't do). Further, Vibe allows you to have many projects open at once, which is quite nice. Vibe never tries to hide the code of your application from you, nor does it try to write code for you, although it does allow you to take some shortcuts towards setting up your methods and variables. The IDE's class browser always gives you access to every class and method in the Java Core API and the Vibe API, so you can easily override methods and extend classes.
Of course, the IDE still has some bugs to work out. For instance, you can't delete a resource or object from a project. Don't try this one at home, but if you try to add a class with the same name as an existing class, Vibe objects (which it should). If you try a second time, the whole IDE crashes. But most bugs are minor and unlikely to hamper your development.
Editor's Note: Visix has fixed these bugs in both the shipping product and maintenance release due out in June.
Springs and Struts
One of Vibe's most innovative features allows developers to lay out complex and flexible GUI applications without having to deal with the complexities of Java's LayoutManagers or be limited by fixed-distance layouts. Other IDEs often lay out components using absolute screen coordinates, a problem for applications designed to run on many other platforms, which may have different screen dimensions or component sizes. Visix has created a system of "Springs and Struts" that specifies the relationship between components on the screen. All components can be linked using these connectors. Struts have a fixed distance, while springs will expand to fill any available space. Best of all, Vibe's GUI builder shows you an accurate picture of what your GUI will look like in your final application.
Vibe's debugger can compete with any other Java debugger on the market. It has all of the standard features: thread control, breakpoints, variable inspection and class browsing. The debugger is nicely integrated with the rest of the IDE so you can view your code and classes at the same time as running them. Vibe also handles recompiling and reloading necessary classes nicely and its compiler and virtual machine implementations work quite well. Because so much of Vibe is implemented using native code extensions to Java, Vibe's debugger can handle native code well.
The Vibe API
Visix has every right to brag about the extensive API that comes with Vibe. Their add-on classes provide a lot of functionality that other vendors (including JavaSoft) have promised but not yet delivered. Using native methods, these classes also achieve speed that previously has been denied to Java applications because of the sluggish performance of most Java interpreters. Of course, this native code has its drawbacks. So far, only a limited number of platforms are supported and it is not as secure as Java's Core API. But until Java reaches the speed and maturity to supplant them, Vibe's tried-and-true C++ classes are a welcome substitute. Vibe has a parallel class hierarchy for both its native objects and the Java objects that control them, making the integration seamless. Here is a sampling of some of these classes, by package:
- Base: Basic classes providing support for native objects and object patterns like object loader and iterator.
- Sys: System file classes like events, dictionaries, clipboards, timers and file I/O classes.
- Util: Like java.util, provides date and time classes as well as geometry and extra classes to implement "undo" features.
- Draw: Unlike java.awt, Vibe divides its drawing classes from its GUI classes. Also unlike the standard AWT classes, Vibe's drawing is done using a Postscript-like model, which yields blazing fast rendering speeds. Also includes support for printing.
- App: The main application classes, including the main AppWithEvents, which are a basic template application upon which almost all others are built.
- Ui: User-interface classes, including advanced components like dialogs, drag-and-drop and tables.
- Text: Advanced text manipulation, including classes for drawing text on-screen. Some similar classes to the new JDK 1.1 text package.
- List: Classes that implement list-like data structures. Nice for storing, searching and sorting data.
- Ole: Fantastic OLE-integration classes that can interface with ActiveX, COM and OLE objects on Windows-based PCs.
- Db: Database access classes, currently limited, but JDBC and ODBC support will be implemented in a future release.
- Awt: Classes for interfacing with the normal Java Abstract Windowing Toolkit.
As you can see, Vibe provides a rich environment for creating robust applications. The graphics engine is superb and can handle real-time image manipulations that will cure many Java developers of C-envy. Vibe can resize, rotate and translate images simultaneously, as fast as any 100 Percent native application.
OLE and ActiveX
JavaSoft's JavaBeans architecture is an exciting development for integrating Java with existing legacy technologies, like Microsoft's Object Linking and Embedding (OLE, now called ActiveX). Unfortunately, like many new Java APIs, JavaBeans is still immature and unstable. Not so with Vibe's built-in support for OLE controls running within Java applications. With a little extra code, you can easily leverage existing investments in Windows-based machines and even take advantage of cool controls written by others, including Microsoft's own HTML control which allows you to have a fully-functional Web browser running within your Java application.
Microsoft has also promised that it will be porting its ActiveX technology to other platforms in an attempt to make it as ubiquitous and cross-platform as Java itself. If they succeed in this, Java applications created with Vibe will be in a position to take advantage of that functionality. If not, you'll still have the cross-platform support of Java to power your applications on any client's computer.
Summing It All Up
The whole point of writing programs in Java is to avoid locking yourself into native code that runs on only one platform. Nevertheless, the current implementation of Java often leaves applications crippled and missing important key functionality. Vibe gives you the best of both worlds by providing a whole host of additional API components that work on many platforms. Vibe currently supports Windows 95, NT, Macintosh and Solaris operating systems. Support for Linux, AIX, IRIX, OS/2, SunOS and Digital UNIX is "coming soon". Visix claims to have put over "200 man years" of effort into building their class library, and this effort has really paid off. Applications built with Vibe look and feel like professional applications built with C++. The trade-off is, of course, that Vibe applications that use these special features won't work within the standard Java virtual machine. But for most enterprise and multimedia applications, Vibe is an excellent choice.
About the Author
Eric Ries is the Games and Graphics editor for JDJ. In his spare time, he develops Java applications and writes for books and magazines. He is a founding member of TeamJava and is doing Intranet development with Pacific Communications Sciences Inc.