ObjectDB is a compact Object Database Management System (ODBMS), written entirely in Java, and compliant with the new Java Data Objects (JDO) standard developed by Sun (JSR12). ObjectDB is designed to handle efficiently databases of various sizes, ranged from a few KBs to hundreds of GBs. Among its features are small footprint, and flexible architecture (1-Tier, 2-Tier or N-Tier).
ObjectDB can operate in two modes: embedded mode and client-server mode. In client-server mode, ObjectDB server is running in a separate JVM (in a separate process). The application running from a different JVM, communicates with the ObjectDB server using TCP/IP. Since the server manages automatic lock mechanism, many client processes (running on the same machine or on different machines) may access the database simultaneously safely.
In embedded mode the application uses ObjectDB as a class library, so no server process in another JVM is needed. The database file is accessed directly by the application's process, using ObjectDB JAR file which is added to the applications's classpath. In this mode the database file is locked for a single process, and multi user support may be achieved only by multithreading (several threads) in a single process.