Skip to content

Application Design

Michel Jung edited this page Jan 27, 2016 · 25 revisions

Technology stack

Java 8

The language level used is Java 8. We always use newest syntax and API.

Spring Framework

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

  • Configuration using @Configuration
  • Dependency injection using @Resource
  • Caching using @Cacheable

JavaFX 8

As an UI framework, we use JavaFX 8. Due to lack of quality and compatibility, we do not use ControlsFX. UIs are defined in FXML files. To edit them, get SceneBuilder.

Gradle

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

JUnit, Hamcrest & Mockito

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

IntelliJ IDEA

The best Java IDE ever.

SLF4J with Logback

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

General architecture

Overview of Downlord's FAF Client's architecture

Java packages

Packages are divided by feature, not layer

There's still a bit a package mess, especially the package com.faforever.client.legacy, this will be cleaned up as we work.

Clone this wiki locally