https://github.com/fizzed/tkrzw
Java 8+ distribution (along with native libs) of the Tkrzw key value embedded database
https://github.com/fizzed/tkrzw
Last synced: about 1 month ago
JSON representation
Java 8+ distribution (along with native libs) of the Tkrzw key value embedded database
- Host: GitHub
- URL: https://github.com/fizzed/tkrzw
- Owner: fizzed
- Created: 2022-12-14T17:37:35.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2025-01-21T21:45:13.000Z (4 months ago)
- Last Synced: 2025-03-27T03:51:21.489Z (about 2 months ago)
- Language: C++
- Size: 88.1 MB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
Java distribution of Tkrzw & JNI libs by Fizzed
------------------------------------------------------[](https://mvnrepository.com/artifact/com.fizzed/tkrzw)
The following Java versions and platforms are tested using GitHub workflows:
[](https://github.com/fizzed/tkrzw/actions/workflows/java8.yaml)
[](https://github.com/fizzed/tkrzw/actions/workflows/java11.yaml)
[](https://github.com/fizzed/tkrzw/actions/workflows/java17.yaml)
[](https://github.com/fizzed/tkrzw/actions/workflows/java21.yaml)[](https://github.com/fizzed/tkrzw/actions/workflows/java11.yaml)
[](https://github.com/fizzed/tkrzw/actions/workflows/macos-arm64.yaml)
[](https://github.com/fizzed/tkrzw/actions/workflows/windows-x64.yaml)The following platforms are tested using the [Fizzed, Inc.](http://fizzed.com) build system:
[](buildx-results.txt)
[](buildx-results.txt)
[](buildx-results.txt)
[](buildx-results.txt)
[](buildx-results.txt)
[](buildx-results.txt)
[](buildx-results.txt)
[](buildx-results.txt)## Overview
This is a published version of the [Tkrzw library](https://dbmx.net/tkrzw/) for Java 8+, along with native libs that are
automatically extracted at runtime.The Java library is as unmodified as possible from the original Tkrzw, but a few changes were made to automatically
extract the library at runtime, along with much improved double locking to prevent the library from being loaded multiple
times.Linux x64 native libs are compiled on Ubuntu 18.04, so you can be assured they'll work well on various flavors of linux
going back several years in time.## Sponsorship & Support

Project by [Fizzed, Inc.](http://fizzed.com) (Follow on Twitter: [@fizzed_inc](http://twitter.com/fizzed_inc))
**Developing and maintaining opensource projects requires significant time.** If you find this project useful or need
commercial support, we'd love to chat. Drop us an email at [[email protected]](mailto:[email protected])Project sponsors may include the following benefits:
- Priority support (outside of Github)
- Feature development & roadmap
- Priority bug fixes
- Privately hosted continuous integration tests for their unique edge or use cases## Usage
Add the following to your maven POM file for Linux x64
```xml
com.fizzed
tkrzw-linux-x64
0.0.9```
Or MacOS arm64 (Apple silicon)
```xml
com.fizzed
tkrzw-macos-arm64
0.0.9```
Or for all operating system & arches
```xml
com.fizzed
tkrzw-all-natives
0.0.9```
To simplify versions, you may optionally want to import our BOM (bill of materials)
```xml
com.fizzed
tkrzw-bom
0.0.9
import
pom
```
In your java code you can use the Tkrzw api as documented [here](https://dbmx.net/tkrzw/api-java/)
## Native Libs
zlib is enabled, zstd/lzma/lz4 are not enabled since those dependencies are not very common in many environments and
would prevent the library from loading in Java.Zip libraries must be installed for this version to run. You must also install libstdc++.
sudo apt install zlib1g # e.g. on ubuntu/debian
sudo apk add zlib # e.g. on alpine| OS Arch | Artifact | Info |
|------------------|------------------------|-----------------------------------|
| Linux x64 | tkrzw-linux-x64 | built on ubuntu 18.04, glibc 2.27 |
| Linux arm64 | tkrzw-linux-arm64 | built on ubuntu 18.04, glibc 2.27 |
| Linux armhf | tkrzw-linux-armhf | built on ubuntu 18.04, glibc 2.27 |
| Linux armel | tkrzw-linux-armel | built on ubuntu 18.04, glibc 2.27 |
| Linux MUSL x64 | tkrzw-linux_musl-x64 | built on alpine 3.11 |
| Linux MUSL arm64 | tkrzw-linux_musl-arm64 | built on alpine 3.11 |
| Linux riscv64 | tkrzw-linux-riscv64 | built on ubuntu 20.04, glibc 2.31 |
| MacOS x64 | tkrzw-macos-x64 | built on macos 10.13 high sierra |
| MacOS arm64 | tkrzw-macos-arm64 | built on macos 12 monterey |
| Windows x64 | tkrzw-windows-x64 | targets win 7+ |
| Windows arm64 | tkrzw-windows-arm64 | tested on win 10+ |
| FreeBSD x64 | tkrzw-freebsd-x64 | targets freebsd 12+ |
| OpenBSD x64 | tkrzw-openbsd-x64 | targets openbsd 7.6+ |## Development
We use a simple, yet quite sophisticated build system for fast, local builds across operating system and architectures.
To build and test locally, you can leverage our [Blaze](https://github.com/fizzed/blaze) build systemjava -jar blaze.jar build_natives
java -jar blaze.jar testFor cross compiling and testing, we leverage [Buildx](https://github.com/fizzed/buildx) as a plugin to our Blaze script.
For linux targets, we leverage docker containers either running locally on an x86_64 host, or remotely on dedicated
build machines running on arm64, macos x64, and macos arm64. To build containers, you'll want to edit .blaze/blaze.java
and comment out/edit which platforms you'd like to build for, or potentially change them running on a remote machine
via SSH. Once you're happy with what you want to build for:java -jar blaze.jar cross_build_containers
Or
java -jar blaze.jar cross_build_containers --targets linux-x64
Then
java -jar blaze.jar cross_build_natives --targets linux-x64
java -jar blaze.jar cross_tests --targets linux-x64For information on registering your x86_64 host to run other architectures (e.g. riscv64 or aarch64), please see
the readme for https://github.com/fizzed/buildx## License
Copyright (C) 2020+ Fizzed, Inc.
This work is licensed under the Apache License, Version 2.0. See LICENSE for details.