SlideShare ist ein Scribd-Unternehmen logo
1 von 23
The Apache MyFaces Universe
          in 2012
       Gerhard Petracek
        Mark Struberg
Agenda
●   What is MyFaces?
●   Why MyFaces?
    –   Core
    –   Extensions
Apache MyFaces is … - 1
●   … a great Community
●   … the umbrella project for
     JSF related projects
●   … Core (JSF Implementation)
●   … Add-ons for JSF based projects
    –   Orchestra
    –   ExtVal (Extensions Validator)
    –   CODI (Extensions CDI)
    –   Ext-Scripting (Extensions Scripting)
    –   Portlet Bridge
Apache MyFaces is … - 2
●   … Component Libraries
    –   Tomahawk
    –   Trinidad (base for ADF-Faces)
    –   Tobago
●   … Utils
    –   Test (with Mocks)
    –   Commons
    –   Maven Plugins and Archetype
    –   (Sandbox)
JSF and Apache MyFaces
●   JSF 2 is easy
●   With MyFaces
    –   … Core JSF is fast
    –   … Add-ons JSF is awesome

<html xmlns="..."><head>…</head>   @Named
 <body>                            @WindowScoped
  … #{menu.entries} …              public class Menu
</body></html>                      implements Serializable {
                                     //...
                                   }
Apache MyFaces Core is ...
●   ... an implementation of the
        JSF specification
●   ... used by several application servers
●   ... well tested
●   ... well supported
    –   Community            Even in 2012 we had a
                             maintenance-release of 1.1.x
    –   Commercial support   (8 years after the spec.-release)

●   ... currently the fastest JSF implementation
●   ... faster than many other web-frameworks
Request-Performance of
MyFaces Core
Memory Footprint of
MyFaces Core
MyFaces and Public Applications
●   One of many examples: TISS
●   TISS uses Tomcat with
    OpenWebBeans, OpenJPA
    MyFaces Core and MyFaces CODI
●   TISS serves
    5 million full JSF requests
    (excluding resources and AJAX requests)
    for 40.000 users
    easily per day
●   Most requests take less than 15ms
jsf.js of MyFaces Core
●   Partial-Page-Submit
    (only submit parts which get processed)
●   Advanced (dynamic) queue control
    –   Delayed requests (even before JSF 2.2)
    –   Timeout
    –   Size
●   Modularized OO JavaScript infrastructure
    (e.g. allows to replace parts in a consistent way)
●   Build profiles to optimize the footprint
    (e.g. drop IE6 support)
Apache MyFaces ExtVal is ...
●   … a pluggable validation-platform for
     constraint based JSF validation
●   … compatible with JSF 1.x and 2.x
●   … tested with several servers
●   … not bound to MyFaces-Core
MyFaces ExtVal – TOP 10 - 1
●   Easy cross-property validation
●   Transparent JPA based validation
●   Component initialization
●   Constraint mapping and constraint-sources
●   Advanced Bean-Validation integration
    –   @Valid for properties with custom types
    –   Bypass validation via action methods
        (BV groups via add-on)
MyFaces ExtVal – TOP 10 - 2
●   Constraint severity
    (warn once via add-on)
●   Constraint parameters
    (BV payload is a subset of it)
●   Model validation (transactional via add-on)
●   Validation interceptors
●   DI Support
    (different DI containers supported)
Apache MyFaces CODI is ...
●   ... a portable CDI extension
        (not a CDI implementation)
●   ... compatible with Java-EE5+
●   ... tested on most major servers
●   ... not bound to
        MyFaces-Core or OpenWebBeans
●   … easy to use, extensible, fast and stable
●   … optimized for large applications
●   … one of few popular CDI extensions
History of MyFaces CODI
●   Apache MyFaces Orchestra introduced
    interesting concepts in combination with
    Spring
●   12-2009 CDI 1.0
●   2-2010 MyFaces ExtCDI (aka CODI)
    started
●   11-2010 first stable release
●   12-2011 merged with Seam3 and others to
    Apache DeltaSpike
MyFaces CODI – TOP 10 - 1
●   Scopes
●   Conditional bean activation
●   Type-safe CODI-Config
●   Type-safe and extensible Project-Stages
●   Type-safe View-Config and Navigation
MyFaces CODI – TOP 10 - 2
●   View-Controller
●   Extensibility
    (Security, Interceptors, Factories, …)
●   I18n
●   Transactional beans without EJBs
●   Configurable JPA DataSource
Scopes
●   … with std. CDI and JSF
    (JSF Scopes not integrated          )
    –   Request-, Session-, Application-Scope
    –   View-, Flash-, Custom-, None-Scope (JSF)
    –   Conversation-, Dependent, Singleton-Scope (CDI)
●   … with MyFaces CODI
    –   Autom. converts JSF beans to CDI beans
    –   Window-, (Grouped-)Conversation-, ViewAccess-,
        Rest-Scope (for CDI + JSF)
    –   Transaction-Scope (for CDI)         Different types of
                                              conversations
CODI Scopes by Example
●   Without MyFaces CODI – e.g.:
    @SessionScoped
    public class Menu implements Serializable {
      //…
    }
●   -> multiple Browser-Tabs use the same
    instances
●   With MyFaces CODI – e.g.:
    @WindowScoped
    public class Menu implements Serializable {
      //…
    }
Destroy CODI Conversations
●   Close a conversation
    @Inject
    private Conversation conversation;

    this.conversation.close();
●   Use the Window-Context
    @Inject
    private WindowContext windowContext;

    this.windowContext.close();     //and #close*
JSF and Browser Windows
●   JSF 2.2 ClientWindow is inspired by
    CODI Window-Handler and others
●   CODI Window-Handler implementations
    –   ServerSideWindowHandler
    –   DefaultWindowHandler (URL)
    –   ClientSideWindowHandler
        ●   Lazy Window-ID dropping
        ●   Intermediate windowhandler.html page
DEMO
Client-Side Window-Handler
Apache MyFaces ExtScript is ...
●   ... dynamic recompilation and reloading of
        JSF artifacts without redeployment
●   ... compatible with Groovy and Scala
●   ... going to support JRuby
●   ... compatible with CDI and Spring
●   ... somewhere in between
        Mojarra-Scripting and JRebel
●   ... tested with several servers
●   ... currently bound to MyFaces Core

Weitere ähnliche Inhalte

Was ist angesagt?

Session 42 - Struts 2 Hibernate Integration
Session 42 - Struts 2 Hibernate IntegrationSession 42 - Struts 2 Hibernate Integration
Session 42 - Struts 2 Hibernate IntegrationPawanMM
 
WildFly AppServer - State of the Union
WildFly AppServer - State of the UnionWildFly AppServer - State of the Union
WildFly AppServer - State of the UnionDimitris Andreadis
 
Introduction tomaven
Introduction tomavenIntroduction tomaven
Introduction tomavenManav Prasad
 
Glassfish An Introduction
Glassfish An IntroductionGlassfish An Introduction
Glassfish An IntroductionJumping Bean
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformMartin Toshev
 
Java build tool_comparison
Java build tool_comparisonJava build tool_comparison
Java build tool_comparisonManav Prasad
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the CloudArun Gupta
 
Session 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionSession 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionPawanMM
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011Arun Gupta
 
Glassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionGlassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionDanairat Thanabodithammachari
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Skills Matter
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System IntroductionDan Stine
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Azilen Technologies Pvt. Ltd.
 
Defending against Java Deserialization Vulnerabilities
 Defending against Java Deserialization Vulnerabilities Defending against Java Deserialization Vulnerabilities
Defending against Java Deserialization VulnerabilitiesLuca Carettoni
 
Getting Started with Java EE 7
Getting Started with Java EE 7Getting Started with Java EE 7
Getting Started with Java EE 7Arun Gupta
 
Session 45 - Spring - Part 3 - AOP
Session 45 - Spring - Part 3 - AOPSession 45 - Spring - Part 3 - AOP
Session 45 - Spring - Part 3 - AOPPawanMM
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Arun Gupta
 
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010Arun Gupta
 

Was ist angesagt? (20)

Session 42 - Struts 2 Hibernate Integration
Session 42 - Struts 2 Hibernate IntegrationSession 42 - Struts 2 Hibernate Integration
Session 42 - Struts 2 Hibernate Integration
 
WildFly AppServer - State of the Union
WildFly AppServer - State of the UnionWildFly AppServer - State of the Union
WildFly AppServer - State of the Union
 
Introduction tomaven
Introduction tomavenIntroduction tomaven
Introduction tomaven
 
Glassfish An Introduction
Glassfish An IntroductionGlassfish An Introduction
Glassfish An Introduction
 
Security Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java PlatformSecurity Аrchitecture of Тhe Java Platform
Security Аrchitecture of Тhe Java Platform
 
Java build tool_comparison
Java build tool_comparisonJava build tool_comparison
Java build tool_comparison
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the Cloud
 
Session 41 - Struts 2 Introduction
Session 41 - Struts 2 IntroductionSession 41 - Struts 2 Introduction
Session 41 - Struts 2 Introduction
 
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011
 
Glassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionGlassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE Introduction
 
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3
 
JEE Programming - 01 Introduction
JEE Programming - 01 IntroductionJEE Programming - 01 Introduction
JEE Programming - 01 Introduction
 
Java 9 Module System Introduction
Java 9 Module System IntroductionJava 9 Module System Introduction
Java 9 Module System Introduction
 
Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7Step by step guide to create theme for liferay dxp 7
Step by step guide to create theme for liferay dxp 7
 
Defending against Java Deserialization Vulnerabilities
 Defending against Java Deserialization Vulnerabilities Defending against Java Deserialization Vulnerabilities
Defending against Java Deserialization Vulnerabilities
 
Liferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for DevelopersLiferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for Developers
 
Getting Started with Java EE 7
Getting Started with Java EE 7Getting Started with Java EE 7
Getting Started with Java EE 7
 
Session 45 - Spring - Part 3 - AOP
Session 45 - Spring - Part 3 - AOPSession 45 - Spring - Part 3 - AOP
Session 45 - Spring - Part 3 - AOP
 
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
Deploying Java EE 6 Apps in a Cluster: GlassFish 3.1 at Dallas Tech Fest 2011
 
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
Tools Coverage for the Java EE Platform @ Silicon Valley Code Camp 2010
 

Ähnlich wie MyFaces Universe at ApacheCon

Turn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmTurn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmDimitris Andreadis
 
Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...
Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...
Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...Voxxed Days Thessaloniki
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformAndrew Ferrier
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Jérôme Petazzoni
 
Structured web apps
Structured web appsStructured web apps
Structured web appsSheng Tian
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFishglassfish
 
JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013Vaclav Tunka
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xGeertjan Wielenga
 
What’s New & Cool in NetBeans IDE 7.x
What’s New & Cool in NetBeans IDE 7.xWhat’s New & Cool in NetBeans IDE 7.x
What’s New & Cool in NetBeans IDE 7.xErik Gur
 
Zend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applicationsZend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applicationsEtisbew Technology Group
 
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and PrestoStorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and PrestoAlluxio, Inc.
 
Survey of Container Build Tools
Survey of Container Build ToolsSurvey of Container Build Tools
Survey of Container Build ToolsMichael Ducy
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishBruno Cornec
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross SeminarXamarin
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross IntroductionStuart Lodge
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and SecurityKelwin Yang
 

Ähnlich wie MyFaces Universe at ApacheCon (20)

Turn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly SwarmTurn you Java EE Monoliths into Microservices with WildFly Swarm
Turn you Java EE Monoliths into Microservices with WildFly Swarm
 
WildFly & WildFly Swarm
WildFly & WildFly SwarmWildFly & WildFly Swarm
WildFly & WildFly Swarm
 
Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...
Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...
Voxxed Days Thesaloniki 2016 - Rightsize Your Services with WildFly & WildFly...
 
GlassFish Community and future larochelle
GlassFish Community and future larochelleGlassFish Community and future larochelle
GlassFish Community and future larochelle
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
 
Structured web apps
Structured web appsStructured web apps
Structured web apps
 
OTN Developer Days - GlassFish
OTN Developer Days - GlassFishOTN Developer Days - GlassFish
OTN Developer Days - GlassFish
 
JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013JBoss @ CVUT FIT April 2013
JBoss @ CVUT FIT April 2013
 
What's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.xWhat's New in NetBeans IDE 7.x
What's New in NetBeans IDE 7.x
 
What’s New & Cool in NetBeans IDE 7.x
What’s New & Cool in NetBeans IDE 7.xWhat’s New & Cool in NetBeans IDE 7.x
What’s New & Cool in NetBeans IDE 7.x
 
Zend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applicationsZend MVC pattern based Framework – Best for Enterprise web applications
Zend MVC pattern based Framework – Best for Enterprise web applications
 
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and PrestoStorageQuery: federated querying on object stores, powered by Alluxio and Presto
StorageQuery: federated querying on object stores, powered by Alluxio and Presto
 
Survey of Container Build Tools
Survey of Container Build ToolsSurvey of Container Build Tools
Survey of Container Build Tools
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
IPMI is dead, Long live Redfish
IPMI is dead, Long live RedfishIPMI is dead, Long live Redfish
IPMI is dead, Long live Redfish
 
MvvmCross Seminar
MvvmCross SeminarMvvmCross Seminar
MvvmCross Seminar
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and Security
 

Kürzlich hochgeladen

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 

Kürzlich hochgeladen (20)

AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 

MyFaces Universe at ApacheCon

  • 1. The Apache MyFaces Universe in 2012 Gerhard Petracek Mark Struberg
  • 2. Agenda ● What is MyFaces? ● Why MyFaces? – Core – Extensions
  • 3. Apache MyFaces is … - 1 ● … a great Community ● … the umbrella project for JSF related projects ● … Core (JSF Implementation) ● … Add-ons for JSF based projects – Orchestra – ExtVal (Extensions Validator) – CODI (Extensions CDI) – Ext-Scripting (Extensions Scripting) – Portlet Bridge
  • 4. Apache MyFaces is … - 2 ● … Component Libraries – Tomahawk – Trinidad (base for ADF-Faces) – Tobago ● … Utils – Test (with Mocks) – Commons – Maven Plugins and Archetype – (Sandbox)
  • 5. JSF and Apache MyFaces ● JSF 2 is easy ● With MyFaces – … Core JSF is fast – … Add-ons JSF is awesome <html xmlns="..."><head>…</head> @Named <body> @WindowScoped … #{menu.entries} … public class Menu </body></html> implements Serializable { //... }
  • 6. Apache MyFaces Core is ... ● ... an implementation of the JSF specification ● ... used by several application servers ● ... well tested ● ... well supported – Community Even in 2012 we had a maintenance-release of 1.1.x – Commercial support (8 years after the spec.-release) ● ... currently the fastest JSF implementation ● ... faster than many other web-frameworks
  • 9. MyFaces and Public Applications ● One of many examples: TISS ● TISS uses Tomcat with OpenWebBeans, OpenJPA MyFaces Core and MyFaces CODI ● TISS serves 5 million full JSF requests (excluding resources and AJAX requests) for 40.000 users easily per day ● Most requests take less than 15ms
  • 10. jsf.js of MyFaces Core ● Partial-Page-Submit (only submit parts which get processed) ● Advanced (dynamic) queue control – Delayed requests (even before JSF 2.2) – Timeout – Size ● Modularized OO JavaScript infrastructure (e.g. allows to replace parts in a consistent way) ● Build profiles to optimize the footprint (e.g. drop IE6 support)
  • 11. Apache MyFaces ExtVal is ... ● … a pluggable validation-platform for constraint based JSF validation ● … compatible with JSF 1.x and 2.x ● … tested with several servers ● … not bound to MyFaces-Core
  • 12. MyFaces ExtVal – TOP 10 - 1 ● Easy cross-property validation ● Transparent JPA based validation ● Component initialization ● Constraint mapping and constraint-sources ● Advanced Bean-Validation integration – @Valid for properties with custom types – Bypass validation via action methods (BV groups via add-on)
  • 13. MyFaces ExtVal – TOP 10 - 2 ● Constraint severity (warn once via add-on) ● Constraint parameters (BV payload is a subset of it) ● Model validation (transactional via add-on) ● Validation interceptors ● DI Support (different DI containers supported)
  • 14. Apache MyFaces CODI is ... ● ... a portable CDI extension (not a CDI implementation) ● ... compatible with Java-EE5+ ● ... tested on most major servers ● ... not bound to MyFaces-Core or OpenWebBeans ● … easy to use, extensible, fast and stable ● … optimized for large applications ● … one of few popular CDI extensions
  • 15. History of MyFaces CODI ● Apache MyFaces Orchestra introduced interesting concepts in combination with Spring ● 12-2009 CDI 1.0 ● 2-2010 MyFaces ExtCDI (aka CODI) started ● 11-2010 first stable release ● 12-2011 merged with Seam3 and others to Apache DeltaSpike
  • 16. MyFaces CODI – TOP 10 - 1 ● Scopes ● Conditional bean activation ● Type-safe CODI-Config ● Type-safe and extensible Project-Stages ● Type-safe View-Config and Navigation
  • 17. MyFaces CODI – TOP 10 - 2 ● View-Controller ● Extensibility (Security, Interceptors, Factories, …) ● I18n ● Transactional beans without EJBs ● Configurable JPA DataSource
  • 18. Scopes ● … with std. CDI and JSF (JSF Scopes not integrated ) – Request-, Session-, Application-Scope – View-, Flash-, Custom-, None-Scope (JSF) – Conversation-, Dependent, Singleton-Scope (CDI) ● … with MyFaces CODI – Autom. converts JSF beans to CDI beans – Window-, (Grouped-)Conversation-, ViewAccess-, Rest-Scope (for CDI + JSF) – Transaction-Scope (for CDI) Different types of conversations
  • 19. CODI Scopes by Example ● Without MyFaces CODI – e.g.: @SessionScoped public class Menu implements Serializable { //… } ● -> multiple Browser-Tabs use the same instances ● With MyFaces CODI – e.g.: @WindowScoped public class Menu implements Serializable { //… }
  • 20. Destroy CODI Conversations ● Close a conversation @Inject private Conversation conversation; this.conversation.close(); ● Use the Window-Context @Inject private WindowContext windowContext; this.windowContext.close(); //and #close*
  • 21. JSF and Browser Windows ● JSF 2.2 ClientWindow is inspired by CODI Window-Handler and others ● CODI Window-Handler implementations – ServerSideWindowHandler – DefaultWindowHandler (URL) – ClientSideWindowHandler ● Lazy Window-ID dropping ● Intermediate windowhandler.html page
  • 23. Apache MyFaces ExtScript is ... ● ... dynamic recompilation and reloading of JSF artifacts without redeployment ● ... compatible with Groovy and Scala ● ... going to support JRuby ● ... compatible with CDI and Spring ● ... somewhere in between Mojarra-Scripting and JRebel ● ... tested with several servers ● ... currently bound to MyFaces Core