v0.9 addresses bug fixes and also adds CSV import/export, the REAL data type is supported, better performance for joins, access rights for views, and invalid views (if a table is dropped).
H2 was first announced in mid-december 2005 and work has progressed steadily since. Thomas' priority for H2 is currently compatibility and performance on the low end (single user, Access, Embedded), so features such as better transaction isolation support (it currently only supports serializable) will be implemented later.
Comparison to Other Database Engines
Feature | H2 | HSQLDB | Derby | Daffodil | MySQL | PostgreSQL |
---|---|---|---|---|---|---|
Embedded Mode (Java) | Yes | Yes | Yes | Yes | No | No |
Performance (Embedded) | Fast | Fast | Slow | Slow | N/A | N/A |
Performance (Server) | Fast | Fast | Slow | Slow | Slow | Slow |
Transaction Isolation | Yes | No | Yes | Yes | Yes | Yes |
Cost Based Optimizer | Yes | No | Yes | Yes | Yes | Yes |
Clustering | Yes | No | No | No | Yes | Yes |
Encrypted Database | Yes | No | Yes | No | No | No |
Files per Database | Few | Few | Many | Few | Many | Many |
Footprint (jar/dll size) | ~ 1 MB | ~ 600 KB | ~ 2 MB | ~ 3 MB | ~ 4 MB | ~ 6 MB |
H2 has also benchmarked sigificantly faster than other open source databases, including HSQLDB:

According to Thomas, H2 may be merged back to HSQLDB at some point in the future, but not yet, which is one reason why the license is not GPL / LGPL / Apache style, although it is free and open source.
Community comments
Native vs. Java versions
by Horia Muntean,
Re: Native vs. Java versions
by Tim Vernum,
Also, locking modes
by Horia Muntean,
Re: Also, locking modes
by Floyd Marinescu,
Free and open source.
by Tim Vernum,
Embedded MySql
by Pete the Wheat,
Native vs. Java versions
by Horia Muntean,
Your message is awaiting moderation. Thank you for participating in the discussion.
It's also important to know that it is "Written Java; also available as native executable".
Any comparisons between those versions?
Also, locking modes
by Horia Muntean,
Your message is awaiting moderation. Thank you for participating in the discussion.
Read carefully the "Locking, Lock-Timeout, Deadlocks" section from www.h2database.com/html/frame.html
IMHO the table level locking for managing concurent access is quite a problem for multiple users scenarios. May be DB2 is slower but IBM uses row based locking, a policy that can give you more throughput in multiple users usecases.
Re: Also, locking modes
by Floyd Marinescu,
Your message is awaiting moderation. Thank you for participating in the discussion.
True, but as mentioned in the article, Thomas' first priority is making the DB work best "on the low end (single user, Access, Embedded)". I think this is the largest use scenario for HSQLDB and H2. Here at InfoQ we used HSQLDB on developer dev machines (single user, embedded) to simplify the environment instead of the production DB.
Free and open source.
by Tim Vernum,
Your message is awaiting moderation. Thank you for participating in the discussion.
It's free, but it's not technically open source.
(I'm not an open source zealot, but I am an accuracy zealot)
From the FAQ:
Is this Database Engine Open Source?
It is free to use and distribute, and the source code is included. But currently does not have a 'open source style license', but this will probably change soon. See also under license.
Re: Native vs. Java versions
by Tim Vernum,
Your message is awaiting moderation. Thank you for participating in the discussion.
The FAQ covers it briefly.
www.h2database.com/html/faq.html
The GCJ version is not as stable as the Java version.
Currently, the GCJ version is also slower than when using the Sun VM.
Embedded MySql
by Pete the Wheat,
Your message is awaiting moderation. Thank you for participating in the discussion.
The comparison states that MySql doesn't run in "embedded mode". I thought it did since version 5.0?