100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Database

Derby (Apache)

IntermediateTool3.8K learners

Apache Derby is an open-source, pure-Java relational database management system that can be embedded directly inside an application or run as a network server, historically bundled with the Java Development Kit as Java DB.

Definition

Apache Derby is an open-source, pure-Java relational database management system that can be embedded directly inside an application or run as a network server, historically bundled with the Java Development Kit as Java DB.

Overview

Derby is a fully SQL-compliant, transactional database engine implemented entirely in Java, which lets it run inside the same process as an application with no native binaries or external installation. It was donated to the Apache Software Foundation by IBM and later shipped by Sun/Oracle under the name Java DB as part of certain JDK distributions, giving it a long history inside the Java ecosystem. Like other embeddable databases, Derby supports both an embedded driver, where the database lives inside the application's JVM, and a network server mode, where it accepts JDBC connections over the network from multiple clients. It provides standard relational features including transactions, referential integrity, stored procedures, and triggers, making it capable of serving as a lightweight production database for small applications, not just a testing tool. In practice, Derby has been largely overshadowed by alternatives such as H2 Database and SQLite, which are perceived as faster and simpler for many development workflows, but Derby remains in use in legacy Java applications and in some Apache projects that adopted it as a default embedded store.

Key Features

  • Pure-Java implementation with no native dependencies
  • Embedded and client-server (network) operating modes
  • Full ACID transaction support
  • Standard JDBC driver for application connectivity
  • Small footprint suitable for bundling with applications
  • Support for stored procedures, triggers, and views

Use Cases

Embedded storage for Java desktop applications
Legacy enterprise Java applications built around Java DB
Lightweight database for small internal tools
Testing and prototyping SQL schemas within a JVM process
Bundled persistence layer for Apache projects that require a Java-native store

Frequently Asked Questions