SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)JSF und JPA effizient kombinieren (W-JAX 2011)
JSF und JPA effizient kombinieren (W-JAX 2011)Michael Kurz
 
JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)JavaServer Faces 2.2 (Herbstcampus 2013)
JavaServer Faces 2.2 (Herbstcampus 2013)Michael Kurz
 
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...
Web APIs auf dem Prüfstand - Volle Kontrolle oder fertig mit den Azure Mobile...Peter Kirchner
 
MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisMehrere Apps, ein Backend: Windows Azure Mobile Services in der Praxis
Mehrere Apps, ein Backend: Windows Azure Mobile Services in der PraxisJan Hentschel
 
Wieviel client braucht das web
Wieviel client braucht das webWieviel client braucht das web
Wieviel client braucht das webgedoplan
 
Wieviel Client braucht das Web?
Wieviel Client braucht das Web?Wieviel Client braucht das Web?
Wieviel Client braucht das Web?gedoplan
 
Grails im Überblick und in der Praxis
Grails im Überblick und in der PraxisGrails im Überblick und in der Praxis
Grails im Überblick und in der PraxisTobias Kraft
 
May the forge be with you
May the forge be with youMay the forge be with you
May the forge be with youSandro Sonntag
 
JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)JSF 2 Kompositkomponenten (JAX 2012)
JSF 2 Kompositkomponenten (JAX 2012)Michael Kurz
 
Web-GUIs mit Vaadin
 Web-GUIs mit Vaadin Web-GUIs mit Vaadin
Web-GUIs mit Vaadingedoplan
 
2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend Architektur2. Technologie-Tag - Frontend Architektur
2. Technologie-Tag - Frontend ArchitekturNico Steiner
 
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...
Vor- und Nachteile von Web Components mit Polymer gegenüber AngularJS ohne P...Oliver Hader
 
Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8Java-Webanwendungen mit Vaadin 8
Java-Webanwendungen mit Vaadin 8gedoplan
 
Windows Azure Platform Overview
Windows Azure Platform   OverviewWindows Azure Platform   Overview
Windows Azure Platform OverviewOliver Michalski
 

La actualidad más candente (20)

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

Destacado

Das gleichnis vom anvertrauten geld - Parable of the Talents
Das gleichnis vom anvertrauten geld - Parable of the TalentsDas gleichnis vom anvertrauten geld - Parable of the Talents
Das gleichnis vom anvertrauten geld - Parable of the TalentsFreekidstories
 
Cloud Services von PC-studio
Cloud Services von PC-studioCloud Services von PC-studio
Cloud Services von PC-studiopc_studio
 
JVM Hardcore - Part 18 - Converting a logical expression into bytecode
JVM Hardcore - Part 18 - Converting a logical expression into bytecodeJVM Hardcore - Part 18 - Converting a logical expression into bytecode
JVM Hardcore - Part 18 - Converting a logical expression into bytecodeyohanbeschi
 
Social Media - Wo Deine Leser schon auf Dich warten
Social Media - Wo Deine Leser schon auf Dich wartenSocial Media - Wo Deine Leser schon auf Dich warten
Social Media - Wo Deine Leser schon auf Dich wartenKnowtheirname ApS
 
Corti autotrasporti tedesco
Corti autotrasporti   tedescoCorti autotrasporti   tedesco
Corti autotrasporti tedescoIppolito Corti
 
Social Media Services
Social Media ServicesSocial Media Services
Social Media ServicesSMTravelers
 
Die Wunder von Jesus 2 - Miracles of Jesus 2
Die Wunder von Jesus 2 - Miracles of Jesus 2Die Wunder von Jesus 2 - Miracles of Jesus 2
Die Wunder von Jesus 2 - Miracles of Jesus 2Freekidstories
 
FM2014: Einführung in Function Scripting by Thomas Hirt
FM2014: Einführung in Function Scripting by Thomas HirtFM2014: Einführung in Function Scripting by Thomas Hirt
FM2014: Einführung in Function Scripting by Thomas HirtVerein FM Konferenz
 
FMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein
FMK2012: Eigene Funktionen / Custom Functions von Arnold KegebeinFMK2012: Eigene Funktionen / Custom Functions von Arnold Kegebein
FMK2012: Eigene Funktionen / Custom Functions von Arnold KegebeinVerein FM Konferenz
 
Reif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-ApplikationenReif? Scala für Enterprise-Applikationen
Reif? Scala für Enterprise-Applikationenadesso AG
 
Das Gebot der Stunde: Ressourcenschonung durch Life Cycle Costs im Anlagenman...
Das Gebot der Stunde: Ressourcenschonung durch Life Cycle Costs im Anlagenman...Das Gebot der Stunde: Ressourcenschonung durch Life Cycle Costs im Anlagenman...
Das Gebot der Stunde: Ressourcenschonung durch Life Cycle Costs im Anlagenman...dankl+partner consulting gmbh
 
Präsentation wieser
Präsentation wieserPräsentation wieser
Präsentation wieserLaura Theunis
 
Er hält die ganze welt in seiner hand - He's got the whole world in His hands
Er hält die ganze welt in seiner hand - He's got the whole world in His handsEr hält die ganze welt in seiner hand - He's got the whole world in His hands
Er hält die ganze welt in seiner hand - He's got the whole world in His handsFreekidstories
 
Lernzielkontrolle kugel
Lernzielkontrolle kugelLernzielkontrolle kugel
Lernzielkontrolle kugelkkreienbrink
 
MK2014 FileMaker Server 13 by Thomas Hahn
MK2014 FileMaker Server 13 by Thomas HahnMK2014 FileMaker Server 13 by Thomas Hahn
MK2014 FileMaker Server 13 by Thomas HahnVerein FM Konferenz
 

Destacado (20)

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

Similar a Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI

Java EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne BallastJava EE 7 - Enterprise-Anwendungen ohne Ballast
Java EE 7 - Enterprise-Anwendungen ohne Ballastgedoplan
 
Basta 2016 - Test- und Releaseumgebungen in der Cloud
Basta 2016 - Test- und Releaseumgebungen in der CloudBasta 2016 - Test- und Releaseumgebungen in der Cloud
Basta 2016 - Test- und Releaseumgebungen in der CloudMarc Müller
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft AG
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.Collaboration Days 2011 - Damit die Tester schneller ran können.
Collaboration Days 2011 - Damit die Tester schneller ran können.David Schneider
 
Cloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenCloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenDaniel Steiger
 
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...
JavaScript goes Enterprise - Node.js-Anwendungen mit Visual Studio und den No...Peter Hecker
 
Meet Magento - High performance magento
Meet Magento - High performance magentoMeet Magento - High performance magento
Meet Magento - High performance magentoAOE
 
Creasoft - Windows Azure
Creasoft - Windows AzureCreasoft - Windows Azure
Creasoft - Windows AzureCreasoft AG
 
2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt soc2007 - Basta!: Nach soa kommt soc
2007 - Basta!: Nach soa kommt socDaniel Fisher
 
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoffstackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
stackconf 2020 | SecDevOps in der Cloud by Florian WiethoffNETWAYS
 
LightSwitch und SQL Azure: Datengetriebene Anwendungen in Rekordzeit erstellen
LightSwitch und SQL Azure: Datengetriebene Anwendungen in Rekordzeit erstellenLightSwitch und SQL Azure: Datengetriebene Anwendungen in Rekordzeit erstellen
LightSwitch und SQL Azure: Datengetriebene Anwendungen in Rekordzeit erstellenAlexander Galkin
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Microsoft Azure Cloud mit der Sitecore Experience Platform
Microsoft Azure Cloud mit der Sitecore Experience PlatformMicrosoft Azure Cloud mit der Sitecore Experience Platform
Microsoft Azure Cloud mit der Sitecore Experience Platformcomspace GmbH & Co. KG
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Josef Adersberger
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?QAware GmbH
 

Similar a Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI (20)

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

Más de adesso AG

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPadesso AG
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teamsadesso AG
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AGadesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktischadesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Deliveryadesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaftenadesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Sucheadesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?adesso AG
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architektenadesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktikenadesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS adesso AG
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5adesso AG
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engineadesso AG
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterpriseadesso AG
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 
HTML5 Storage
HTML5 StorageHTML5 Storage
HTML5 Storageadesso AG
 

Más de adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engine
 
Scala 4 Enterprise
Scala 4 EnterpriseScala 4 Enterprise
Scala 4 Enterprise
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
HTML5 Storage
HTML5 StorageHTML5 Storage
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