Download - Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Transcript
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