Java in the 21st century

Example: Delivery APP

Delivery API

Payments API

DB

Delivery API

Delivery API

Tech stack

- Java 8

Tech stack

- Java 8

- Gradle

Tech stack

- Java 8

- Gradle

- Spring boot

Tech stack

- Java 8

- Gradle

- Spring boot

- Spock

Tech stack

- Java 8

- Gradle

- Spring boot

- Spock

- Betamax

Tech stack

- Java 8

- Gradle

- Spring boot

- Spock

- Betamax

- Rest assured / MockMVC

Tech stack

- Java 8

- Gradle

- Spring boot

- Spock

- Betamax

- Rest assured / MockMVC

- Spring rest docs

Why Java 8?

Java 8

- Functional Interfaces and Lambda Expressions

- With Java 7

- With Java 8

Java 8

- Functional Interfaces and Lambda Expressions

- Java Stream API 

Java 8

- Functional Interfaces and Lambda Expressions

- Java Stream API 

- Optional

Java 8

- Functional Interfaces and Lambda Expressions

- Java Stream API 

- Optional

- Futures

Java 8

- Functional Interfaces and Lambda Expressions

- Java Stream API 

- Optional

- Futures

- New date / time API

Gradle

- Declarative DSL

- No XML

- Easily extensible with plugins

- Compatible with maven

- Polyglot build system

- Integration with IDE's

Spring boot

- Stand-alone applications and micro-services

- No XML configuration, YAML

- Opinionated, minimal configuration

- Metrics, health checks and externalized configuration

- SpringBoot Starters to quickly get up and running

- Easy management of profile specific properties

- Fatjars (java -jar myapp.jar)

Spring boot starters

- Spring integration

- Spring data JPA, redis, mongo, elastic-search, activemq

- Actuactor

- Dev tools

- Web, web sockets

- Batch

- Security

Spring boot in a tweet

Spring boot initializr

Spock

- Readable DSL

- Integrated stubbing and mocking

- Given / When / Then style

- Extends jUnit runner

- Data Driven Testing

Betamax

- Minimal footprint through annotations

- Recording and playback of HTTP calls

- Compatible with standard HTTP clients

- Configurable modes

- Easily extensible

Rest assured

- E2E testing

- Functional testing

Spring MockMVC

Spring rest docs

- API documented through existing tests

One more thing...

Docker

Demo

github.com/doktor500/delivery-app

Made with Slides.com