# Matter Controller Kotlin App Example
This is a Matter Controller Kotlin app that can be used to commission and
control Matter accessory devices.
- [Matter Controller Kotlin App Example](#matter-controller-kotlin-app-example)
- [Requirements for building](#requirements-for-building)
- [Preparing for build](#preparing-for-build)
- [Building & Running the app](#building--running-the-app)
## Requirements for building
You need to have the following two software installed on your Ubuntu system:
1. Java Runtime Environment (JRE)
2. Java Development Kit (JDK)
openjdk version "11.0.20.1" or above is needed
First, check if we have the Java Runtime Environment and Java Development Kit
installed on our system or not.
```shell
java -version
```
If not, you can install the Java Runtime Environment and Java Development Kit on
your system through the following command as root:
```
sudo apt install default-jre
sudo apt install default-jdk
```
You also need to install kotlin compiler on your Ubuntu system:
kotlin compiler version 1.8.10 or above is needed to compile
kotlin-matter-controller, if you already have lower version kotlin compiler
installed on your Ubuntu from apt,
you need to remove the Kotlin compiler package, run the following command:
```shell
sudo apt-get remove kotlin
```
Wait for the removal process to complete. Once it's done, the Kotlin compiler
will be removed from your system.
(Optional) If you want to remove any configuration files associated with Kotlin,
run the following command:
```shell
sudo apt-get purge kotlin
```
Install kotlin compiler 1.8.10 or above, such as
[kotlin-compiler-1.8.10-url](https://github.com/JetBrains/kotlin/releases/download/v1.8.10/kotlin-compiler-1.8.10.zip)
```shell
cd /usr/lib \
&& sudo wget -q [kotlin-compiler-1.8.10-url] \
&& sudo unzip kotlin-compiler-*.zip \
&& sudo rm kotlin-compiler-*.zip \
&& sudo rm -f kotlinc/bin/*.bat
```
Add a directory to PATH permanently by editing the `.bashrc` file located in the
Home directory. Follow these steps:
1. Open the `.bashrc` file using a text editor.
2. Go to the end of the file.
3. Paste the export syntax at the end of the file.
```shell
export PATH="/usr/lib/kotlinc/bin:$PATH"
```
### Linux
```shell
export JAVA_PATH=[JDK path]
```
## Preparing for build
Complete the following steps to prepare the Matter build:
1. Check out the Matter repository.
2. Run bootstrap (**only required first time**)
```shell
source scripts/bootstrap.sh
```
## Building & Running the app
This is the simplest option. In the command line, run the following command from
the top Matter directory:
```shell
./scripts/build/build_examples.py --target linux-x64-kotlin-matter-controller build
```
The Java executable file `kotlin-matter-controller` will be generated at
`out/linux-x64-kotlin-matter-controller/bin/`
Run the kotlin-matter-controller
```shell
java -Djava.library.path=../lib/jni -jar kotlin-matter-controller
```