Imagine a seguinte situação: você desenvolvedor, precisa criar um sistema sério, escalável, com recursos de pesquisa e indexação, o que você precisa? Sim invariavelmente um servidor de banco de dados, que é uma outra aplicação, como o Mysql e Postgresql por exemplo.
Ai você pode se perguntar, pô usa algo como JSP/JSF, acessada via web e etc e tal.
Mas digamos que você queira que seu sistema seja simples, principalmente na hora da instalação na máquina do usuário (digamos que sejam poucos usuários finais, que ela não precise ser distribuída nem acessada via web e que rode na máquina do usuário) ou seja sua aplicação será standalone/desktop. O que usar como DataBase?
Apesar de temos algumas opções com o HSQLDB, H2 (melhoria do HSQL), Derby e o JavaDB, o que gostaria de destacar aqui é o JavaDB.
O JavaDB seria a distribuição suportada pela Sun do Apache Derby. O sistema tem suporte à transações, integridade referencial, unicode, cursores, triggers e stored procedures (que são escritas em Java).
As APIs para programação suportadas são JDBC e SQL. Quanto ao tamanho, são necessários apenas 2 MB para a “database engine” e para o driver JDBC embutido (é ele que possibilita o feature de “embedded database”), sendo que ele também pode atuar como os bancos de dados tradicionais, usando a arquitetura cliente/servidor, utilizando a rede como canal de comunicação.
Além desse caso, também há uma vertente de uso juntamente com o J2ME, o framework para desenvolvimento de aplicações Java para dispositivos móveis, aproveitando que o adicional seria apenas de 2 MB e que os sistemas embarcados estão cada vez mais potentes e com crescente capacidade de armazenamento.
O JavaDB também pode ser utilizado em conjunto com os mais conhecidos servidores de aplicações, como GlassFish, Tomcat, dentre outros. Ele também já está integrado em várias IDEs, como o Netbeans e o Java Studio Enterprise. O JavaDB está integrado também ao JDK 6.