diff --git a/guide/clients.md b/guide/clients.md
index e59a2c8..6384513 100644
--- a/guide/clients.md
+++ b/guide/clients.md
@@ -3,6 +3,7 @@ To use LonaDB for your own project, you need to use one of the clients.
[PHP](https://docs.lona-development.org/guide/php.html)
[JavaScript](https://docs.lona-development.org/guide/javascript.html)
+[Java](https://docs.lona-development.org/guide/java.html)
[Python](https://docs.lona-development.org/guide/python.html)
We are interested in making LonaDB available in more languages but we are a small team of 4 developers.
diff --git a/guide/java.md b/guide/java.md
new file mode 100644
index 0000000..56ce0f8
--- /dev/null
+++ b/guide/java.md
@@ -0,0 +1,82 @@
+## Installation
+
+You can use the LonaDB Java Client by adding it as a dependency in your Maven project. Follow these steps to include LonaDB in your project:
+
+1. Add the GitHub Packages repository to your `pom.xml` file:
+
+```xml
+
+
+ github
+ GitHub Packages
+ https://maven.pkg.github.com/LonaDB/Clients
+
+
+```
+
+2. Add the LonaDB dependency to your `pom.xml` file:
+
+```xml
+
+
+ org.lona-development.java-client
+ lonadb
+ 2.1.3
+
+
+```
+
+## Usage
+
+To use the `LonaDB` Java Client, follow these steps:
+
+1. Import the `LonaDB` class in your Java file:
+
+```java
+import org.lona_development.java_client.lonadb;
+```
+
+2. Create an instance of the `lonadb` class by providing the required connection details:
+
+```java
+lonadb client = new lonadb(host, port, name, password);
+```
+
+Replace `host`, `port`, `name`, and `password` with the appropriate values for your LonaDB Server.
+
+3. Use the provided methods to interact with the server:
+
+```java
+// Example: Get a list of tables
+String tables = client.getTables("username");
+
+// Display the list of tables
+System.out.println(tables);
+```
+
+## Available Methods
+
+The following methods are available in the `LonaDB` Java Client:
+
+- `getTables(username)`: Retrieves a list of tables available in the database.
+- `getTableData(table)`: Retrieves data from a specified table.
+- `deleteTable(name)`: Deletes a table by its name.
+- `createTable(name)`: Creates a new table with the given name.
+- `set(table, name, value)`: Sets a variable within a table to the specified value.
+- `delete(table, name)`: Deletes a variable from a table.
+- `get(table, name)`: Retrieves the value of a variable from a table.
+- `getUsers()`: Retrieves a list of users in the database.
+- `createUser(name, password)`: Creates a new user with the given name and password.
+- `deleteUser(name)`: Deletes a user by their name.
+- `checkPassword(name, password)`: Checks if the provided password is correct for a given user.
+- `checkPermission(user, permission)`: Checks if a user has a specific permission.
+- `removePermission(user, permission)`: Removes a permission from a user.
+- `getPermissionsRaw(name)`: Retrieves the raw permission data for a user.
+- `addPermission(user, permission)`: Adds a permission to a user.
+- `createFunction(name, content)`: Create a function which can be executed whenever you want. Just like eval. Content = string of Java code.
+- `executeFunction(name)`: Executes the function.
+- `eval(function)`: Runs the function (must be a string of Java code).
+
+## License
+
+This project is licensed under the GNU Affero General Public License version 3 (GNU AGPL-3.0).
\ No newline at end of file