Apache Derby 10.17.1.0 介绍与选型指南
介绍 Apache Derby 10.17.1.0:纯 Java 嵌入式关系数据库的运行模式、架构与功能特性、官方快速上手示例,说明 2025-10-10 项目退役状态,量化对比 H2、HSQLDB、SQLite 并给出选型建议。
Apache Derby 10.17.1.0 介绍与选型指南
本文为 A1 认知篇(软件介绍与选型指南),全部信息来自官方公开资料溯源(官网、官方文档、官方代码仓库发行记录、发行目录与 Maven Central 元数据),不含本地安装与实测数据。文末附官方来源清单。
一、信息基准
1.1 查询基准
- 查询日期:2026-10-18。
- 版本依据:Apache Derby 10.17.1.0,为查询时点官方最新稳定版,也是项目退役前的最终版本。官方下载页标注该版本发布日期为 2023-11-10(官网新闻栏公告日为 2023-11-14);Maven Central
org.apache.derby:derby的latest/release元数据同为 10.17.1.0,两处相互印证。 - 项目状态(重要):据官网首页 2026-10-18 实查,Derby 开发者已于 2025-10-10 投票将项目退役为只读状态——开发与缺陷修复已终止,不再发布新版本,官网与 Wiki 冻结,JIRA 只读,用户与开发者邮件列表停用(仅存档可访问)。
- 许可:Apache License 2.0(官网载明)。
1.2 官方来源清单
| 来源 | 说明 | 链接 |
|---|---|---|
| 官网 | 项目主页(含退役声明与特性描述) | https://db.apache.org/derby/ |
| 官方下载页 | 版本列表与发布日期标注 | https://db.apache.org/derby/derby_downloads.html |
| 官方文档(10.17) | 权威使用文档 | https://db.apache.org/derby/docs/10.17/ |
| 官方入门指南 | Getting Started Guide | https://db.apache.org/derby/docs/10.17/getstart/ |
| 官方教程 | Apache Derby Tutorial(ij 示例出处) | https://db.apache.org/derby/papers/DerbyTut/ij_intro.html |
| Maven Central | 版本元数据交叉核验 | https://repo1.maven.org/maven2/org/apache/derby/derby/maven-metadata.xml |
| 发行目录 | ASF 发行归档 | https://downloads.apache.org/db/derby/ |
二、软件概述
Apache Derby 10.17.1.0(查询时点 2026-10-18 的官方最新稳定版,亦为退役前最终版本)是一款完全用 Java 实现的开源关系数据库,由 Apache DB 子项目管理,以 Apache License 2.0 发行。官网对其定位的表述是:基于 Java、JDBC 与 SQL 标准构建,基础引擎加嵌入式 JDBC 驱动的体积约为 3.5 MB,随 Java 应用内嵌部署;同时提供更常见的客户端/服务器运行模式(Derby Network Client JDBC 驱动 + Derby Network Server),安装、部署与使用都很简单。
需要特别强调的是项目状态:2025-10-10 项目开发者投票退役,Derby 进入只读状态,不再有后续版本与缺陷修复。本文以此前长期使用的 10.17.1.0 为信息基准撰写,供存量资产评估与选型参考;对新项目,选型结论见第七章。
三、核心架构
3.1 两种运行模式
- 嵌入式模式:应用进程通过嵌入式 JDBC 驱动(
org.apache.derby.jdbc.EmbeddedDriver)直接加载数据库引擎,数据库随应用启动与关闭,无独立服务进程;同一时刻同一数据库默认由一个 JVM 独占打开。 - 客户端/服务器模式:由 Derby Network Server 监听网络端口(默认 1527),多个客户端经 Derby Network Client JDBC 驱动(
org.apache.derby.jdbc.ClientDriver)以jdbc:derby://host:1527/dbName形式访问;Network Server 本身仍构建在嵌入式引擎之上。
3.2 数据组织与持久化
- 一个数据库对应文件系统中的一个目录,表、索引与系统目录均存放于该目录内;连接 URL 中
create=true属性可在首次连接时自动创建数据库。 - 内部包含数据段、事务日志与检查点机制,通过日志先行保证事务持久性,支持在线备份(backup)操作。
- 数据库内建系统目录(system catalog),以系统表形式暴露模式元数据,可用普通 SQL 查询。
3.3 SQL 与 JDBC 实现
- 10.17.1.0 支持 JDBC 4.3,官方下载页标注该版本运行环境为 Java 21 及以上(上一版 10.16.1.1 对应 Java 17 及以上)。
- SQL 实现为标准子集:支持事务(多级隔离级别)、主外键约束、唯一性约束、检查约束、视图、触发器、序列、递归查询等,具体能力边界以 10.17 官方参考手册为准。
- 存储过程与函数可用 Java 编写并直接挂载到数据库内执行,是纯 Java 数据库的差异化能力。
3.4 随附工具
官方发行包附带一组工具类:ij(交互式 SQL 脚本工具)、sysinfo(环境与版本信息)、dblook(DDL 导出)、NetworkServerControl(Network Server 启停管理),均以 Java 类或 derbyrun.jar 入口提供。
四、功能特性
4.1 零管理嵌入式部署
无需安装独立服务,引擎随 JVM 加载;首次连接自动建库、自动执行启动恢复,适合随应用分发的自带存储。基础引擎加嵌入式驱动约 3.5 MB 的体积(官网口径)显著低于常见独立数据库。
4.2 事务与数据完整性
完整 ACID 事务支持,提供读未提交/读已提交/可重复读/串行化隔离级别,崩溃后自动回滚恢复;日志与检查点机制保证持久化。
4.3 安全能力
支持数据库级加密(对磁盘上的数据加密)、用户认证(内置或外接 LDAP/JNDI 等方式)与 SQL 授权;能力边界以官方安全指南为准。
4.4 Java 生态整合
- 存储过程、函数与触发器逻辑可直接用 Java 编写;
- 支持 JPA/JDO 等 ORM 框架接入(官方 Quick Start 列举了 Eclipse、NetBeans 等 IDE 与 iBATIS、JPOX JDO 等映射工具的历史集成条目);
- 数据库可与应用打包为同一交付单元,简化部署。
4.5 可诊断性
提供运行时诊断表、错误日志与 sysinfo 环境报告,便于定位运行问题;官方文档含 Tuning 与 Troubleshooting 指南。
五、快速上手
以下操作引自官方教程 Apache Derby Tutorial(ij 章节,未做本地实测)。配置类路径后启动 ij:
java org.apache.derby.tools.ij
创建并连接数据库(create=true 属性触发自动建库),随后执行 SQL:
ij> CONNECT 'jdbc:derby:MyDbTest;create=true';
ij> CREATE TABLE menu (item VARCHAR(32), price INT);
ij> INSERT INTO menu VALUES ('rice', 3);
ij> SELECT * FROM menu;
客户端/服务器模式:先启动 Network Server(官方文档命令),再以网络 URL 连接:
java org.apache.derby.drda.NetworkServerControl start
CONNECT 'jdbc:derby://localhost:1527/MyDbTest';
官方入门文档:Getting Started Guide(https://db.apache.org/derby/docs/10.17/getstart/ )与 Derby Tutorial(https://db.apache.org/derby/papers/DerbyTut/ij_intro.html )。
六、适用场景与限制
6.1 适用场景
- Java 桌面端/单机应用自带存储:随应用分发、零安装、纯 Java 无外部依赖。
- 单元测试与演示:用真实 SQL 数据库替换内存桩,测试后直接删除数据库目录。
- 小型工具与批处理程序:数据量与并发都很小的本地持久化需求。
- 存量系统维护:历史上大量 Java 商业与内部系统内嵌 Derby,10.17.1.0 为这些资产的最终基线。
6.2 限制与注意事项
- 项目已退役:2025-10-10 起只读,无新版本、无缺陷修复、无安全补丁通道,这是当前最大的选型约束。
- 无内置多机高可用:嵌入式模式单 JVM 独占,客户端/服务器模式亦无官方集群与自动故障转移能力。
- 不适合高并发大规模在线事务处理:定位为嵌入式轻量数据库,写入吞吐与连接规模无法与独立服务型数据库相比。
- 依赖 JVM:运行环境必须为 Java 21 及以上(10.17.1.0),非 Java 技术栈无法使用。
- 历史发版节奏慢:10.14 至 10.17 间隔约 1.5-2 年,退役后节奏终止。
七、同类选型对比
7.1 对比对象与版本基准
同为「轻量/嵌入式关系数据库」定位的三个对比对象:H2(纯 Java 嵌入式)、HSQLDB(纯 Java 嵌入式,Derby 的历史同源项目 HyperSQL)、SQLite(C 实现的单文件嵌入式)。版本基准(2026-10-18 查询):Derby 10.17.1.0(2023-11-10,已退役);H2 2.5.252(官方仓库 releases 记录 2026-09-24);HSQLDB 以官网与仓库现行版本为准(GitHub 同步副本无发行记录,官方未公布节奏);SQLite 3.54.1(官网下载页实查)。
7.2 量化对比
| 维度 | Derby 10.17.1.0 | H2 2.5.252 | HSQLDB | SQLite 3.54.1 |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | MPL-2.0 或 EPL-1.0 双许可(官方 LICENSE.txt 载明) | BSD 系许可(官方仓库载明) | Public Domain |
| 最近发版 / stars(2026-10-18) | 2023-11-10(最终版);379(apache/derby) | 2026-09-24;4,637(h2database/h2database) | 官方未公布(GitHub 同步副本 stars 为 0,无 release 记录) | 官网未公布 stars 口径(主仓库不在 GitHub) |
| 版本节奏 | 退役前约 1.5-2 年一版,现已终止 | 持续维护,2.5.x 常规更新 | 官方未公布 | 高频小幅迭代,年度多版 |
| 兼容矩阵 | Java 21+(10.17),跨 JVM 平台 | Java,跨平台;提供 MySQL/PostgreSQL 等兼容模式 | Java,跨平台 | C 编译,单文件库;语言绑定覆盖最广 |
| 定位能力 | 纯 Java 嵌入式,JDBC 4.3,Java 存储过程,数据库加密 | 纯 Java 嵌入式+服务器模式,内存库,测试场景事实标准 | 纯 Java 嵌入式+服务器模式,HyperSQL 品牌 | 单文件嵌入式引擎,非 C/S,离线分析查询能力逐步增强 |
(数据来源:各项目官网、官方仓库 LICENSE 与 releases feed、Maven Central 元数据,均为 2026-10-18 查询。)
7.3 选型建议
一句话建议:Derby 已退役,不建议新项目采用——新的 Java 嵌入式需求优先选 H2(活跃、兼容模式丰富),跨语言或极致轻量场景选 SQLite;存量 Derby 应用可维持 10.17.1.0 基线运行,但应尽早规划向 H2/PostgreSQL 等活跃项目的迁移路径。
八、参考链接
- 官网(含退役声明):https://db.apache.org/derby/
- 官方下载页(版本与日期标注):https://db.apache.org/derby/derby_downloads.html
- 官方文档 10.17:https://db.apache.org/derby/docs/10.17/
- Getting Started Guide:https://db.apache.org/derby/docs/10.17/getstart/
- Derby Tutorial(ij 示例):https://db.apache.org/derby/papers/DerbyTut/ij_intro.html
- Maven Central 版本元数据:https://repo1.maven.org/maven2/org/apache/derby/derby/maven-metadata.xml
- ASF 发行目录:https://downloads.apache.org/db/derby/
- H2 官网与仓库:https://h2database.com/ ;https://github.com/h2database/h2database
- HSQLDB 官网与仓库:http://hsqldb.org/ ;https://github.com/hsqldb/hsqldb
- SQLite 官网下载页:https://www.sqlite.org/download.html