Automic VaultAutomic Vault

brew

Install h2 with Homebrew, Nix

Java SQL database. Version 2.4.240 via Homebrew; verified from local package data.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install h2

local Homebrew formula metadata

Linux

Nixverified · 92%
nix profile install nixpkgs#h2

nixpkgs package indexes · pkgs/by-name/h2/h2/package.nix · source: api.github.com

overview

Package summary

Java SQL database

Commands and aliases

  • h2

history

Project history and usage

H2 is a Java SQL database engine designed for embedded and server use through standard SQL and JDBC. Its package history matters because it became one of the default lightweight relational databases for Java development, tests, demos, local tools, and applications that need an embeddable database without running a separate server.

Project history

The official H2 history says development started in May 2004 and the database was first published on December 14, 2005. The original author, Thomas Mueller, was also the original developer of Hypersonic SQL; after he joined PointBase and discontinued Hypersonic SQL work, the HSQLDB Group continued that codebase. H2 means Hypersonic 2, but the official history emphasizes that H2 does not share code with Hypersonic SQL or HSQLDB and was built from scratch.

The project chose Java for portability, simpler integration with Java applications, Unicode support, security advantages over native code, and faster development of algorithms rather than platform-specific memory-management work. The H2 feature documentation presents the result as a fast open source database engine with JDBC API support, embedded and server modes, disk or in-memory databases, transaction support, multi-version concurrency, a browser console, encryption, full-text search, and a small jar footprint.

H2's repository and documentation structure reflect its dual role as library and tool. The README points Java users to Maven coordinates, tutorial pages, SQL command documentation, functions, data types, issue tracking, mailing-list/forum support, and Stack Overflow usage for framework integration questions.

Adoption history

H2 adoption came from Java developers who needed a relational database that could run inside the same JVM for tests, demos, desktop apps, command-line tools, and server applications. The official features page highlights embedded mode as the fastest and easiest connection mode, while also documenting server and mixed modes for multiple clients.

The README and GitHub repository show a broad open-source footprint: thousands of stars, many forks, thousands of commits, Maven dependency instructions, and documentation aimed at both SQL users and Java integrators. The supplied package facts list Homebrew and Nix packages, while the more important adoption path for Java is the Maven coordinate `com.h2database:h2` shown by the project README.

How it is used

Common H2 usage includes embedding the database in Java applications through JDBC, running in-memory databases for tests, using file-backed local databases, starting server mode for remote JDBC or ODBC-over-TCP/IP connections, using the browser-based Console, and applying compatibility modes for databases such as DB2, Derby, HSQLDB, MS SQL Server, MySQL, Oracle, and PostgreSQL.

H2 also ships command-line and operational tooling around the database engine. Package managers expose an `h2` executable in addition to the Java jar ecosystem, which is useful for local console workflows, demos, and scripted development setups.

Why package nerds care

H2 is a package-nerd staple because it collapses a database dependency into a small Java artifact. That makes test suites, examples, development servers, and teaching environments easier to package: no daemon, no external service, no local database bootstrap, and in-memory mode when persistence is unnecessary.

It also has a long tail of compatibility and security implications. Frameworks often include H2 for tests, so packagers and maintainers care about version behavior, SQL compatibility modes, file format changes, console exposure, and transitive dependency updates even when H2 is not the production database.

Timeline

  • 2004: H2 development started in May.
  • 2005: H2 was first published on December 14.
  • 2000s: H2 established itself as a from-scratch successor in spirit to Hypersonic SQL, separate from HSQLDB code.
  • 2010s: H2 became common in Java tests, embedded applications, examples, and framework development setups.
  • 2020s: The project documented a small Java footprint, embedded/server/mixed modes, compatibility modes, Maven usage, and package-manager availability.

Related projects

  • H2 is historically related to Hypersonic SQL and HSQLDB through Thomas Mueller's earlier work and the name Hypersonic 2, but the H2 codebase is separate. It is also commonly compared with Apache Derby, SQLite, HyperSQL, embedded PostgreSQL test setups, and Java frameworks that use JDBC databases in development or tests.

security posture

Risk level: orange

broad file, network, media, or database tool signal. formula declares a Homebrew service.

Risk classifier

orange risk · medium confidence · infrastructure

Why

  • broad file, network, media, or database tool signal
  • formula declares a Homebrew service

Signals

  • metadata:service
  • text:database,sql

Install behavior

  • No Homebrew post-install hook is recorded in formula metadata.
  • Formula metadata declares a service or daemon block.
  • Homebrew bottle metadata is available for 1 platform targets.
  • Installs with 1 runtime dependencies.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
h2cliglobal executable

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-07-08
manager version2.4.240
manager updated
local dataok
upstreamnot checked
latest detectednot detected

https://github.com/h2database/h2database

install metadata

Package metadata

Package keybrew:h2
Version2.4.240
Package managerHomebrew
Package manager pagehttps://formulae.brew.sh/formula/h2
Homepagehttps://www.h2database.com/
Repositoryhttps://github.com/h2database/h2database
Upstream docshttps://h2database.github.io/html/commands.html
LicenseMPL-2.0
Source archivehttps://github.com/h2database/h2database/releases/download/version-2.4.240/h2-2025-09-22.zip
Dependenciesopenjdk
Bottleavailable (on all)
Homebrew post-installnot defined
Servicedeclared

registry facts

Source database details

Source DatabaseHomebrew formula API
Taphomebrew/core
Full Nameh2
Version Scheme0
Revision0
Bottle Stable Root URLhttps://ghcr.io/v2/homebrew/core
Deprecatedno
Disabledno
Keg Onlyno
URL Keys
  • stable

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Nix95%

h2

nix profile install nixpkgs#h2
  • normalized package name match
  • Matched by: H2
nixpkgs package indexes · api.github.com · nixpkgs package indexes: pkgs/by-name/h2/h2/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Combined YAML source

View the package source record on GitHub.

combined/h2.yml

Used sources

  • Geiger risk classifier
  • Nucleus package database
  • av.db category and tag curation
  • cross-ecosystem install command graph
  • curated package history
  • external package-manager database matches
  • package relationship graph
  • package version freshness
  • package-page enrichment