My application at present uses Microsoft Access, but now may be hosted on Linux boxes. Additionally while being accessed from multiple computers, one of these may update the records (when its being read by other users).
I also require that the embedded database should support complex SQL queries - like inner SQL, Joins, etc.
I tried SQLite, but many of the existing queries fail, or need to be fixed (like in a simple query using inner join the brackets after FROM was not acceptable to SQLite, and had to be removed). Right join too is not supported.
I came to know about Apache Derby and H2, but would first prefer your valuable opinion.
Edit:
I forgot to mention that my application is entirely written in Java.
Edit:
At preset I use Microsoft Access mdb, shared on network drive, making DSN-less connection from remote computers.
Update
I did trials with Firebird, and it really does seem very good, zero admin, and SQL compliant. It is fast, and I had no problems in any of the typical queries I could try on it. I am very satisfied with it, and hopefully will use it for the project for which I raised this question.
Hopefully Advantage Server too will be good, but could not get time to review it. After reviewing/using Firebird do not feel any need to try anything else.