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
Spring boot
By David Molinero
Spring boot
- 319