/indoqa-boot

Bootstrap your project based on Javaspark, Spring, Jackson and Log4j2

Primary LanguageJavaApache License 2.0Apache-2.0

Indoqa Boot

Javadocs

Getting started

The best way to bootstrap an Indoqa-Boot application is using the indoqa-quickstart-boot Maven archetype:

mvn archetype:generate \
  -DarchetypeGroupId=com.indoqa.quickstart \
  -DarchetypeArtifactId=quickstart-boot-archetype \
  -DarchetypeVersion=0.15.0

Changelog

Learn about the lastest improvements

Motivation and history

In 2015 Indoqa started to look for alternatives to traditional Java web application frameworks like JSF, Apache Wicket or Vaadin. During this journey we decided to give up Java for building web frontends and switch to Javascript. This had brought us to the question how we wanted to implement the Backend for Frontend (BFF). One alternative would have been to use node.js for the BFF implementation but in our opinion the Java platform is still years ahead in terms of stability and available libraries and tools for the development of server side applications.

The first obvious choice would have been using Spring Boot but we were overwhelmed with annotations and the learning curve. We only needed a simple framework to provide RESTful resources and a JSON transformer. We came across Javaspark and were immediately intrigued by its simplicity. The integration with Jackson was quickly done and this was the basis for the first internal release of Indoqa Boot. The third ingredient was the Spring Framework, which we use as dependency injection framework since its alpha days and helps us to structure our code.

Goals

  • Build on stable and widely adopted open source software with active communities

  • Simple project setup, cover HTTP endpoints, JSON, dependency injection and logging

  • Seamless integration of React/Redux single page applications based on @indoqa/react-app and Create-React-App.

  • Reduce the usage of annotations to a minimum. We are not strictly against annotations (we use them e.g. for the mapping of Java objects to JSON) but for the most other use cases (e.g. configuration of Indoqa-Boot, creation of HTTP endpoints) we prefer to write plain Java code.

  • Support of web service HTTP proxies

  • Creation of an as small as possible runnable Java archive (currently 11.5 megabytes) to make the distribution and the deployment of the application simple by not relying on (bloated) Java application servers

  • Small memory footprint

  • Fast startup times (< 1 second) and short development cycles

  • Central dependency management using a Maven bill of material (BOM) to centrally manage library updates

Technologies

Indoqa-Boot is built upon following open source libraries and frameworks:

Additionally we use following Indoqa open source libraries:

Usage