1<img alt="FoundationDB logo" src="documentation/FDB_logo.png?raw=true" width="400"> 2 3FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as an ordered key-value store and employs ACID transactions for all operations. It is especially well-suited for read/write workloads but also has excellent performance for write-intensive workloads. Users interact with the database using API language binding. 4 5To learn more about FoundationDB, visit [foundationdb.org](https://www.foundationdb.org/) 6 7## FoundationDB Java Bindings 8 9In order to build the java bindings, 10[JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html) >= 8 11has to be installed. CMake will try to find a JDK installation, if it can find 12one it will automatically build the java bindings. 13 14If you have Java installed but cmake fails to find them, set the 15`JAVA_HOME`environment variable. 16 17### Fat Jar 18 19By default, the generated jar file will depend on an installed libfdb_java 20(provided with the generated RPM/DEB file on Linux). However, users usually find 21a Jar-file that contains this library more convenient. This is also what you 22will get if you download the jar file from Maven. 23 24This file can be generated by compiling the `packages` target. For example with 25make, you can run: 26 27``` shell 28make packages 29``` 30 31#### Multi-Platform Jar-File 32 33If you want to create a jar file that can run on more than one supported 34architecture (the offical one supports MacOS, Linux, and Windows), you can do 35that by executing the following steps: 36 371. Create a directory called `lib` somewhere on your file system. 381. Create a subdirectory for each *additional* platform you want to support 39 (`windows` for windows, `osx` for MacOS, and `linux` for Linux). 401. Under each of those create a subdirectory with the name of the architecture 41 (currently only `amd64` is supported - on MacOS this has to be called 42 `x86_64` - `amd64` on all others). 431. Set the cmake variable `FAT_JAR_BINARIES` to this `lib` directory. For 44 example, if you created this directory structure under `/foo/bar`, the 45 corresponding cmake command would be: 46 47``` 48cmake -DFAT_JAR_BINARIES=/foo/bar/lib <PATH_TO_FDB_SOURCE> 49``` 50 51After executing building the packages (with `make packages` or the packages 52target in `Visual Studio`) you will find a jar-file in the `packages` 53directory in your build directory. 54