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
Learn about the lastest improvements
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.
-
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
Indoqa-Boot is built upon following open source libraries and frameworks:
- Javaspark which comes with Jetty
- Jackson
- Spring Framework
- log4j2
Additionally we use following Indoqa open source libraries:
- indoqa-http-proxy to proxy pass other web services without having to deal with CORS
- system-test-tools for a DSL to setup and run integration tests against HTTP endpoints
- jar-in-jar to create runnable JAR files
- indoqa-boot-bom to manage Indoqa Boot relevant dependencies
- Initialization in your Java main method
- Spring: Manage your components
- Spark: Register your HTTP endpoints
- Jackson: Dealing with Json
- Configuration: Provide properties for run profiles, ports etc.
- React/Redux: Integrate a Javascript single page application
- log4j2: Configure logging
- Monitoring: Health checks and system info
- Maven: Configure your Maven build and produce deployment artifacts
- Hot-reload Java
- Integration tests