Open Source Java Databases

There are several OpenSource RelationalDatabases implemented in Java:

An OpenSource RelationalDatabase that implements TutorialDee rather than SQL:

There are several non-OpenSource Java databases as well: There are non-relational OpenSource Java databases as well, notably:


Do you mean DBMS written in Java, or for Java?

All of the above are written in, and primarily for, Java.

Why would anybody want a database that only one language can effectively use? Most shops at medium to large companies use multiple languages, and data tends to outlive languages. Do you truly think that Java is the pinnacle of languages?

You might adopt a database only one language can readily use when a) a lower overhead implementation yields a significant boost in performance, and b) the external interface to the data is not meant to be at the database level (as in the case of a web service). Not always the right choice, but when the difference is big enough, worth serious consideration.

If one did, he'd probably just use a serialized objects approach (like ThePrevayler) rather than a SQL-based RDBMS. These are relational databases that run within a Java VM, and primarily expose SQL over JDBC. I don't think anyone believes these databases fulfill the same role as, say, Oracle. (But thanks to JDBC, an application developed for or with an open source java database can typically be ported to an enterprise class database with little (or if you do it right, no) modification.)

Other languages can use Java databases through various 'bridges' to JDBC. Secondly there are times when the benefits of a database that is in-process/embedded (single-user applications that require no installation, read-only databases like EncyclopaediaBritannica on DVD, unit-testing, etc) outweigh the disadvantages. SqlLite? or Sleepy Cat Software's Bddb both offer the same functionality for other languages.


I've complete the bulk of the work on a new implementation of the relational model, all of the fundamental operations of which are implemented (at least, according to my possibly/likely incomplete understanding of them). It's currently exclusively in memory, I doubt it performs great (although it does basic indexing automatically according to use), and I'm not sure about a couple corner cases (i.e., adding a tuple to the product of two tables might not be quite right, although it works out correctly on a cartesian join).

Give me a shout if you want the source. -WilliamUnderwood


Databases, or at least schemas, tend to outlive languages. Why would you want to marry your data to Java? Plus, it may limit connectivity to other tools and languages that may be used in conjunction to Java. That's one of the selling points of DB's.

This is answered above. I doubt any sensible IT manager would implement an enterprise-wide database on a Java-specific (or any language-specific) DBMS. However, there are circumstances -- as noted above -- where a language-specific DBMS is acceptable.


Here is another list of Open Source Java Databases: http://java-source.net/Wiki.jsp?page=JavaOpenSourceDatabases (BrokenLink 20080509)


EditText of this page (last edited May 9, 2008) or FindPage with title or text search