SlideShare ist ein Scribd-Unternehmen logo
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

                             Over-
Presentation-Layer       <<GUI>>
                          engineering




                                        <<Domain Model>>
                     Boiler Plate
Business-Layer          <<Service>>
                        Code




IntegrationLayer          Expensive
                       <<Adapter>>
Cross-Sectional Tasks
Technology Stack
Schlanke Webarchitekturen
                   Tiny Enterprise Applications
     Client Tier                                MiddleTier

                       JSF
 jQuery
                              <<Presenter>>                  <<Adapter DB>>

                                                                  Spring Data
      <<View>>                        CDI


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




                                                 Lombok
  Bean
Validation
                             <<Domain Model>>
Schlanke Webarchitekturen
             Large Scale Enterprise Applications
   Client Tier                                  MiddleTier

                 JSF
 jQuery
                       <<Presenter>>            <<Service>>    <<Adapter DB>>
                                                                    Spring Data
    <<View>>                            CDI


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




                                       Lombok                      Dozer
  Bean
Validation
                                <<Domain Model>>
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
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


•  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
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        ý (þ) nur OpenShift
•  Unterstützte DI Frameworks
   –  CDI                       þ
   –  Spring                    þ
•  Verfügbare Datenbank
   –  RDBMS                     þ
   –  NoSQL                     þ
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

Weitere ähnliche Inhalte

PPTX
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
PPTX
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
KEY
Good by Server... Hello Client!
PPTX
Lean web architecture mit jsf 2.0, cdi & co.
PDF
Metadatenbasierte Validierung
PDF
Restful Frontend-Architecture
KEY
Server Revolutions- Der Spring Source DM Server
PPT
Introduction to JEE
Wie viel Client braucht das Web?JSF, Vaadin und AngularJS im Vergleich
Go Fullstack: Webanwendungen mit Java EE 6 bauen (W-JAX 2011)
Good by Server... Hello Client!
Lean web architecture mit jsf 2.0, cdi & co.
Metadatenbasierte Validierung
Restful Frontend-Architecture
Server Revolutions- Der Spring Source DM Server
Introduction to JEE

Was ist angesagt? (20)

PPTX
JSF und JPA effizient kombinieren (W-JAX 2011)
PDF
GWT – Google Web Toolkit in der Praxis
PPTX
JavaServer Faces 2.2 (Herbstcampus 2013)
PPTX
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
PDF
MEAN SCS in der Cloud
PDF
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
PPTX
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
PDF
Wieviel client braucht das web
PDF
Wieviel Client braucht das Web?
PDF
Grails im Überblick und in der Praxis
PDF
May the forge be with you
PPTX
JSF 2 Kompositkomponenten (JAX 2012)
PDF
Web-GUIs mit Vaadin
PDF
Query Result Caching
PPT
2. Technologie-Tag - Frontend Architektur
PDF
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
PDF
Web Components
PDF
Java-Webanwendungen mit Vaadin 8
PDF
What's new in sql server 2012
PPTX
Windows Azure Platform Overview
JSF und JPA effizient kombinieren (W-JAX 2011)
GWT – Google Web Toolkit in der Praxis
JavaServer Faces 2.2 (Herbstcampus 2013)
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
MEAN SCS in der Cloud
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Wieviel client braucht das web
Wieviel Client braucht das Web?
Grails im Überblick und in der Praxis
May the forge be with you
JSF 2 Kompositkomponenten (JAX 2012)
Web-GUIs mit Vaadin
Query Result Caching
2. Technologie-Tag - Frontend Architektur
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Web Components
Java-Webanwendungen mit Vaadin 8
What's new in sql server 2012
Windows Azure Platform Overview
Anzeige

Andere mochten auch (20)

PDF
Das gleichnis vom anvertrauten geld - Parable of the Talents
PDF
Cloud Services von PC-studio
PPTX
JVM Hardcore - Part 18 - Converting a logical expression into bytecode
PPTX
Social Media - Wo Deine Leser schon auf Dich warten
PDF
Corti autotrasporti tedesco
PPT
Social Media Services
PDF
Die Wunder von Jesus 2 - Miracles of Jesus 2
PDF
FM2014: Einführung in Function Scripting by Thomas Hirt
PDF
FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein
DOCX
Lösungen handout
PDF
Reif? Scala für Enterprise-Applikationen
PPT
Hundertwasser
PDF
Das Gebot der Stunde: Ressourcenschonung durch Life Cycle Costs im Anlagenman...
PPTX
Präsentation wieser
PDF
Er hält die ganze welt in seiner hand - He's got the whole world in His hands
PPTX
Pitch deck
PDF
Lernzielkontrolle kugel
PDF
W1 wochenend
PDF
MK2014 FileMaker Server 13 by Thomas Hahn
Das gleichnis vom anvertrauten geld - Parable of the Talents
Cloud Services von PC-studio
JVM Hardcore - Part 18 - Converting a logical expression into bytecode
Social Media - Wo Deine Leser schon auf Dich warten
Corti autotrasporti tedesco
Social Media Services
Die Wunder von Jesus 2 - Miracles of Jesus 2
FM2014: Einführung in Function Scripting by Thomas Hirt
FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein
Lösungen handout
Reif? Scala für Enterprise-Applikationen
Hundertwasser
Das Gebot der Stunde: Ressourcenschonung durch Life Cycle Costs im Anlagenman...
Präsentation wieser
Er hält die ganze welt in seiner hand - He's got the whole world in His hands
Pitch deck
Lernzielkontrolle kugel
W1 wochenend
MK2014 FileMaker Server 13 by Thomas Hahn
Anzeige

Ähnlich wie Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI (20)

PDF
Java EE 7 - Enterprise-Anwendungen ohne Ballast
PDF
Basta 2016 - Test- und Releaseumgebungen in der Cloud
PDF
Creasoft-Akademie - Mobile Multiplattform Apps
PDF
Boost your APEX Deployment and Provisioning with Docker
PPTX
Collaboration Days 2011 - Damit die Tester schneller ran können.
PPT
PDF
Cloud Connectivity - Herausforderungen und Loesungen
PDF
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
PDF
Meet Magento - High performance magento
PPTX
Creasoft - Windows Azure
PPTX
2007 - Basta!: Nach soa kommt soc
PPTX
BizSpark goes Cloud
PDF
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
PPTX
LightSwitch und SQL Azure: Datengetriebene Anwendungen in Rekordzeit erstellen
PDF
Ruby on Rails in a metro session
PDF
Infrastructure Solution Day | Core
PDF
Microsoft Azure Cloud mit der Sitecore Experience Platform
PDF
Icinga 2009 at Nagios Workshop
PDF
Cloud Native und Java EE: Freund oder Feind?
PDF
Cloud Native & Java EE: Freund oder Feind?
Java EE 7 - Enterprise-Anwendungen ohne Ballast
Basta 2016 - Test- und Releaseumgebungen in der Cloud
Creasoft-Akademie - Mobile Multiplattform Apps
Boost your APEX Deployment and Provisioning with Docker
Collaboration Days 2011 - Damit die Tester schneller ran können.
Cloud Connectivity - Herausforderungen und Loesungen
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
Meet Magento - High performance magento
Creasoft - Windows Azure
2007 - Basta!: Nach soa kommt soc
BizSpark goes Cloud
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
LightSwitch und SQL Azure: Datengetriebene Anwendungen in Rekordzeit erstellen
Ruby on Rails in a metro session
Infrastructure Solution Day | Core
Microsoft Azure Cloud mit der Sitecore Experience Platform
Icinga 2009 at Nagios Workshop
Cloud Native und Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?

Mehr von adesso AG (20)

PDF
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
PDF
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
PDF
Mythos High Performance Teams
PPTX
A Business-Critical SharePoint Solution From adesso AG
PDF
Was Sie über NoSQL Datenbanken wissen sollten!
PDF
Continuous Delivery praktisch
PDF
Agilität, Snapshots und Continuous Delivery
PDF
Getriebene Anwendungslandschaften
PDF
Google App Engine JAX PaaS Parade 2013
PDF
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
PDF
OOP 2013 NoSQL Suche
PDF
NoSQL in der Cloud - Why?
PDF
Zehn Hinweise für Architekten
PDF
Agile Praktiken
PDF
Java und Cloud - nicht nur mit PaaS
PDF
Neue EBusiness Perspektiven durch HTML5
PDF
CloudConf2011 Introduction to Google App Engine
PDF
Scala 4 Enterprise
PDF
10 Hinweise für Architekten
PDF
HTML5 Storage
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
Mythos High Performance Teams
A Business-Critical SharePoint Solution From adesso AG
Was Sie über NoSQL Datenbanken wissen sollten!
Continuous Delivery praktisch
Agilität, Snapshots und Continuous Delivery
Getriebene Anwendungslandschaften
Google App Engine JAX PaaS Parade 2013
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
OOP 2013 NoSQL Suche
NoSQL in der Cloud - Why?
Zehn Hinweise für Architekten
Agile Praktiken
Java und Cloud - nicht nur mit PaaS
Neue EBusiness Perspektiven durch HTML5
CloudConf2011 Introduction to Google App Engine
Scala 4 Enterprise
10 Hinweise für Architekten
HTML5 Storage

Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

  • 1. Schlanke Webarchitekturen nicht nur mit JSF 2 & CDI Andreas Hartmann & Stephan Müller adesso AG
  • 2. Agenda Architektur Vision Querschnittsfunktionen Technologie Stack Schlanke Webarchitekturen Technologien im Detail Code-Beispiele Cloud Ready
  • 4. 3 Layer Reflex Over- Presentation-Layer <<GUI>> engineering <<Domain Model>> Boiler Plate Business-Layer <<Service>> Code IntegrationLayer Expensive <<Adapter>>
  • 7. Schlanke Webarchitekturen Tiny Enterprise Applications Client Tier MiddleTier JSF jQuery <<Presenter>> <<Adapter DB>> Spring Data <<View>> CDI <<Model>> << . . . >> Lombok Bean Validation <<Domain Model>>
  • 8. Schlanke Webarchitekturen Large Scale Enterprise Applications Client Tier MiddleTier JSF jQuery <<Presenter>> <<Service>> <<Adapter DB>> Spring Data <<View>> CDI <<Model>> <<. . . >> << . . . >> Lombok Dozer Bean Validation <<Domain Model>>
  • 9. 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
  • 10. 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
  • 11. Context and Dependency Injection •  CDI Beans ersetzen JSF Beans 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 •  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
  • 12. HTML •  Einfache Nutzung mit Facelets und Composite Components •  Mit JSF2.2 auch HTML5 Komponenten
  • 13. •  freie, umfangreiche JavaScript Bibliothek •  komfortable Möglichkeit zur DOM Manipulation •  Erweiterbarkeit durch Plugins (u.a. DataTable)
  • 14. Lombok •  Reduziert Boilerplate Code durch Annoations –  @Getter, @Setter –  @ToString –  @HashCodeAndEquals –  @Data –  @NotNull •  Delombok Funktionalität
  • 15. Bean Validation •  Standardisierung von Constraints in Form von Annotations •  Standardisierung des Metadata API •  Integration anderer Frameworks wie z.B. JSF und JPA
  • 16. Dozer •  Java Bean to Java Bean Mapper
  • 17. Spring Data •  ermöglicht Zugriff auf relationale und NoSQL Datenbanken •  CDI Integration in progress
  • 18. Apache Deltaspike •  Apache Incubator Projekt •  zentrale Sammelstelle für CDI Erweiterungen –  u.a. für CODI & Seam3 Module •  implementierungsunabhängiger Zugriff auf CDI APIs
  • 20. 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
  • 21. Cloud-Ready •  Laufzeitumgebung –  Webcontainer þ –  Application Server ý (þ) nur OpenShift •  Unterstützte DI Frameworks –  CDI þ –  Spring þ •  Verfügbare Datenbank –  RDBMS þ –  NoSQL þ
  • 22. 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
  • 23. Vielen Dank für Ihre Aufmerksamkeit