GemStone System's VM Heritage

This site has been composed, with the permission of GemStone, by a group of practitioners who very much appreciate what GemStone provides to the marketplace. It's this practitioner's perspective that sometimes it is possible to be so close to the company that it is difficult to know where one's value truly resides. I believe that GemStone's achievements in using VM technology on behalf of its' ACID test compliant object databases is both what binds its Java and Smalltalk products and is where its "magic" is--the thing that really makes GemStone special. How so, you might ask? To answer this question, one needs to cover a bit of history.

GemStone history, an outsider's perspective

In the early to mid nineties the "object" world, as far as business was concerned, was comprised of C++, Smalltalk, object Pascal (Delphi) and any other language whose vendor put "object" in front of their name. As far as market share is concerned, in late 1995 I remember hearing Grady Booch speak at Denver University where he was giving a talk from his then upcoming "Object Solutions" book. Grady declared C++ the winner in the object language wars. On its face you could not argue with him. Any developer could, and often did, purchase a C++ IDE for less than a $100 and solve real problems on behalf of their respective businesses. C and C++ were serving business well. Also, about this same time the very early releases of Java were available to build "cross-platform" GUIs with. Well, what about Smalltalk?

As it turns out, through hindsight, we know that Smalltalk was at the height of its popularity, as a percentage of the market, in the U.S. As a language Smalltalk had provided a terrific platform for solving real, heavy-duty business and aerospace problems--it was, and is, a terrific, powerful language to implement domain-driven-design. But, it was also prohibitively expensive.

At the time, there were two primary vendors: Parcplace and Digitalk, which soon after became Parcplace Digitalk. As I recall, a development seat was about $5000, irrespective of whether you purchased Parcplace's VisualWorks or Digitalks full offering a la carte (you could "step into" Digitalk a bit cheaper). While my partners and I paid the price per developer for our consulting practice, I have only met one individual who shelled out his own money for a copy. As a result there was a strange situation where ordinary developers were paying $99 for a C/C++ IDE and having great success with a language that was notoriously difficult to work with versus the proud folks of Parcplace Digitalk who believed only the extraordinary developer could "grock" their fine tool and charged accordingly. Long story short is that the market eventually chose the upstart--and free--Java programming language over both incumbents.

The bad news for GemStone was that it lived in the shadow of Parcplace and Digitalk. In order to benefit from its very fine Smalltalk object database GemStone's customers needed to have invested in and committed to Smalltalk, therefore most customer opportunity came from these two vendors.

While Parcplace was among the first vendors with an interesting way to deliver UI to a browser through its VisualWave product and had a very mature IDE and rich set of classes, the market chose the lesser technology. I am not too clear on my time lines but, much to my surprise, it seems that within a year Parcplace Digitalk share price went from about 50 dollars to about 50 cents. The European company Cincom then came along and scooped up Parcplace Digitalk for a song where Smalltalk continues to thrive "on the Continent" and also here with its open-source version, Squeak. (It is worth noting that Smalltalk still thrives much as it always has, well off the radar, and yet uniquely solving substantial problem domains; it will be interesting to see if Smalltalk makes a comeback with the advent of Web Services where it does not matter what the implementation language is behind the service.) Meanwhile, GemStone took its expertise and applied it to Java, where it helped to turn Java into the server-side technology it is today.

So, what was GemStone's expertise?

(I use "was" here because GemStone has since developed an extraordinary caching product called GemFire that is not VM-based and that you can read about at GemStone.com.)

In 1988, GemStone-Smalltalk was the very first commercially available object database (known as simply GemStone at the time). For much the same reason that the Smalltalk market was smaller than the C/C++ market, GemStone's object database market share was eventually surpassed by the C++ object database vendors such as ObjectStore, Poet, Versant et al. But, as with the underlying technology, IMO there was nothing remotely similar between the products.

A friend and colleague of mine, whom I met through our common connection to GemStone-Smalltalk, use to call his consulting company Relevant Magic. His practice was based on the GemStone technology and was well named, as GemStone provided nothing short of magic to the then client-server world of Smalltalk. Let me explain through a brief example.

Imagine you were working in the MVC (Model, View, Controller) world of Smalltalk by way of a VisualWorks IDE, simply programming in the debugger and making great progress until, voila, you had a completed application. Up until this point persistence did not matter for your model because you were working alone, at least for this scenario, and so you simply used the data built up in the Smalltalk image each time you started up. Now that you are ready to make the application available for concurrent use all you had to do was connect to GemStone.

With this connection your Smalltalk objects were transparently persisted to GemStone at store or faulted into the client VM as you needed them. Further, you could choose whether your method(s) would be executed in the client VM or in the GemStone VM on the server (Smalltalk is to GemStone as PL/SQL is to Oracle). What a beautiful world. Simple. Elegant. Powerful.

As a result, in my opinion, GemStone's demonstrated expertise has been to transparently persist your object model, originally with Smalltalk and then with Java. The "transparent" part is enabled by virtue of the machinery in the GemStone VM that allows it to participate in transactional-shared-memory and that automatically tracks and manages dirty state in your "model" or "domain" objects, such that when you choose to commit then only the dirty objects get written. Transparent also because it persists all objects that are reachable from the root object that is bound into GemStone's root context (a JNDI tree) which is called "persistence by reachability". As a result, one could say that the real GemStone expertise is in creating enterprise-class VMs, first for Smalltalk and then for Java.

GemStone's Java story, a partner's perspective

GemStone has from very early on been a licensee of Sun's Java VM--and Sun benefited from GemStone's expertise right away as GemStone engineers helped to debug Sun's nascent VM offering. As a licensee, GemStone starts with the Java VM provided by Sun and then enhances it to participate in transactional-shared-memory, much the same as GemStone's well-established and proprietary Smalltalk VM. Similar to the extent that the Java language was able to support what Smalltalk did (Java is a strongly typed language where base types are not first class objects which differs substantially from Smalltalk's loosely typed language where everything is a first class object, and there are substantial differences in what a class is and the role it plays in Smalltalk versus Java). Nevertheless, Java as a VM-based object oriented language has more similarities than differences and porting the VM magic to Java was quick and straightforward. GemStone's version of the Java VM then passes the same test suite the Sun stock VM does plus the added test suite incumbent of an object database.

GemStone's first Java offering came in their Beta release of GemStone-Java (GS-J) in October of 1996, followed by a GA release in early 1997. For those of us who were use to writing perl and oraperl to run out of CGI in the Web Server, moving on to Smalltalk and Java for Web-based applications was a terrific leap forward. To get our persistence for free, it was terrific beyond words. The only problem, recognized in hindsight, was the denial of GS-J's true nature as an object database.

For reasons beyond my understanding the analysts whom pontificate on such subjects declared object databases as dead (not a substantial market opportunity, relational has won, etc.). As a result, GemStone focused on its powerful server-side VM and declared itself an Application Server and, later, a J2EE container. With the emergence of J2EE, the likes of Netscape Application Server (later iPlanet), Web Logic (later Bea), and WebSphere were all competing with GemStone and a handful of other players for the space now owned by Bea, WebSphere and JBoss. GemStone incorporated New Atlanta's Servlet Container, partnered with numerous JMS vendors and built their own EJB Container on top of the core Java object database. This part of the story culminates in Bea, WebSphere and eventually JBoss winning the Application Server war, but not before GemStone was purchased for $237MM by a Stuttgart-based platform vendor for GemStone's EJB Container, which, in truth, was very sweet.

Only of late have other Application Servers approached the kinds of deployment, caching and execution capabilities that GS-J had early on. With the evaporation of platform sales so did the German platform vendor retreat to Europe and allow GemStone to be purchased back by its original investor. And, significantly, Facets was born: GS-J without the Servlet or EJB containers--back to its object database roots.

Until the arrival of this portal, in spite of the underlying core technology, GS-J and Facets had never been marketed as an object database. The practitioners participating in this endeavor intend to rectify this, believing that the time is right for the IT community to take another look at Facets as an object database. When trying to understand what Facets has to offer, the place to begin is with the VM.

Alan Strait

Principal Consultant

Cardinal Software, Inc.

alan@CardoSoft.com