schlanke webarchitekturen nicht nur mit jsf 2 und cdi
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
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