An object-oriented database integrated with a multimedia development system

In 1995, most vendors and industry analysts scoffed at Computer Associates (CA) when it staked out a position in the pure object database management system (ODBMS) market. Vendors and analysts embraced a hybrid object-relational database management system (ORDBMS), which became the basis for the universal ORDBMSs of Oracle, IBM, Sybase, and Informix. Despite the opposition and the acquisition of the Ingres relational database management system (RDBMS), CA (with the help of Fujitsu) pushed forward and created a new ODBMS product, Jasmine: Objects @ Work.

Since Jasmine's debut in December 1997, CA has billed the product as a complete "object database in a kit" application development environment for building dynamic, multimedia client/server and Internet applications. CA's highly multimedia-centric marketing approach (CA even uses media jargon, such as scenes instead of forms or pages) puzzled me at first. But then I figured out the reason: CA's initial target is organizations that want to build new Web or kiosk applications, especially those organizations that don't have massive databases but want 24 * 7 support.

At first glance, you might think that this market differs greatly from CA's traditional customer base of large multinational companies with mainframes. However, many of those FORTUNE 500 firms are building new intranet and extranet applications. For those firms that aren't building such applications, CA has made sure Jasmine also supports classic client/server application development.

Traditional customers will likely use Jasmine to develop client/server multimedia applications, such as electronic catalogs on CD-ROM. Nontraditional customers will likely use Jasmine to develop Web-based applications, such as electronic commerce applications on the Internet. No matter whether customers fall into the traditional or nontraditional category, they need to know about Jasmine's pure object technology, architecture, system setup, features (such as extensible classes, easy-to-run queries, and WebLink), and downfalls.

Pure Object Technology
As Table 1 (page 80) shows, RDBMSs and ODBMSs differ in many respects. One of the most important differences concerns how they organize data. Unlike an RDBMS, which organizes data into tables, an ODBMS organizes objects hierarchically based on object templates called classes. In other words, an ODBMS integrates object-oriented technology capabilities with database capabilities. (ORDBMSs aren't included in Table 1 because they typically have the same traits as RDBMSs.)

Jasmine, like most ODBMSs, combines traditional data (such as names and phone numbers) with multimedia data (such as photographs and sound files) to form business objects. Just as in other object-oriented technology, each business object has properties, which help define the object, and methods, which define the way in which an object interacts with users, applications, and other objects.

Architecture
Jasmine features a multithreaded, modular architecture. As Figure 1 (page 80) shows, the architecture is open. Computer Associates has designed Jasmine as an open system that can run within the component object model (COM) or Common Object Request Broker Architecture (CORBA) environments. Programmers can use tools as diverse as scripting languages, Java, and ActiveX controls to create Jasmine objects. Jasmine consists of several components.

Jasmine object database server. This server is the Jasmine object engine that features integrated database management functions. It stores and performs database methods.

Jasmine Studio. Although Jasmine hasn't been in existence long, you might run into terminology that is now obsolete. For example, Jasmine Application Development Environment (JADE) and Jasmine Application Development System (JADS) are early names for what is now called Jasmine Studio. You use the Jasmine Studio integrated development environment (IDE) to create Jasmine applications and access the Jasmine database and to browse, inspect, edit, and create objects, classes, and class families. Jasmine Studio has an interactive GUI that lets you use point-and-click or drag-and-drop operations to manipulate applications, databases, and classes. You must connect Jasmine Studio, which runs under Windows 95 or Windows NT to the NT- or Solaris-based Jasmine database server.

Jasmine store. This store is a physical data container within the Jasmine database. It stores both traditional and multimedia data.

Jasmine client. The client is the environment in which you run Jasmine applications. You can run applications on standalone systems, client/server systems, extranets, intranets, and the Internet.

Jasmine class libraries. The Jasmine class libraries contain predefined class families, such as the multimedia and SQL class families. To extend the class libraries, you can create new classes and class families or purchase them from many third-party vendors. (For a list of these vendors, see the Windows NT Magazine Web site at http://www.winntmag.com.)

Jasmine API. You can use this set of function calls to manipulate the Jasmine database. You can use several programming languages, including C and C++.

Java Bindings. You can use the Jasmine-centric Java proxies (jP) approach or the Java-centric persistent Java (pJ) approach to combine Java with Jasmine. In the jP approach, you define classes within Jasmine and then use a simple utility to export those classes into Java. In the pJ approach, the Java files contain the class definitions. You run a pair of utilities to make those classes persist in Jasmine.

Jasmine ActiveX. This facility works with Visual Basic (VB). It also works with any development environment that supports ActiveX.

Jasmine plugin. This Web-browser plugin lets users run Jasmine applications through the Web. The plugin also lets users access the Jasmine database through the Web.

WebLink. This HTML toolkit lets you access Jasmine objects from standard HTML pages on the Web without the Jasmine plugin. Common Gateway Interface (CGI) and Netscape API (NSAPI) interfaces are available; the Internet Server API (ISAPI) interface is under development.

Relational data access. This set of predefined SQL classes lets Jasmine applications access and manipulate data in other databases. The SQL classes use native drivers to integrate with traditional database systems (including Sybase's Adaptive Server Enterprise and Microsoft's SQL Server) and mainframe-based databases (including CA's CA-IDMS and IBM's DB2). You can also use third-party data-access middleware. For example, ISG offers ISG Navigator, which provides OLE DB, Open Database Connectivity (ODBC), and Java Database Connectivity (JDBC) interfaces for NT. CA expects to have integrated the ISG interfaces into the 1.2 release early in the second quarter of 1998.

Jasmine: Objects @ Work
Contact: Computer Associates * 516-342-5224 or 800-752-7646
Web: http://www.cai.com/products/jasmine.htm
Price: Starts at $800
System Requirements: Server: 64MB PC running Windows NT 4.0, Workstation: 32MB multimedia PC running Windows NT 4.0 or Windows 95

System Setup
You need NT 4.0 or Solaris to run the Jasmine object database server, but you can install Jasmine Studio on NT or Win95. You can run Jasmine applications from Win95 or Java-enabled browsers and from NT or Solaris clients. Installation is routine. A basic system typically includes:

  • A Jasmine object database server that includes a starter database featuring a default of 8000 pages (each 8KB) and optional mediaCF classes, sqlCF classes, and WebLink support
  • A Jasmine Studio development environment
  • Web support, including an HTTP server, a Netscape plugin, an Internet Explorer (IE) plugin, and a WebLink server that acts as an interface between the HTTP server and the Jasmine object database server.

For a more elaborate setup, you can get add-ons, such as Superscape's Viscape 3-D Web browser and Excalibur Technologies' Excalibur RetrievalWare for CA Jasmine and Excalibur Visual RetrievalWare. With Excalibur Technology's products, the Jasmine object database can store index and query content to support natural language and visual queries.

Installation of the ActiveX control support is optional, as is the installation of various demonstrations. CA provides demonstrations on how to use Jasmine ActiveX with VB, Jasmine API with C, and Java Bindings. (Solaris users must have a HotJava browser to run the Java Bindings demonstration.) CA has even included a motorcycle demonstration you can use to experiment with WebLink HTML support.

As a VB programmer, I found the three Jasmine ActiveX-with-VB demonstrations useful. An IE demonstration shows how to connect IE to Jasmine and run a query from IE. A query demonstration shows how to retrieve data (including multimedia data) into a VB form. And a browser demonstration shows how to retrieve type information about classes into a VB app (a template manager). To run these three examples, you must install the CAStore demonstration database on an OS with VB 4.0 or higher and IE 3.0 or higher. However, you can view the demonstrations' code without installing the CAStore database.

Extensible Classes
Like other IDEs, Jasmine Studio relies on an Explorer-like user interface that has class and property browsers; object, method, and query editors; and a scene editor for multimedia page layouts. Screen 1 shows the Jasmine Studio class browser, which uses yellow boxes to denote classes and red boxes to denote objects. The browser lets you easily navigate through the classes in a top-down mode (which lets you see the hierarchy), in a bottom-up mode (which lets you can see the inheritance tree), and in alphabetical order.

CA claims that non-programmers can use Jasmine Studio, but I think CA is overstating the case. The process starts out simply enough: To create a new class in Jasmine Studio, you click File and then New in the Class Browser. However, a new class starts as an unbuilt class (i.e., without properties and methods), so you need to understand class hierarchy concepts. Only after you create the properties and methods can you add objects to that class. New classes can inherit only from classes within the same class family. However, Jasmine supports multiple inheritance (i.e., new class definitions can inherit properties and methods from more than one parent class).

You can set the properties of a class with Jasmine Studio's interactive GUI at development time or programmatically within Jasmine applications. To view the properties of existing classes or objects, you double-click the class or object from the Class Browser to bring up the Object Property Inspector dialog box, as Screen 1 shows.

You can write the method code in C, C++, Java, or Jasmine's proprietary native database programming language, object data query language (ODQL). You can also use Jasmine's ActiveX or other ActiveX controls to write method code.

WebLink
The WebLink toolkit lets you access Jasmine databases, manage sessions, and display query results on HTML pages. To accomplish these tasks, you must master WebLink templates, which contain the necessary ODQL commands. Jasmine executes a template as one transaction.

WebLink includes the WebLink class library, which contains the HTML_Template class and methods that you need to create and retrieve templates. You must define one template for each HTML output page that will contain information from the database. Before you can use a template, you need to use the createTemplate() method of the HTML_Template class to store the template in the WebLink object database. WebLink also includes 11 HTML extension tags (for a list of these extensions, go to Windows NT Magazine's Web site at http://www.winntmag.com).

Easy-to-Run Queries
You can run queries using Jasmine Studio's interactive GUI or the Query Editor. To run a query with the interactive GUI, you can drag a query onto a Jasmine Studio scene; the query retrieves objects that are part of the same class. To run a query with the Query Editor, you select a class (or classes), specify the Boolean operators, and select the properties or methods on which the operators function. This type of query will also retrieve objects that are part of the same class. However, you can add a subquery to retrieve objects that belong to more than one class (this action is similar to what a join function accomplishes in SQL databases). You can find an example of a subquery on the Windows NT Magazine Web site at http://www.winntmag.com.

Jasmine's Downfalls
No product is perfect, including Jasmine. Jasmine has several drawbacks in the areas of documentation, caching, performance, tools, and support.

Confusing documentation. CA delivers Jasmine's documentation in mixed formats. For example, the documentation explaining how to install Jasmine is in print and on CD-ROM, but the documentation on how to use Jasmine is in print and online. The JADS documentation is in a Windows Help file, but WebLink HTML Help documentation is in HTML pages. This mixed format causes confusion.

Undocumented performance. CA has been relatively silent about Jasmine's performance, even about its much-touted multimedia applications. (I tested Jasmine in small, experimental applications, so I can't comment on its performance.) However, the incentive for using an ODBMS is often to avoid even worse performance with an RDBMS.

Missing tools. Jasmine delivers on its promise of an "object database in a kit" application development environment, but developers won't find everything they need. For example, Jasmine lacks the database administration tools that SQL Server database administrators (DBAs) expect. The missing tools include easy security administration (now limited largely to class- and method-level locking) and database backup and replication.

Missing support. Another drawback in Jasmine is that it currently supports only TCP/IP as a network protocol (perhaps because the product is only a 1.1 release). CA is already making improvements. For example, CA is developing support for Microsoft Cluster Server and plans to make a double-byte version of Jasmine to support Asian and other markets that use non-ASCII characters. The company plans to use Jasmine as the preferred object store in its Unicenter TNG enterprise management package by late 1998 or early 1999. (Unicenter TNG currently uses SQL Server.)

Decide for Yourself
Jasmine represents a significant vote of confidence for pure object database technology. But how much market share will it gain for CA? Only time will tell. CA will certainly face stiff competition. Database giants Oracle, IBM, Informix, and Sybase will vie for the same market share with their universal ORDBMSs. In addition, Microsoft is planning to launch its OLE DB-based approach to universal databases beginning with online analytical processing (OLAP) extensions to OLE DB.

You can request a free copy of the Developer's Edition of Jasmine and attend one of CA's free training sessions for developers. For more information, go to CA's Web site at http://www.cai.com/products/jasmine.htm. For more resources about Jasmine and object databases, go to Windows NT Magazine's Web site at http://www.winntmag.com.