SlideShare une entreprise Scribd logo
1  sur  53
© OPITZ CONSULTING 2016
 überraschend mehr Möglichkeiten!
© OPITZ CONSULTING 2016
Deep Dive
Riccardo Massera (BootsFaces team lead)
Stephan Rauh (Leiter CC „modern Clients“)
BootsFaces and
AngularFaces
© OPITZ CONSULTING 2016 Seite 2
What‘s it all about
1
2
3
4
5
History
BootsFaces in a Nutshell
BootsFaces Deep Dive
AngularFaces in a Nutshell
AngularFaces Deep Dive
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 Seite 3
Breaking News
0
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 Image source: 留米市民(Kurume-Shimin) https://commons.wikimedia.org/wiki/File:ColorfulFireworks.png,
BootsFaces 1.0 has been released!
© OPITZ CONSULTING 2016 Seite 5
History
 Company frameworks:
Medusa, Perseus and „The Framework“
 PrimeFaces and Liferay
 AngularPrime and AngularDartPrime
 AngularFaces
 BootsFaces
1
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
History: Medusa (1997-2000)
 Stephan‘s first company framework
 Full-stack framework: persistence and UI
 Two-layer desktop application architecture
 Based on SQLWindows / Centura
 Challenge:
 Buggy programming language, buggy libraries (in 1997)
 Solution:
 Circumvent the bugs by providing your own framework
 Lessons learnt:
 Writing a framework pays!
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
History: Perseus (2000 – 2005)
 Successor of Medusa
 Full-stack 3-layer web framework
 Frequent refactoring
 Technologies examined:
 C++ with Roguewave vs. Java
 Rational Rose vs. TogetherJ
 Distributed computing with CORBA
 Applets vs. HTML clients
 Later abandoned in favor of standard open source frameworks
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
History: „The Framework“ (2002 – today)
 Full-stack three-layer web framework
 Optimized for Stephan‘s former company
 10+ applications featuring a million lines of code
 Lessons learnt:
 Implementing our own framework shielded developers from the fast-paced Java community
 Technologies avoided: Struts, EJB 2.x, ...
 It‘s possible to evolve a framework over 10+ years without breaking compatibility!
 Maintaining a company framework costs roughly 5-10% of the total budget
 Writing your own framework still pays if you get the opportunity to optimize it for your
company‘s needs
 Frameworks don‘t need a name to be successful 
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
History: Liferay and PrimeFaces (2010-2015)
 Goal: migrate „the framework“ to LifeRay
 Turned out to be impossible
 Portlets enforced a different project setup
 Quick adoption of PrimeFaces, CDI and Hibernate
 Later abandoned Liferay in favor of Tomcat
 Portlets proved to be too fine-grained modules for most real-world applications
 Lessons learnt:
 Always choose frameworks matching your requirements and your company culture
 Standard Java frameworks have grown up (roughly around 2005-2010)
 Even today, developer productivity is still worse than using the former, highly optimized
company framework!
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
History: AngularPrimeDart (2012-2013)
 Goal: migrate Rudy de Busscher‘s AngularPrime to the Dart language
 Result:
 Nice and useful set of UI components
 Which were largely ignored by the broad market
 Lessons learnt:
 The time is ripe to move logic to the client
 Doing so reduces both network traffic and server load significantly
 Interesting programming languages don‘t always convince the market
© OPITZ CONSULTING 2016 OC Powerpoint CI 2017 V 0.91 Seite 11
(End of all) History: AngularFaces and BootsFaces
 AngularFaces:
 Replace AJAX by AngularJS
 Add rapid prototyping
 Simplify i18n
 BootsFaces:
 Add Bootstrap to JSF
 Make JSF applications beautiful...
 ... without effort!
 Simplified approach to AJAX
 Powerful search expressions
 Common goals:
 Make JSF simple
 Boost developer productivity
 Improve the user experience
© OPITZ CONSULTING 2016 Seite 12
BootsFaces in a Nutshell
2
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces in a Nutshell: Numbers
 JSF component framework
 4 developers
 20 releases
 62 pull requests
 70+ components
 400 solved issues
 1200 commits
 2000 downloads per month
 65000 lines of HTML in our showcase
 68000 lines of Java code
0.9.00.8.50.8.0 1.0.0
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces in a Nutshell: Goals
 Add Bootstrap to JSF
 Used to be a hard task in JSF until 2.1!
 Pass-through attributes made the integration of Bootstrap easier
 Make JSF compact and simple
 Code that‘s not there is code you don‘t have to maintain!
 Make AJAX simple and more intuitive
 Evolving the standard JSF API
 Create professional looking Enterprise Web Applications
 Currently Bootstrap 3.x, Bootstrap 4 still in Alpha (ETA 2017)
 BootsFaces 2.0 will support Bootstrap 4
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces in a Nutshell: Example
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces in a Nutshell: Generated Code
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces in a Nutshell: Compatibility
 PrimeFaces (within certain limits)
 Different approaches to CSS cause incompatibilities
 OmniFaces
 HighFaces
 GISFaces (no example in our showcase yet)
 ButterFaces (work in progress)
 JSF 2.0 – JSF 2.3
 Java 7 + 8
 Java 6 (within certain limits)
© OPITZ CONSULTING 2016 Seite 18
BootsFaces Deep Dive
 Separate renderers?
 Large-scale refactoring
 Xtext
 AddResourcesHandler
 Gradle vs. and Maven
 PatternFly
 Relaxed, HTML-like coding style
 Anything else?
3
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: Separating Renderers
 Original approach: Components render themselves
 Less code
 Simple programming model
 New approach: separate renderers and components
 More flexibility
 Developers can modify and improve our implementations easily
 Code generators reduce the amount of extra work
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: Large-Scale Refactoring
 We ran several large-scale refactorings and restructurings:
 Separating renderers from components as an afterthought
 Moving every component into a package of their own
 Adding AJAX to every component
 Adding layout attributes to every component
 Adding and maintaining the copyright header in every class
 Getting rid of annotations after implementing 40+ components
 Key points to success:
 Tool support
 Generate as much code as possible
 Writing utility programs manipulating the source code
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: XText
 DSL + code generator
 Simplified component definition
 Generate everything:
 Component class
 Renderer class (stub)
 Taglib
 Documentation (stub)
 Disadvantages:
 Only available for Eclipse
 Pull-request contributors ignore the plugin
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
PrimeFaces Approach to Code Generation
 Maven plugin for code generation
 Source: taglib files + partial Java classes adding non-standard code
 Component classes are (mostly) generated from the partial taglib files
 Advantages:
 Works with every IDE
 Code generator is every bit as powerful as its BootsFaces counterpart
 Writing a Maven plugin is surprisingly easy
 Disadvantages:
 Source code project is incomplete until the code generator runs
 It takes some time and effort to build PrimeFaces from source
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
Alternative Approaches to Code Generation
Ideas suggested by Thomas Andraschko:
 Sourcecode: abstract classes + Java annotations
  you‘ve got a syntactically correct project
  The sourcecode is Java, not XML
 Code generator options:
 Custom Maven plugin
 Java Agents
 Java Agents:
 Standardized approach to code generation that comes out-of-the box with Java
 Requires an additional JVM parameter
 Modifies the byte code at load time (within certain limits)
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: AddResourcesHandler
 Challenge:
 Sometimes, developers need to add their own version of jQuery etc.
 JSF always adds a fixed set of resource files (if you‘re using annotations)
 Solution:
 Implement an AddResourcesHandler to avoid adding resources provided by the user
 Challenge:
 Need to modify the folder name of resources to support theming
 Solution:
 AddResourcesHandler modifies resource folder names on the fly
 This is the most crucial class of BootsFaces!
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: Getting Rid of Annotations
 JSF simplifies component development by providing annotations
 Problem: annotations are immutable
 Resource files are always added
 ... even if there‘s already a different version provided by the programmer
 E.g. jQuery, jQueryUI
 Resources are added in the wrong order
 BootsFaces moved every @ResourceDependency to Java code
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: Getting Rid of Annotations
Traditional declarative approach:
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: Getting Rid of Annotations
BootsFaces programmatic approach:
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: Two Build Systems
 Gradle: powerful build system generating 13 themes in a minute
 Installation usually takes some time
 Maven: simple build system
 Easy start: usually up and running in a minute
 Most pull-request contributors prefer Maven
 Consumes the JS and CSS files generated by Gradle
 Simple upload to Maven Central
 Challenge:
 Keep the Maven build in sync with the Gradle build!
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: PatternFly
 Initial support is introduced with BootsFaces 1.0
 PatternFly is a HTML5 UI framework for Enterprise Web Applications
 Based on Bootstrap 3.x it‘s an open source Project developed by Red Hat
 BootsFaces and PatternFly share almost the same set of widgets
 The first step has been to add it to BootsFaces as a theme
 Adds a collection of UI design patterns that solve common design problems
considering the needs of complex enterprise IT software
 The goal is to give BootsFaces users the chance to develop professional
looking Enterprise Web Applications
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
BootsFaces Deep Dive: BootsFacesDecorator
 Relaxed, HTML-like coding style:
 First port of an AngularFaces idea to BootsFaces
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
© OPITZ CONSULTING 2016 Seite 32
AngularFaces in a Nutshell
 It‘s a Plugin!
 AngularJS
 Rapid Prototyping
 Reception and Market Share
 What about the Future?
4
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces in a Nutshell: It‘s a Plugin!
Unorthodox JSF framework:
 No components
 Plugin hooking itself in JSF 2.x and PrimeFaces
 Enhance existing JSF components
 Theoretically compatible with every JSF component framework
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces in a Nutshell: Integrating AngularJS
 Central idea:
 Add AngularJS to existing JSF applications
 Replace AJAX by AngularJS
 Bridge technology, preparing the road to AngularJS
 Challenge:
 Two complex and incompatible life cycles
 Solution:
 JSF first
 Integrate AngularJS into the JSF life cycle
 Every JSF page is a SPA
 AngularFaces apps consist of several, independent SPAs
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces in a Nutshell: Dealing with <div> tags
 Most AngularJS tutorials rely heavily on <div> tags
 <div> is no first class citizen of JSF
 Solution:
 Convert <div> and <span> into first-class citizens
 ... by creating a special component: <pui-div>
 ... and implementing a TagDecorator
  AngularFaces requires JSF 2.2 or higher
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces in a Nutshell: Rapid Prototying
 Simplyfy common tasks:
 Add labels and FacesMessages automatically
 Add i18n support automatically
 Optional relaxed, HTML-like coding style
 Omit most h: prefixes of standard JSF
 If BootsFaces is found, also omit most b: prefixes
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces in a Nutshell: Reception and Market Share
 Warm reception among JSF framework developers
 Kito Mann, Reza Rahman, Çağatay Çivici
 Scepticism among JSF users
 Up to 600 downloads per month
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces in a Nutshell: What about the Future?
 Current status:
 Finished, only need some polishing once in a while
 One active contributor: Oscar Mendel
 Angular2:
 No plans for Angular2 support for technical reasons
 Angular2 applications can‘t be remotely controlled by JSF
 Alternative:
 Angular2 controls a JSF application
 You can do that today, even without AngularFaces!
© OPITZ CONSULTING 2016 Seite 39
AngularFaces Deep Dive
5
BootsFaces Deep Dive
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces Deep Dive: Incompatible Life Cycles
 Both JSF and AngularJS have their
own life cycle
 AngularFaces merges these two life
cycles
 Challenge: each framework believes
it is the owner of the DOM
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces Deep Dive: Incompatible Life Cycles
 Both JSF and AngularJS have their
own life cycle
 AngularFaces merges these two life
cycles
 Challenge: each framework believes
it is the owner of the DOM
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces Deep Dive: Simplified View
AngularFaces modifies four
components:
 the HTML page
 the NG controller
 the JSF controller
 the JSF renderer
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
Injecting the JSF model into the ngModel
 Most difficult challenge of AngularFaces
 AngularFaces goes into some lengths to
generate as much code as possible for
you (so you have to write less)
 Still requires some help by the
developer, who has to call
initJSFScope()
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
AngularFaces Deep Dive: Updating the JSF Bean
 Basic idea: AngularFaces adds a virtual tag,
PuiSync, to each AngularJS controller
 PuiSync generates a hidden input field updated
by AngularJS
 The values transmitted by PuiSync are evaluated
by AngularViewContextWrapper as part of the
regular decoding process
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
Gathering Data for initJSFScope($scope)
 The tag decorators play a crucial role
 The AngularTagDecorator detects mustache
expressions, convert them to JSF EL
expressions and stores them in the session
 Later, PuiModelSync.encode() generates
initJSFScope() using the attribute list stored
in the session
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
FindNGControllerCallback
Two responsibilities:
 Adds the PuiModelSync tag to each
ngController
 „Automagically“ adds labels and
messages to input fields
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
Simplified Internationalization
 Mostly implemented in the
TranslationCallback class
 The most common text attributes are
translated to foreign languages by calling
the i18n.translate() method as part of the
PreRenderViewEvent
 ac:include is a language-aware ui:include
(adding the language as a suffix to the file
name)
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
Adding Labels and Messages „automagically“
 Already described at the
FindNGControllerCallback section
 Can be deactivated
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
Bringing the Bean Validation API to the Client
 Implemented in the
AddTypeInformationCallback class
 The type information is added to the JSF tags
as part of the PreRenderViewEvent
© OPITZ CONSULTING 2016 BootsFaces Deep Dive
JavaScript Library Dependency Management
 The JavaScript dependencies of
AngularFaces are added on-the-fly as
part of the PreRenderViewEvent
 Implemented in PuiAngularTransformer
 Predecessor of the BootsFaces
AddResourcesHandler
© OPITZ CONSULTING 2016 Seite 51BootsFaces Deep Dive
Any questions?
 It‘s your turn!
© OPITZ CONSULTING 2016
 überraschend mehr Möglichkeiten!
@OC_WIRE
OPITZCONSULTING
opitzconsulting
opitz-consulting-bcb8-1009116
WWW.OPITZ-CONSULTING.COM
Riccardo Massera
BootsFaces teamlead
ric.massera@gmail.com
BootsFaces Deep Dive
© OPITZ CONSULTING 2016
 überraschend mehr Möglichkeiten!
@OC_WIRE
OPITZCONSULTING
opitzconsulting
opitz-consulting-bcb8-1009116
WWW.OPITZ-CONSULTING.COM
Let‘s make the web a place to be!
Stephan Rauh
Leiter CC „moderne Clients und agile Architekturen“
0172-205 59 66
Stephan.Rauh@opitz-consulting.com
@beyondjava
http://www.beyondjava.net
BootsFaces Deep Dive

Contenu connexe

Tendances

Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!VMware Tanzu
 
Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Mee Nam Lee
 
Reactive Data Access with Spring Data
Reactive Data Access with Spring DataReactive Data Access with Spring Data
Reactive Data Access with Spring DataVMware Tanzu
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurTakashi Ito
 
How to use Microsoft Teams
How to use Microsoft Teams How to use Microsoft Teams
How to use Microsoft Teams Edward Kuo
 
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateDrupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateAngela Byron
 
Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012Matt Raible
 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Matt Raible
 
Discover Salesforce Commerce Cloud and Vlocity Integration Patterns
Discover Salesforce Commerce Cloud and Vlocity Integration PatternsDiscover Salesforce Commerce Cloud and Vlocity Integration Patterns
Discover Salesforce Commerce Cloud and Vlocity Integration PatternsEva Mave Ng
 
What’s new xen server 6.5 &amp; xendesktop 7.6
What’s new xen server 6.5 &amp; xendesktop 7.6What’s new xen server 6.5 &amp; xendesktop 7.6
What’s new xen server 6.5 &amp; xendesktop 7.6solarisyougood
 
Best Practices - By Lofi Dewanto
Best Practices - By Lofi DewantoBest Practices - By Lofi Dewanto
Best Practices - By Lofi DewantoGWTcon
 
Consumer Driven Contracts and Your Microservice Architecture
Consumer Driven Contracts and Your Microservice ArchitectureConsumer Driven Contracts and Your Microservice Architecture
Consumer Driven Contracts and Your Microservice ArchitectureVMware Tanzu
 
S103 cics cloud and dev ops agility
S103 cics cloud and dev ops agilityS103 cics cloud and dev ops agility
S103 cics cloud and dev ops agilitynick_garrod
 
Zabbix conference2015 daisukeikeda
Zabbix conference2015 daisukeikedaZabbix conference2015 daisukeikeda
Zabbix conference2015 daisukeikedaDaisuke Ikeda
 
Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...
Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...
Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...Eva Mave Ng
 

Tendances (17)

Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!Full Steam Ahead, R2DBC!
Full Steam Ahead, R2DBC!
 
Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)Oracle Developer Cloud - 소개 (신기능 포함)
Oracle Developer Cloud - 소개 (신기능 포함)
 
Reactive Data Access with Spring Data
Reactive Data Access with Spring DataReactive Data Access with Spring Data
Reactive Data Access with Spring Data
 
Automation day red hat ansible
   Automation day red hat ansible    Automation day red hat ansible
Automation day red hat ansible
 
Java EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil GaurJava EE, What's Next? by Anil Gaur
Java EE, What's Next? by Anil Gaur
 
How to use Microsoft Teams
How to use Microsoft Teams How to use Microsoft Teams
How to use Microsoft Teams
 
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateDrupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
 
Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012
 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
 
Discover Salesforce Commerce Cloud and Vlocity Integration Patterns
Discover Salesforce Commerce Cloud and Vlocity Integration PatternsDiscover Salesforce Commerce Cloud and Vlocity Integration Patterns
Discover Salesforce Commerce Cloud and Vlocity Integration Patterns
 
What’s new xen server 6.5 &amp; xendesktop 7.6
What’s new xen server 6.5 &amp; xendesktop 7.6What’s new xen server 6.5 &amp; xendesktop 7.6
What’s new xen server 6.5 &amp; xendesktop 7.6
 
Best Practices - By Lofi Dewanto
Best Practices - By Lofi DewantoBest Practices - By Lofi Dewanto
Best Practices - By Lofi Dewanto
 
Webinar: "Continuous Delivery with Jenkins"
Webinar: "Continuous Delivery with Jenkins"Webinar: "Continuous Delivery with Jenkins"
Webinar: "Continuous Delivery with Jenkins"
 
Consumer Driven Contracts and Your Microservice Architecture
Consumer Driven Contracts and Your Microservice ArchitectureConsumer Driven Contracts and Your Microservice Architecture
Consumer Driven Contracts and Your Microservice Architecture
 
S103 cics cloud and dev ops agility
S103 cics cloud and dev ops agilityS103 cics cloud and dev ops agility
S103 cics cloud and dev ops agility
 
Zabbix conference2015 daisukeikeda
Zabbix conference2015 daisukeikedaZabbix conference2015 daisukeikeda
Zabbix conference2015 daisukeikeda
 
Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...
Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...
Designing Apps for Runtime Fabric: Logging, Monitoring & Object Store Persist...
 

En vedette

Die SOA Suite in der Amazon Cloud sicher betreiben
Die SOA Suite in der Amazon Cloud sicher betreiben Die SOA Suite in der Amazon Cloud sicher betreiben
Die SOA Suite in der Amazon Cloud sicher betreiben OPITZ CONSULTING Deutschland
 
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13OPITZ CONSULTING Deutschland
 
BootsFaces and AngularFaces - Modern HTML5 for JSF developers
BootsFaces and AngularFaces - Modern HTML5 for JSF developers BootsFaces and AngularFaces - Modern HTML5 for JSF developers
BootsFaces and AngularFaces - Modern HTML5 for JSF developers OPITZ CONSULTING Deutschland
 
TWT Casestudy: Multinationaler Relaunch für DKV Euro Service
TWT Casestudy: Multinationaler Relaunch für DKV Euro ServiceTWT Casestudy: Multinationaler Relaunch für DKV Euro Service
TWT Casestudy: Multinationaler Relaunch für DKV Euro ServiceTWT
 
DriveWorks World 2016 - 13 lessons in 12 years
DriveWorks World 2016  - 13 lessons in 12 yearsDriveWorks World 2016  - 13 lessons in 12 years
DriveWorks World 2016 - 13 lessons in 12 yearsRazorleaf Corporation
 
Automating With Excel An Object Oriented Approach
Automating  With  Excel    An  Object  Oriented  ApproachAutomating  With  Excel    An  Object  Oriented  Approach
Automating With Excel An Object Oriented ApproachRazorleaf Corporation
 
AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)
AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)
AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)Razorleaf Corporation
 
COE 2016 Live demo How to get to full Digitalization
COE 2016 Live demo How to get to full DigitalizationCOE 2016 Live demo How to get to full Digitalization
COE 2016 Live demo How to get to full DigitalizationRazorleaf Corporation
 
Autdoesk PLM 360 to PDM Integration with Jitterbit
Autdoesk PLM 360 to PDM Integration with JitterbitAutdoesk PLM 360 to PDM Integration with Jitterbit
Autdoesk PLM 360 to PDM Integration with JitterbitRazorleaf Corporation
 
Deploying DriveWorks Throughout the Organization
Deploying DriveWorks Throughout the OrganizationDeploying DriveWorks Throughout the Organization
Deploying DriveWorks Throughout the OrganizationRazorleaf Corporation
 
SolidWorks Modeling for Design Automation
SolidWorks Modeling for Design AutomationSolidWorks Modeling for Design Automation
SolidWorks Modeling for Design AutomationRazorleaf Corporation
 

En vedette (17)

Der Mythos der Trunk-basierten Entwicklung
Der Mythos der Trunk-basierten EntwicklungDer Mythos der Trunk-basierten Entwicklung
Der Mythos der Trunk-basierten Entwicklung
 
Die SOA Suite in der Amazon Cloud sicher betreiben
Die SOA Suite in der Amazon Cloud sicher betreiben Die SOA Suite in der Amazon Cloud sicher betreiben
Die SOA Suite in der Amazon Cloud sicher betreiben
 
API Management - Why it matters!
API Management - Why it matters!API Management - Why it matters!
API Management - Why it matters!
 
Was die IT von der Luftfahrt lernen kann
Was die IT von der Luftfahrt lernen kannWas die IT von der Luftfahrt lernen kann
Was die IT von der Luftfahrt lernen kann
 
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
Tipps & Tricks zum Aufbau einer Unternehmenscloud mit CC13
 
BootsFaces and AngularFaces - Modern HTML5 for JSF developers
BootsFaces and AngularFaces - Modern HTML5 for JSF developers BootsFaces and AngularFaces - Modern HTML5 for JSF developers
BootsFaces and AngularFaces - Modern HTML5 for JSF developers
 
TWT Casestudy: Multinationaler Relaunch für DKV Euro Service
TWT Casestudy: Multinationaler Relaunch für DKV Euro ServiceTWT Casestudy: Multinationaler Relaunch für DKV Euro Service
TWT Casestudy: Multinationaler Relaunch für DKV Euro Service
 
COE 2016: 10 Cool Tools for 2016
COE 2016: 10 Cool Tools for 2016COE 2016: 10 Cool Tools for 2016
COE 2016: 10 Cool Tools for 2016
 
DriveWorks World 2016 - 13 lessons in 12 years
DriveWorks World 2016  - 13 lessons in 12 yearsDriveWorks World 2016  - 13 lessons in 12 years
DriveWorks World 2016 - 13 lessons in 12 years
 
Automating With Excel An Object Oriented Approach
Automating  With  Excel    An  Object  Oriented  ApproachAutomating  With  Excel    An  Object  Oriented  Approach
Automating With Excel An Object Oriented Approach
 
AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)
AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)
AU 2015: Enterprise, Beam Me Up: Inphi's Enterprise PLM Solution (PPT)
 
COE 2016 Live demo How to get to full Digitalization
COE 2016 Live demo How to get to full DigitalizationCOE 2016 Live demo How to get to full Digitalization
COE 2016 Live demo How to get to full Digitalization
 
Autdoesk PLM 360 to PDM Integration with Jitterbit
Autdoesk PLM 360 to PDM Integration with JitterbitAutdoesk PLM 360 to PDM Integration with Jitterbit
Autdoesk PLM 360 to PDM Integration with Jitterbit
 
Deploying DriveWorks Throughout the Organization
Deploying DriveWorks Throughout the OrganizationDeploying DriveWorks Throughout the Organization
Deploying DriveWorks Throughout the Organization
 
Automating Analysis with the API
Automating Analysis with the APIAutomating Analysis with the API
Automating Analysis with the API
 
SolidWorks Modeling for Design Automation
SolidWorks Modeling for Design AutomationSolidWorks Modeling for Design Automation
SolidWorks Modeling for Design Automation
 
Automating SolidWorks with Excel
Automating SolidWorks with ExcelAutomating SolidWorks with Excel
Automating SolidWorks with Excel
 

Similaire à BootsFaces, AngularFaces und ein Blck unter die Motorhaube

Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsCaesar Chi
 
Enterprise DevOps Series: Using VS Code & Zowe
Enterprise DevOps Series: Using VS Code & ZoweEnterprise DevOps Series: Using VS Code & Zowe
Enterprise DevOps Series: Using VS Code & ZoweDevOps.com
 
Guide to Vite JS – Modern Fron-End Development Tool
Guide to Vite JS – Modern Fron-End Development ToolGuide to Vite JS – Modern Fron-End Development Tool
Guide to Vite JS – Modern Fron-End Development ToolAlbiorix Technology
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsRyan Roemer
 
Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...
Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...
Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...Edureka!
 
001. Introduction about React
001. Introduction about React001. Introduction about React
001. Introduction about ReactBinh Quan Duc
 
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021Katy Slemon
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx75waytechnologies
 
A modern Developer [2016]
A modern Developer [2016]A modern Developer [2016]
A modern Developer [2016]Tommy Ziegler
 
Node.js Development Tools
 Node.js Development Tools Node.js Development Tools
Node.js Development ToolsSofiaCarter4
 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016Amazon Web Services
 
Kendo UI workshop introduction - PUG Baltic Annual Conference 2017
Kendo UI workshop introduction - PUG Baltic Annual Conference 2017Kendo UI workshop introduction - PUG Baltic Annual Conference 2017
Kendo UI workshop introduction - PUG Baltic Annual Conference 2017Alen Leit
 
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
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum SlidesAbhishek Gupta
 
Webinar: End-to-End CI/CD with GitLab and DC/OS
Webinar: End-to-End CI/CD with GitLab and DC/OSWebinar: End-to-End CI/CD with GitLab and DC/OS
Webinar: End-to-End CI/CD with GitLab and DC/OSMesosphere Inc.
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Brian Culver
 
Micro Frontends.pptx
Micro Frontends.pptxMicro Frontends.pptx
Micro Frontends.pptxShanAli738907
 
codeBeamer Eclipse DemoCamp-23.11.2010
codeBeamer Eclipse DemoCamp-23.11.2010codeBeamer Eclipse DemoCamp-23.11.2010
codeBeamer Eclipse DemoCamp-23.11.2010Intland Software GmbH
 

Similaire à BootsFaces, AngularFaces und ein Blck unter die Motorhaube (20)

Morden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web AppsMorden F2E Education - Think of Progressive Web Apps
Morden F2E Education - Think of Progressive Web Apps
 
Enterprise DevOps Series: Using VS Code & Zowe
Enterprise DevOps Series: Using VS Code & ZoweEnterprise DevOps Series: Using VS Code & Zowe
Enterprise DevOps Series: Using VS Code & Zowe
 
Guide to Vite JS – Modern Fron-End Development Tool
Guide to Vite JS – Modern Fron-End Development ToolGuide to Vite JS – Modern Fron-End Development Tool
Guide to Vite JS – Modern Fron-End Development Tool
 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
 
Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...
Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...
Dockerizing An Angular Application Using Git, Jenkins & Docker! | DevOps Tuto...
 
001. Introduction about React
001. Introduction about React001. Introduction about React
001. Introduction about React
 
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
Top 10 Node.JS Frameworks To Gear Up Your Web App Development in 2021
 
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
8 Node.js Frameworks Every Developer Should Know [UPDATED].pptx
 
A modern Developer [2016]
A modern Developer [2016]A modern Developer [2016]
A modern Developer [2016]
 
Node.js Development Tools
 Node.js Development Tools Node.js Development Tools
Node.js Development Tools
 
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
DevOps as a Pathway to AWS | AWS Public Sector Summit 2016
 
Kendo UI workshop introduction - PUG Baltic Annual Conference 2017
Kendo UI workshop introduction - PUG Baltic Annual Conference 2017Kendo UI workshop introduction - PUG Baltic Annual Conference 2017
Kendo UI workshop introduction - PUG Baltic Annual Conference 2017
 
Project Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium ParisProject Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium Paris
 
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
 
Netbeans65 Osum Slides
Netbeans65 Osum SlidesNetbeans65 Osum Slides
Netbeans65 Osum Slides
 
Webinar: End-to-End CI/CD with GitLab and DC/OS
Webinar: End-to-End CI/CD with GitLab and DC/OSWebinar: End-to-End CI/CD with GitLab and DC/OS
Webinar: End-to-End CI/CD with GitLab and DC/OS
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
Micro Frontends.pptx
Micro Frontends.pptxMicro Frontends.pptx
Micro Frontends.pptx
 
codeBeamer Eclipse DemoCamp-23.11.2010
codeBeamer Eclipse DemoCamp-23.11.2010codeBeamer Eclipse DemoCamp-23.11.2010
codeBeamer Eclipse DemoCamp-23.11.2010
 

Plus de OPITZ CONSULTING Deutschland

OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OPITZ CONSULTING Deutschland
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OPITZ CONSULTING Deutschland
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungOPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOPITZ CONSULTING Deutschland
 

Plus de OPITZ CONSULTING Deutschland (20)

OC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle LizenzierungOC|Webcast: Grundlagen der Oracle Lizenzierung
OC|Webcast: Grundlagen der Oracle Lizenzierung
 
OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021OC|Webcast "Java heute" vom 28.09.2021
OC|Webcast "Java heute" vom 28.09.2021
 
OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021OC|Webcast "Java heute" vom 24.08.2021
OC|Webcast "Java heute" vom 24.08.2021
 
OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"OC|Webcast "Daten wirklich nutzen"
OC|Webcast "Daten wirklich nutzen"
 
OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"OC|Webcast "Willkommen in der Cloud!"
OC|Webcast "Willkommen in der Cloud!"
 
OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"OC|Webcast "Die neue Welt der Virtualisierung"
OC|Webcast "Die neue Welt der Virtualisierung"
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
 
OC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-LizenzierungOC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-Lizenzierung
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
 
OC|Weekly Talk The Power of DevOps…
OC|Weekly Talk  The Power of DevOps…OC|Weekly Talk  The Power of DevOps…
OC|Weekly Talk The Power of DevOps…
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring
 
OC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remoteOC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remote
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud Nutzung
 
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
 
OC|Weekly Talk Remote Design Thinking
OC|Weekly Talk Remote Design ThinkingOC|Weekly Talk Remote Design Thinking
OC|Weekly Talk Remote Design Thinking
 

Dernier

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Dernier (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

BootsFaces, AngularFaces und ein Blck unter die Motorhaube

  • 1. © OPITZ CONSULTING 2016  überraschend mehr Möglichkeiten! © OPITZ CONSULTING 2016 Deep Dive Riccardo Massera (BootsFaces team lead) Stephan Rauh (Leiter CC „modern Clients“) BootsFaces and AngularFaces
  • 2. © OPITZ CONSULTING 2016 Seite 2 What‘s it all about 1 2 3 4 5 History BootsFaces in a Nutshell BootsFaces Deep Dive AngularFaces in a Nutshell AngularFaces Deep Dive BootsFaces Deep Dive
  • 3. © OPITZ CONSULTING 2016 Seite 3 Breaking News 0 BootsFaces Deep Dive
  • 4. © OPITZ CONSULTING 2016 Image source: 留米市民(Kurume-Shimin) https://commons.wikimedia.org/wiki/File:ColorfulFireworks.png, BootsFaces 1.0 has been released!
  • 5. © OPITZ CONSULTING 2016 Seite 5 History  Company frameworks: Medusa, Perseus and „The Framework“  PrimeFaces and Liferay  AngularPrime and AngularDartPrime  AngularFaces  BootsFaces 1 BootsFaces Deep Dive
  • 6. © OPITZ CONSULTING 2016 BootsFaces Deep Dive History: Medusa (1997-2000)  Stephan‘s first company framework  Full-stack framework: persistence and UI  Two-layer desktop application architecture  Based on SQLWindows / Centura  Challenge:  Buggy programming language, buggy libraries (in 1997)  Solution:  Circumvent the bugs by providing your own framework  Lessons learnt:  Writing a framework pays!
  • 7. © OPITZ CONSULTING 2016 BootsFaces Deep Dive History: Perseus (2000 – 2005)  Successor of Medusa  Full-stack 3-layer web framework  Frequent refactoring  Technologies examined:  C++ with Roguewave vs. Java  Rational Rose vs. TogetherJ  Distributed computing with CORBA  Applets vs. HTML clients  Later abandoned in favor of standard open source frameworks
  • 8. © OPITZ CONSULTING 2016 BootsFaces Deep Dive History: „The Framework“ (2002 – today)  Full-stack three-layer web framework  Optimized for Stephan‘s former company  10+ applications featuring a million lines of code  Lessons learnt:  Implementing our own framework shielded developers from the fast-paced Java community  Technologies avoided: Struts, EJB 2.x, ...  It‘s possible to evolve a framework over 10+ years without breaking compatibility!  Maintaining a company framework costs roughly 5-10% of the total budget  Writing your own framework still pays if you get the opportunity to optimize it for your company‘s needs  Frameworks don‘t need a name to be successful 
  • 9. © OPITZ CONSULTING 2016 BootsFaces Deep Dive History: Liferay and PrimeFaces (2010-2015)  Goal: migrate „the framework“ to LifeRay  Turned out to be impossible  Portlets enforced a different project setup  Quick adoption of PrimeFaces, CDI and Hibernate  Later abandoned Liferay in favor of Tomcat  Portlets proved to be too fine-grained modules for most real-world applications  Lessons learnt:  Always choose frameworks matching your requirements and your company culture  Standard Java frameworks have grown up (roughly around 2005-2010)  Even today, developer productivity is still worse than using the former, highly optimized company framework!
  • 10. © OPITZ CONSULTING 2016 BootsFaces Deep Dive History: AngularPrimeDart (2012-2013)  Goal: migrate Rudy de Busscher‘s AngularPrime to the Dart language  Result:  Nice and useful set of UI components  Which were largely ignored by the broad market  Lessons learnt:  The time is ripe to move logic to the client  Doing so reduces both network traffic and server load significantly  Interesting programming languages don‘t always convince the market
  • 11. © OPITZ CONSULTING 2016 OC Powerpoint CI 2017 V 0.91 Seite 11 (End of all) History: AngularFaces and BootsFaces  AngularFaces:  Replace AJAX by AngularJS  Add rapid prototyping  Simplify i18n  BootsFaces:  Add Bootstrap to JSF  Make JSF applications beautiful...  ... without effort!  Simplified approach to AJAX  Powerful search expressions  Common goals:  Make JSF simple  Boost developer productivity  Improve the user experience
  • 12. © OPITZ CONSULTING 2016 Seite 12 BootsFaces in a Nutshell 2 BootsFaces Deep Dive
  • 13. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces in a Nutshell: Numbers  JSF component framework  4 developers  20 releases  62 pull requests  70+ components  400 solved issues  1200 commits  2000 downloads per month  65000 lines of HTML in our showcase  68000 lines of Java code 0.9.00.8.50.8.0 1.0.0
  • 14. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces in a Nutshell: Goals  Add Bootstrap to JSF  Used to be a hard task in JSF until 2.1!  Pass-through attributes made the integration of Bootstrap easier  Make JSF compact and simple  Code that‘s not there is code you don‘t have to maintain!  Make AJAX simple and more intuitive  Evolving the standard JSF API  Create professional looking Enterprise Web Applications  Currently Bootstrap 3.x, Bootstrap 4 still in Alpha (ETA 2017)  BootsFaces 2.0 will support Bootstrap 4
  • 15. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces in a Nutshell: Example
  • 16. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces in a Nutshell: Generated Code
  • 17. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces in a Nutshell: Compatibility  PrimeFaces (within certain limits)  Different approaches to CSS cause incompatibilities  OmniFaces  HighFaces  GISFaces (no example in our showcase yet)  ButterFaces (work in progress)  JSF 2.0 – JSF 2.3  Java 7 + 8  Java 6 (within certain limits)
  • 18. © OPITZ CONSULTING 2016 Seite 18 BootsFaces Deep Dive  Separate renderers?  Large-scale refactoring  Xtext  AddResourcesHandler  Gradle vs. and Maven  PatternFly  Relaxed, HTML-like coding style  Anything else? 3 BootsFaces Deep Dive
  • 19. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: Separating Renderers  Original approach: Components render themselves  Less code  Simple programming model  New approach: separate renderers and components  More flexibility  Developers can modify and improve our implementations easily  Code generators reduce the amount of extra work
  • 20. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: Large-Scale Refactoring  We ran several large-scale refactorings and restructurings:  Separating renderers from components as an afterthought  Moving every component into a package of their own  Adding AJAX to every component  Adding layout attributes to every component  Adding and maintaining the copyright header in every class  Getting rid of annotations after implementing 40+ components  Key points to success:  Tool support  Generate as much code as possible  Writing utility programs manipulating the source code
  • 21. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: XText  DSL + code generator  Simplified component definition  Generate everything:  Component class  Renderer class (stub)  Taglib  Documentation (stub)  Disadvantages:  Only available for Eclipse  Pull-request contributors ignore the plugin
  • 22. © OPITZ CONSULTING 2016 BootsFaces Deep Dive PrimeFaces Approach to Code Generation  Maven plugin for code generation  Source: taglib files + partial Java classes adding non-standard code  Component classes are (mostly) generated from the partial taglib files  Advantages:  Works with every IDE  Code generator is every bit as powerful as its BootsFaces counterpart  Writing a Maven plugin is surprisingly easy  Disadvantages:  Source code project is incomplete until the code generator runs  It takes some time and effort to build PrimeFaces from source
  • 23. © OPITZ CONSULTING 2016 BootsFaces Deep Dive Alternative Approaches to Code Generation Ideas suggested by Thomas Andraschko:  Sourcecode: abstract classes + Java annotations   you‘ve got a syntactically correct project   The sourcecode is Java, not XML  Code generator options:  Custom Maven plugin  Java Agents  Java Agents:  Standardized approach to code generation that comes out-of-the box with Java  Requires an additional JVM parameter  Modifies the byte code at load time (within certain limits)
  • 24. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: AddResourcesHandler  Challenge:  Sometimes, developers need to add their own version of jQuery etc.  JSF always adds a fixed set of resource files (if you‘re using annotations)  Solution:  Implement an AddResourcesHandler to avoid adding resources provided by the user  Challenge:  Need to modify the folder name of resources to support theming  Solution:  AddResourcesHandler modifies resource folder names on the fly  This is the most crucial class of BootsFaces!
  • 25. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: Getting Rid of Annotations  JSF simplifies component development by providing annotations  Problem: annotations are immutable  Resource files are always added  ... even if there‘s already a different version provided by the programmer  E.g. jQuery, jQueryUI  Resources are added in the wrong order  BootsFaces moved every @ResourceDependency to Java code
  • 26. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: Getting Rid of Annotations Traditional declarative approach:
  • 27. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: Getting Rid of Annotations BootsFaces programmatic approach:
  • 28. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: Two Build Systems  Gradle: powerful build system generating 13 themes in a minute  Installation usually takes some time  Maven: simple build system  Easy start: usually up and running in a minute  Most pull-request contributors prefer Maven  Consumes the JS and CSS files generated by Gradle  Simple upload to Maven Central  Challenge:  Keep the Maven build in sync with the Gradle build!
  • 29. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: PatternFly  Initial support is introduced with BootsFaces 1.0  PatternFly is a HTML5 UI framework for Enterprise Web Applications  Based on Bootstrap 3.x it‘s an open source Project developed by Red Hat  BootsFaces and PatternFly share almost the same set of widgets  The first step has been to add it to BootsFaces as a theme  Adds a collection of UI design patterns that solve common design problems considering the needs of complex enterprise IT software  The goal is to give BootsFaces users the chance to develop professional looking Enterprise Web Applications
  • 30. © OPITZ CONSULTING 2016 BootsFaces Deep Dive BootsFaces Deep Dive: BootsFacesDecorator  Relaxed, HTML-like coding style:  First port of an AngularFaces idea to BootsFaces
  • 31. © OPITZ CONSULTING 2016 BootsFaces Deep Dive
  • 32. © OPITZ CONSULTING 2016 Seite 32 AngularFaces in a Nutshell  It‘s a Plugin!  AngularJS  Rapid Prototyping  Reception and Market Share  What about the Future? 4 BootsFaces Deep Dive
  • 33. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces in a Nutshell: It‘s a Plugin! Unorthodox JSF framework:  No components  Plugin hooking itself in JSF 2.x and PrimeFaces  Enhance existing JSF components  Theoretically compatible with every JSF component framework
  • 34. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces in a Nutshell: Integrating AngularJS  Central idea:  Add AngularJS to existing JSF applications  Replace AJAX by AngularJS  Bridge technology, preparing the road to AngularJS  Challenge:  Two complex and incompatible life cycles  Solution:  JSF first  Integrate AngularJS into the JSF life cycle  Every JSF page is a SPA  AngularFaces apps consist of several, independent SPAs
  • 35. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces in a Nutshell: Dealing with <div> tags  Most AngularJS tutorials rely heavily on <div> tags  <div> is no first class citizen of JSF  Solution:  Convert <div> and <span> into first-class citizens  ... by creating a special component: <pui-div>  ... and implementing a TagDecorator   AngularFaces requires JSF 2.2 or higher
  • 36. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces in a Nutshell: Rapid Prototying  Simplyfy common tasks:  Add labels and FacesMessages automatically  Add i18n support automatically  Optional relaxed, HTML-like coding style  Omit most h: prefixes of standard JSF  If BootsFaces is found, also omit most b: prefixes
  • 37. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces in a Nutshell: Reception and Market Share  Warm reception among JSF framework developers  Kito Mann, Reza Rahman, Çağatay Çivici  Scepticism among JSF users  Up to 600 downloads per month
  • 38. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces in a Nutshell: What about the Future?  Current status:  Finished, only need some polishing once in a while  One active contributor: Oscar Mendel  Angular2:  No plans for Angular2 support for technical reasons  Angular2 applications can‘t be remotely controlled by JSF  Alternative:  Angular2 controls a JSF application  You can do that today, even without AngularFaces!
  • 39. © OPITZ CONSULTING 2016 Seite 39 AngularFaces Deep Dive 5 BootsFaces Deep Dive
  • 40. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces Deep Dive: Incompatible Life Cycles  Both JSF and AngularJS have their own life cycle  AngularFaces merges these two life cycles  Challenge: each framework believes it is the owner of the DOM
  • 41. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces Deep Dive: Incompatible Life Cycles  Both JSF and AngularJS have their own life cycle  AngularFaces merges these two life cycles  Challenge: each framework believes it is the owner of the DOM
  • 42. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces Deep Dive: Simplified View AngularFaces modifies four components:  the HTML page  the NG controller  the JSF controller  the JSF renderer
  • 43. © OPITZ CONSULTING 2016 BootsFaces Deep Dive Injecting the JSF model into the ngModel  Most difficult challenge of AngularFaces  AngularFaces goes into some lengths to generate as much code as possible for you (so you have to write less)  Still requires some help by the developer, who has to call initJSFScope()
  • 44. © OPITZ CONSULTING 2016 BootsFaces Deep Dive AngularFaces Deep Dive: Updating the JSF Bean  Basic idea: AngularFaces adds a virtual tag, PuiSync, to each AngularJS controller  PuiSync generates a hidden input field updated by AngularJS  The values transmitted by PuiSync are evaluated by AngularViewContextWrapper as part of the regular decoding process
  • 45. © OPITZ CONSULTING 2016 BootsFaces Deep Dive Gathering Data for initJSFScope($scope)  The tag decorators play a crucial role  The AngularTagDecorator detects mustache expressions, convert them to JSF EL expressions and stores them in the session  Later, PuiModelSync.encode() generates initJSFScope() using the attribute list stored in the session
  • 46. © OPITZ CONSULTING 2016 BootsFaces Deep Dive FindNGControllerCallback Two responsibilities:  Adds the PuiModelSync tag to each ngController  „Automagically“ adds labels and messages to input fields
  • 47. © OPITZ CONSULTING 2016 BootsFaces Deep Dive Simplified Internationalization  Mostly implemented in the TranslationCallback class  The most common text attributes are translated to foreign languages by calling the i18n.translate() method as part of the PreRenderViewEvent  ac:include is a language-aware ui:include (adding the language as a suffix to the file name)
  • 48. © OPITZ CONSULTING 2016 BootsFaces Deep Dive Adding Labels and Messages „automagically“  Already described at the FindNGControllerCallback section  Can be deactivated
  • 49. © OPITZ CONSULTING 2016 BootsFaces Deep Dive Bringing the Bean Validation API to the Client  Implemented in the AddTypeInformationCallback class  The type information is added to the JSF tags as part of the PreRenderViewEvent
  • 50. © OPITZ CONSULTING 2016 BootsFaces Deep Dive JavaScript Library Dependency Management  The JavaScript dependencies of AngularFaces are added on-the-fly as part of the PreRenderViewEvent  Implemented in PuiAngularTransformer  Predecessor of the BootsFaces AddResourcesHandler
  • 51. © OPITZ CONSULTING 2016 Seite 51BootsFaces Deep Dive Any questions?  It‘s your turn!
  • 52. © OPITZ CONSULTING 2016  überraschend mehr Möglichkeiten! @OC_WIRE OPITZCONSULTING opitzconsulting opitz-consulting-bcb8-1009116 WWW.OPITZ-CONSULTING.COM Riccardo Massera BootsFaces teamlead ric.massera@gmail.com BootsFaces Deep Dive
  • 53. © OPITZ CONSULTING 2016  überraschend mehr Möglichkeiten! @OC_WIRE OPITZCONSULTING opitzconsulting opitz-consulting-bcb8-1009116 WWW.OPITZ-CONSULTING.COM Let‘s make the web a place to be! Stephan Rauh Leiter CC „moderne Clients und agile Architekturen“ 0172-205 59 66 Stephan.Rauh@opitz-consulting.com @beyondjava http://www.beyondjava.net BootsFaces Deep Dive