Skip to content

Technology stack

Sheikah45 edited this page Sep 26, 2021 · 19 revisions

Java 15

The language level used is Java 15. We always use newest syntax and API. See lambda functions and method references. Also the stream API is commonly used.

Spring Framework

The application is based on the Spring Framework, this primarily includes:

  • Configuration using @Configuration (creating objects (services etc.))
  • Dependency injection using @Inject for injection into the constructor(accessing objects (services etc.))
  • Caching using @Cacheable

See the docs

JavaFX 15

As an UI framework, we use JavaFX 15. UIs are defined in FXML files. To edit them with a GUI based setup, get SceneBuilder

Mapstruct

To convert data transfer objects from the server we use mapstruct which auto generates code to convert fields between objects

_See the docs

Reactor

Communications with the api and server utilize the Reactor API which is a non-blocking based API framework

_See the docs

FAF Java Commons

For general code that is not necessarily client specific we have a separate repository that this development is done in so it can be used by other repos

Faf Java Commons

Gradle

We use Gradle as a build automation system. This includes dependency resolution.

JUnit, Hamcrest & Mockito

For unit testing, JUnit 5 is used. Hamcrest is used for assertions, for mocking we use Mockito.

IDE

For development most of the client maintainers utilize Intellij IDEA The Community Version can be used for all development on the client

get Intellij IDEA

SLF4J with Logback

SLF4J is a logging framework abstraction. As a logging framework, we use Logback. SLF4J