Server-side Frontends mit MVC 1.0

Gregor Tudan - @cofinpro_greg

Sind Frontends vom Server nicht tot?
Aber wir haben doch JSF und JSP!

Action vs. Component Based

Quelle: Oracle
Dann nimm doch Play, Spring MVC oder Struts!

Ziele von MVC

  1. Aufsetzen auf existierende Java-EE Technologien
  2. Basisfunktionen zum Bauen von MVC-Applications
  3. JAX-RS als Matching- & Binding-Layer
  4. Support für JSP und Facelets als View-Languages

Die kurze Version der Geschichte

2014

  • JSR 371 wird vorgestellt
  • Referenzimplementierung "Ozark"
  • Community Ballot: MVC auf Platz 5 der gewünschten Features für JavaEE8

2015

2016

  • JavaOne: Community-Umfrage zu JavaEE 8
  • MVC: Platz 21
  • wird aus JavaEE 8 gestrichen

Januar 2017

Die Community soll's richten

Java EE ohne MVC: Oracle überträgt JSR 371 an die Community

2017

  • Oracle übergibt JavaEE an Eclipse
  • aus JavaEE wird EE4J
  • MVC-Spec und Ozark wechseln zur Eclipse Foundation

2018

  • JSR 371 wird verabschiedet
  • Ozark soll umbenannt werden
Schluss jetzt! Zeig mir Code!

Controller sind REST-Endpunkte


@Path("/")
@javax.mvc.Controller
public class Controller {

    @GET
    public String view(String name) {
        return "hello.html";
    }
}

                

Model Binding


@Path("/")
@javax.mvc.Controller
public class Controller {

    @Inject
    private Models model;

    @GET
    public String view(@QueryParam("name") String name) {
        model.put("name", name);
        return "hello.html";
    }
}

                

Templates


<html>
<head>
    <title>Hello World</title>
</head>
<body>
    <h1>Hello ${name}</h1>
</body>
</html>
              

Template Engines

  • Java-Server-Pages
  • Facelets (hello JSF-Developers!)
  • Thymeleaf
  • Handlebars
  • AsciiDoc
  • ...

weitere Features

  • Validation
  • Internationalization
  • Exception Mappers & Error Bindings
  • Cross-site Request Forgery Protection
  • XSS-Escaping
  • Redirect-Handling
  • Events
  • URL-Resolving

Wo kann ich das benutzen?

  • JAX-RS Extension
    • Jersey, Resteasy & CXF
  • Wildfly-Extension
  • Thorntail/WF-Swarm-Fraction

Getting started

Contribute!