Software Architecture

JSP is the PHP of Java

Embrace separation of concerns

Separation of concerns

  • Java/Groovy on the server

  • JavaScript, HTML, CSS in the browser

  • Limit scope of changes

  • Maintain optimal testability

Browser/Client

Architecture

View

  • Markup/HTML, CSS, minimal JS

  • Presentation/display

  • No business logic

Browser

Model

  • JavaScript

  • DAOs to communicate w/ server

  • Maintain data used to feed view

Browser

Controller

  • JavaScript

  • Respond to user input & update model

  • Feed model data to view

Browser

Libraries & Frameworks

Smaller is better

Browser

AngularJS

...is a dead end

Browser

Ember.js

Browser

Polymer

Small and focused

Browser

Simple, fast*, elegant, & powerful

Browser

Server

Architecture

API

  • Handle requests from client

  • Stateless

  • Thin

  • REST*

  • Representation POJOs

Server

DAO

  • Communicate w/ DB

  • Stateless

  • SQL, HQL, etc

  • Includes POJO reps of DB/model

Server

Doman Logic

  • Between DAO and API

  • Injectable services

  • Limited state

  • Application-specific behaviors

Server

Model (DB)

  • Relational

  • NoSQL / Key-Value store

Server

Making life easier

Choosing languages, libraries, and frameworks

Server

Java 8

  • Lambda calculus

    • functions

  • Default methods

  • Method references

  • Streams

  • Improved Date/time

  • No more PermGen

Server

Groovy

  • Extends Collections

  • Intuitive closure support

  • Eliminates boilerplate

  • Default param values

  • Includes the kitchen sink

Server

A window to a new world

  • Simpler and more readable code

  • "..." unit tests

  • "..." E2E tests

  • "..." build scripts

Groovy

Spring Boot

Server

Comprehensive

  • IOC/DI

  • REST

  • Apache

  • JPA

  • Build integration

Spring Boot

And best of all...

NO MORE XML!!!

Spring Boot

Software Architecture

By Ray Nicholus

Software Architecture

  • 1,719