Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Post on 29-Nov-2014

2.681 views 2 download

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

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

Agenda

Architektur Vision

Querschnittsfunktionen

Technologie Stack

Schlanke Webarchitekturen

Technologien im Detail

Code-Beispiele

Cloud Ready

Architektur Vision

3 Layer Reflex

Presentation-Layer

Business-Layer <<Service>>

<<GUI>>

IntegrationLayer <<Adapter>>

<<D

omai

n M

odel

>>

Over-engineering

Boiler Plate Code

Expensive

Cross-Sectional Tasks

Technology Stack

Schlanke Webarchitekturen Tiny Enterprise Applications

Client Tier

<<View>>

<<Adapter DB>>

<< . . . >>

MiddleTier

<<Presenter>>

<<Model>>

<<Domain Model>>

Spring Data

jQuery

Bean Validation

JSF

CDI

Lombok

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

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

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

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

HTML

•  Einfache Nutzung mit Facelets und Composite Components

•  Mit JSF2.2 auch HTML5 Komponenten

•  freie, umfangreiche JavaScript Bibliothek

•  komfortable Möglichkeit zur DOM Manipulation

•  Erweiterbarkeit durch Plugins (u.a. DataTable)

Lombok •  Reduziert Boilerplate

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

•  Delombok Funktionalität

Bean Validation •  Standardisierung von

Constraints in Form von Annotations

•  Standardisierung des Metadata API

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

Dozer •  Java Bean to

Java Bean Mapper

Spring Data •  ermöglicht Zugriff auf

relationale und NoSQL Datenbanken

•  CDI Integration in progress

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

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

•  implementierungsunabhängiger Zugriff auf CDI APIs

Code-Beispiele •  Exceptionhandling

•  Monitoring

•  Security

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

Cloud-Ready •  Laufzeitumgebung

–  Webcontainer –  Application Server

•  Unterstützte DI Frameworks –  CDI –  Spring

•  Verfügbare Datenbank –  RDBMS –  NoSQL

þ ý (þ) nur OpenShift

þ

þ

þ

þ

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

Vielen Dank für Ihre Aufmerksamkeit