eXtremeDB Java Native Interface (JNI) delivers the fastest embedded database in Java
McObject provides a Java Native Interface (JNI) for eXtremeDB, for the fastest possible embedded database solution in Java. The JNI reduces development time and accelerates run-time performance in Java applications, outperforming relational database management systems (RDBMSs) and “pure” Java object databases, as well as object caching software in Java.
eXtremeDB is also available as a classic client/server SQL RDBMS for Java (and other languages). Learn more about eXtremeSQL.
For organizations already using Java, eXtremeDB JNI delivers the speed of compiled C/C++ for performance-intensive data sorting, storage and retrieval tasks, with the convenience of using a familiar language. As a Java in-memory database system, eXtremeDB’s breakthrough performance stems from a streamlined architecture that manages data entirely in main memory, eliminating file I/O, cache management and other overhead found in database systems that incorporate disk storage.
Figure 1. A Java application with eXtremeDB JNI benefits from native access to database functions running in compiled C.
“POJOs” and Simplified Programming
With eXtremeDB JNI, developers work with the real-time database entirely from within the Java programming language. There is no external database definition language, and no requirement to compile a database schema.
Instead, the JNI uses Java’s reflection capability to discover database classes and their fields that are defined in the application, via class definition syntax (see Figures 2 and 3). This streamlines coding, and the developer’s experience is one of working with plain old Java objects (POJOs).
Optionally, the Java class definitions can be used to generate a schema that, in turn, can be processed by McObject’s schema compiler, so that C/C++ and Java programs can use the same database.
Java Class Declarations
With eXtremeDB JNI, class definitions use “@” to indicate a database attribute.
Figure 3. eXtremeDB for HPC’s Java API uses Java reflection to discover classes, their fields and other attributes at run-time.
Java Databases & Performance
What are the database options in Java when an application calls for the highest possible responsiveness?
SQL Relational DBMSs (usually w/ JDBC driver) — RDBMSs’ biggest drawback with Java is the “impedance mismatch” that occurs when going between relational structures and SQL (a set-oriented database access language), on one end, and the object-oriented Java language, on the other. The need to “map” between object and relational technologies consumes CPU cycles and hurts performance.
All-Java Databases — Embedded object-oriented databases written in Java deliver improved performance by eliminating impedance mismatch. However, as a language that is interpreted at run-time, Java’s performance can’t compete with compiled C and C++, and this limitation binds all-Java databases.
eXtremeDB JNI — The Java Native Interface to eXtremeDB uses the Java language (Java class definitions) to define the database schema. Since it relies on the programming language’s own syntax, there is (by definition) no impedance mismatch. Database sorting, retrieval and storage take place in fast, compiled C code rather than Java.
Importantly, when using the JNI, developers can leverage the other performance-enhancing features of eXtremeDB, including its core in-memory architecture, columnar layout for time series data, vector-based statistical function library, High Availability, Clustering and more. Hybrid eXtremeDB enables the developer to combine both database paradigms – using in-memory and on-disk – in a single database instance.