I was happily working with HSQLDB by just having my DB URL like this:
jdbc:hsqldb:file:target/testdb;
...and having everything like if I was on any other network database. Then suddenly one requirement punched me direct in the head, I need another JVM instance (in the same machine) to connect to the database to generate some reports.
I've read about Derby and Berkeley DB but it seems I'd need to set up some env vars and my customer asked me for programming this system without any special configuration (no env vars should be created).
I thought about having an independent thread to start HSQL in server mode in parallel but I'd rather like to use another DB engine which be as simple as HSQLDB but with file-mode concurrent access support. Hope you guys know about a straight forward alternative for solving my problem
SQLite might be a good option. See this SO question.
However, I think running HSQL in server mode is probably the easiest option. I used it that way years ago and found it robust enough for basic concurrent access, and you will only need to change your url in your existing code.