Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

23
Schlanke Webarchitekturen nicht nur mit JSF 2 & CDI Andreas Hartmann & Stephan Müller adesso AG

description

Auch mit JSF 2 und CDI lassen sich in kürzester Zeit komplexe Anwendungen realisieren, wenn man weiß, wie. Anhand des Technologie-Stacks JSF 2, CDI, Lombok, HTML5, jQuery und JPA wird eine leichtgewichtige Architektur anhand einer Livedemo vorgestellt, die den Anforderungen des Rapid Application Development gerecht wird und in der Cloud betrieben werden kann.

Transcript of Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Page 1: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Schlanke Webarchitekturen nicht nur mit JSF 2 & CDI Andreas Hartmann & Stephan Müller adesso AG

Page 2: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Agenda

Architektur Vision

Querschnittsfunktionen

Technologie Stack

Schlanke Webarchitekturen

Technologien im Detail

Code-Beispiele

Cloud Ready

Page 3: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Architektur Vision

Page 4: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

3 Layer Reflex

Presentation-Layer

Business-Layer <<Service>>

<<GUI>>

IntegrationLayer <<Adapter>>

<<D

omai

n M

odel

>>

Over-engineering

Boiler Plate Code

Expensive

Page 5: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Cross-Sectional Tasks

Page 6: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Technology Stack

Page 7: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Schlanke Webarchitekturen Tiny Enterprise Applications

Client Tier

<<View>>

<<Adapter DB>>

<< . . . >>

MiddleTier

<<Presenter>>

<<Model>>

<<Domain Model>>

Spring Data

jQuery

Bean Validation

JSF

CDI

Lombok

Page 8: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Schlanke Webarchitekturen Large Scale Enterprise Applications

Client Tier

<<View>>

MiddleTier

<<Domain Model>>

jQuery

<<Presenter>> <<Adapter DB>> <<Service>>

<<Model>> <<. . . >> << . . . >>

JSF

Spring Data

Dozer

CDI

Bean Validation

Lombok

Page 9: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Wunschliste für Dependency Injection ...

•  Standardisierte DI für Java –  Wiederverwendbarkeit –  Testbarkeit –  Flexibilität

•  Fachlichkeit statt Infrastruktur –  Eingeloggter Benutzer statt UserService

•  ... und natürlich Erweiterbarkeit

Page 10: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Context and Dependency Injection

•  CDI 1.0 (JSR-299) –  typsicheres und schichtenneutrales Injection Framework –  Annotationsbasiert

•  @Produces, @RequestScope, @ConversationScope –  mehrere Implementierungen

•  Weld, Apache Open WebBeans, Caucho CanDI –  nutzt DI for Java (JSR-330) als grundlegende API

•  @Inject, @Named, ... –  bietet Mechanismus zur individuellen Erweiterung

•  CDI ermöglicht ... –  Java Enterprise Entwicklung ohne EJB und ohne Spring

Page 11: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Context and Dependency Injection

•  CDI Beans ersetzen JSF Beans

•  Vorteile –  alle Beans werden im CDI Container verwaltet –  Injizieren von POJOs und Diensten in „Managed Beans“

möglich –  Leichtgewichtig

•  läuft auch im Web Container

JSF 2.0 (JSR 314) CDI 1.0 (JSR 299, JSR 330) @javax.faces.bean.ManagedBean @javax.inject.Named

@javax.faces.bean.ManagedProperty @javax.inject.Inject

@javax.faces.bean.SessionScoped @javax.enterprise.context.SessionScoped

Page 12: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

HTML

•  Einfache Nutzung mit Facelets und Composite Components

•  Mit JSF2.2 auch HTML5 Komponenten

Page 13: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

•  freie, umfangreiche JavaScript Bibliothek

•  komfortable Möglichkeit zur DOM Manipulation

•  Erweiterbarkeit durch Plugins (u.a. DataTable)

Page 14: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Lombok •  Reduziert Boilerplate

Code durch Annoations –  @Getter, @Setter –  @ToString –  @HashCodeAndEquals –  @Data –  @NotNull

•  Delombok Funktionalität

Page 15: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Bean Validation •  Standardisierung von

Constraints in Form von Annotations

•  Standardisierung des Metadata API

•  Integration anderer Frameworks wie z.B. JSF und JPA

Page 16: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Dozer •  Java Bean to

Java Bean Mapper

Page 17: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Spring Data •  ermöglicht Zugriff auf

relationale und NoSQL Datenbanken

•  CDI Integration in progress

Page 18: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Apache Deltaspike •  Apache Incubator Projekt •  zentrale Sammelstelle für CDI Erweiterungen

–  u.a. für CODI & Seam3 Module

•  implementierungsunabhängiger Zugriff auf CDI APIs

Page 19: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Code-Beispiele •  Exceptionhandling

•  Monitoring

•  Security

Page 20: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Cloud-Ready •  Deployment bei PaaS/IaaS Providern

–  Amazon Beanstalk / EC2 –  RedHat OpenShift –  VMware Cloud Foundry

•  Warum Cloud ...?

–  Rechenleistung on demand –  Elastizität und Skalierbarkeit –  Hohe Flexibilität –  Geringe Kosten

Page 21: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Cloud-Ready •  Laufzeitumgebung

–  Webcontainer –  Application Server

•  Unterstützte DI Frameworks –  CDI –  Spring

•  Verfügbare Datenbank –  RDBMS –  NoSQL

þ ý (þ) nur OpenShift

þ

þ

þ

þ

Page 22: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Ressourcen JSF2.2 (JSR-344) http://jcp.org/en/jsr/detail?id=344 CDI (JSR-299) http://docs.jboss.org/cdi/spec/1.0/html_single jQuery http://jquery.com

http://datatables.net Dozer http://dozer.sourceforge.net Lombok http://projectlombok.org Spring Data http://www.springsource.org/spring-data Bean Validation http://hibernate.org/subprojects/validator

Page 23: Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Vielen Dank für Ihre Aufmerksamkeit