First I think you should consider if you need to use a database at all. If you don't need transaction handling, indexing, query language etc. storing objects in files might be a good solution. If you are creating a client/server application and your data objects fits in memory you should consider a solution like Prevayler (www.prevayler.org
) which is very easy to use.
This is the old debate: are databases for general storage and retrieval of data? (hint: in the end, those that said "yes" won the majority verdict by a huge margin).
I would suggest you never ever turn down a database if you could conceivably use one; you will benefit many times over in terms of how quickly you can write your code, how easy it is to maintain, etc.
OK, so the most *famous* DB's you hear of these days are:
3 of which are a PITA to install and setup and sometiems hard to justify the hassle for 20 users, let alone for just a single non-networked app for one person. The fourth is pretty trivial - assuming you have windows and Office.
But...you should use databases wherever you can, really. They're like java.util.*, only much better
. Thankfully, Java has JDBC which lets you write your code independent of the actual database you use, and then you can try out several of the "local machine only" DB's. Someone mentioned one above, but there are many more available (have a look on sourceforge.net for a start for free ones?).
Sadly, though, most of the famous ones are only compatible with each other for the most common commands, and they each rename all the other commands to words they like better (stupid evil bastards) than the ones their competitors use for no good reason. So you have to limit yourself in some ways if you want trivial portability. Although if you're considering not using a database, your needs are probably straightforward enough that you can use the common subset for everything anyway (it will only become a problem when you start to say "Hey, this is cool...what else can I do with it?")
EDIT: I forgot to say my most important point: just because the "big four" require lots of setup, many megabyte downloads, etc doesn't matter - the many other DB's around are often just tens or hundres of Kb, and many do things like implement as lots of files in the local directory - perhaps even with no networking at all - but they give you all the benefits of a DB-style API to work to.