EsiObjects (pronounced ‘easy objects’) is an class based object oriented system that runs on ANSI, FIPS and ISO standard MUMPS (M) systems GT.M and Caché. EsiObjects is an implementation of an object model and communications packages. The object model is implemented using M associative arrays and routines. The M language is extended to include object commands, special variables and functions. They are implemented via the EsiObjects compiler that is written in the M language. To expose database objects to the enterprise, a TCP/IP Bridge has been implemented. Various communications approaches are supported such as the Java Gateway, COM Bridge and CORBA ORB.
Some important EsiObjects features are:
- An object model implementation based on the Smalltalk class model. The model implements all the concepts required of a full object oriented system, particularly, encapsulation, inheritance and polymorphic behavior.
- A compiler that implements the 1995 ANSI standard M language and EsiObjects language extensions in support of the object model.
- Numerous linguistic enhancements that evolve the M language into an object oriented language that supports persistent or non-persistent objects.
- Concrete and virtual libraries that partition classes for convenient access, storage and transfer.
- Single and multiple class inheritance as well as Nested Classes.
- Class services partitioned by specific interfaces. Method, Property, Relationship and Event object services that can be used to implement a new applications based on real or virtual objects that wrap existing M data structures.
- Variable scoping that enforces encapsulation, a fundamental requirement of object orientation.
- Use of associative arrays within the context of an object.
- Message services that permits communication between objects. These services include all public class interfaces that allow access to an object’s methods, properties and relationships.
- An event handling model that permits objects to watch for events that are fired by other objects. The event handling model is based on a built-in callback mechanism that is available to the programmer as well.
- Predefined classes such as Collections (Lists, Arrays, Set, etc.), Immutables (time and date stamps), Data Manager, etc.
- Block Transfer Objects (BTO) designed to maximize the speed of object transfer between the client and server.
- Generation of Java Proxies is supported with all communications to the EsiObjects system built in.
- The TCP/IP Bridge implements an object oriented API into the EsiObjects Runtime Module. It supports valid message protocols needed to invoke an object’s services. It provides direct, simple connectivity via ActiveX controls. The COM proxy, Java proxy and CORBA ORB communications components enable applications to run in multi-tier configurations. Additionally, the Java Gateway has been enhanced to support wireless communications.
- Several plug in packages are available as Open Source including EsiQuery (an implementation of OQL), EsiParser (an implementation of the ANTLR specification), EsiORB (an implementation of the CORBA [[Object request broker|ORB] specification) and EsiRules.