SlideShare a Scribd company logo
1 of 15
ApacheCon North America
Introducing Apache™ FlexJS™
Miami, Florida
May 18, 2017
Yishay Weiss
Apache Flex™
Apache Flex™, Flex, FlexJS and Apache™ are trademarks of The Apache Software
Foundation
Short Bio
• Software dev since 1998, mostly UI
• Freelance Flex and JS dev & consultant since 2010
• Apache Flex Committer and PMC Member since 2016
• Working with Harbs on migrating an app to FlexJS
Classic Flex SDK
• MXML (declerative programming)
• AS3 (strongly typed, packages, but ECMAScript)
• Good IDEs
• Flash dependent
• Lots of features
• Big application download size
• Difficult to optimize
FlexJS
• MXML (declarative programming)
• AS3 (strongly typed, packages, but ECMAScript)
• Good IDEs
• Flash dependent
• Lots of features
• Big application download size
• Difficult Easy to optimize
Let’s Build An App
• MXML
• IDE
• Non CSS layout
• Data binding
• States
• Custom component
Build for Flash
• Put a breakpoint in IDE
• Runtime verifier (handy for distributed development)
• Incremental Build
• Pixel perfect across browsers
• Developers like it
• Right click – Flash (clients not so much)
Build for JS
• Right click - no flash
• Show sources (can be minified)
• Break and inspect in browser
How did That Work?
• In Flash
• IDE compiles
• FlexJS is just a set of libraries
• In JS
• Run Ant or Maven build
• App code is transpiled from AS3 to JS (using Falcon JX)
• Framework code was already transpiled
Let’s Modify Using a Bead
• Add a behavior
• Put in MXML
• New behavior shows both in flash and in JS
• Bead source appears only when added
What Are These Beads?
• Think of UI components as strands
• --------------------
• A bead is an encapsulation of a functionality
• Can be added to strand
• ----------<view>------<data-binding>-----<tooltip>-----<layout>---
• Or removed
• --------- <view>------<layout>---
• Can listen on strand or on other beads
• Model, view, controller, layout are examples of beads
What’s So Good About Them?
• Avoid overthinking hierarchy trees
• Composition over inheritance
• Easily override behavior
• Configuration via CSS can be powerful
• Don’t download code you don’t use
• Faster download, faster code
• Create your own components set by choosing your beads
Demo
• Remember ClickTracker?
• Build, show code
• ClickTracker is in source, so it was downloaded with app
• Remove Bead
• Build, show code
• ClickTracker is no longer there, so we just optimized
Component Sets
• Choose your component set
• What are your needs?
• Rapid development (Express)
• Fast app startup (Basic)
• 3rd party library (MDL, CreateJS)
• You can mix
• Choose namespace prefix
Contributing to Framework
• Set up IDE to use framework libs
• Create an example app
• Add bead/component
• Run test example in IDE
• Run in JS
• Good? Tests Run? Make pull request.
Questions?
https://cwiki.apache.org/confluence/display/FLEX/FlexJS
Also, Google FlexJSWorldTour

More Related Content

What's hot

Performance and scalability with drupal
Performance and scalability with drupalPerformance and scalability with drupal
Performance and scalability with drupal
Ronan Berder
 

What's hot (20)

Azure Serverless Conf
Azure Serverless ConfAzure Serverless Conf
Azure Serverless Conf
 
High performance java ee with j cache and cdi
High performance java ee with j cache and cdiHigh performance java ee with j cache and cdi
High performance java ee with j cache and cdi
 
ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
Getting Started with ASP.NET 5
Getting Started with ASP.NET 5Getting Started with ASP.NET 5
Getting Started with ASP.NET 5
 
Learn css step by step online course
Learn css step by step online course Learn css step by step online course
Learn css step by step online course
 
AEM/CQ Montreal User Group Meeting - March 25, 2015 - Takeaways from Adobe Su...
AEM/CQ Montreal User Group Meeting - March 25, 2015 - Takeaways from Adobe Su...AEM/CQ Montreal User Group Meeting - March 25, 2015 - Takeaways from Adobe Su...
AEM/CQ Montreal User Group Meeting - March 25, 2015 - Takeaways from Adobe Su...
 
10 tips to make your ASP.NET Apps Faster
10 tips to make your ASP.NET Apps Faster10 tips to make your ASP.NET Apps Faster
10 tips to make your ASP.NET Apps Faster
 
Workflow driven development
Workflow driven developmentWorkflow driven development
Workflow driven development
 
How to ease the learning curve
How to ease the learning curveHow to ease the learning curve
How to ease the learning curve
 
Why XAF and XPO?
Why XAF and XPO?Why XAF and XPO?
Why XAF and XPO?
 
Building rest services using aspnetwebapi
Building rest services using aspnetwebapiBuilding rest services using aspnetwebapi
Building rest services using aspnetwebapi
 
Ruby on Rails Vs. ASP.NET MVC
Ruby on Rails Vs. ASP.NET MVCRuby on Rails Vs. ASP.NET MVC
Ruby on Rails Vs. ASP.NET MVC
 
College Java vs Real Java - Tushar Joshi
College Java vs Real Java  - Tushar JoshiCollege Java vs Real Java  - Tushar Joshi
College Java vs Real Java - Tushar Joshi
 
Less presentation
Less presentationLess presentation
Less presentation
 
Microservices: A developer's approach
Microservices: A developer's approachMicroservices: A developer's approach
Microservices: A developer's approach
 
Iconus 2016
Iconus 2016Iconus 2016
Iconus 2016
 
'Less' css
'Less' css'Less' css
'Less' css
 
Performance and scalability with drupal
Performance and scalability with drupalPerformance and scalability with drupal
Performance and scalability with drupal
 
WebAssembly in Houdini CSS, is it possible?
WebAssembly in Houdini CSS, is it possible?WebAssembly in Houdini CSS, is it possible?
WebAssembly in Houdini CSS, is it possible?
 
WebAssembly overview. KievJS meetup
WebAssembly overview. KievJS meetupWebAssembly overview. KievJS meetup
WebAssembly overview. KievJS meetup
 

Similar to ApacheCon North America - Introduction to FlexJS

UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
Ulrich Krause
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
Acquia
 

Similar to ApacheCon North America - Introduction to FlexJS (20)

UKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basicsUKLUG 2012 - XPages, Beyond the basics
UKLUG 2012 - XPages, Beyond the basics
 
Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012Single Page Applications - Desert Code Camp 2012
Single Page Applications - Desert Code Camp 2012
 
Frameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic ReviewFrameworks Galore: A Pragmatic Review
Frameworks Galore: A Pragmatic Review
 
Extension Library - Viagra for XPages
Extension Library - Viagra for XPagesExtension Library - Viagra for XPages
Extension Library - Viagra for XPages
 
Oracle APEX Nitro
Oracle APEX NitroOracle APEX Nitro
Oracle APEX Nitro
 
Building a cross-framework design system
Building a cross-framework design systemBuilding a cross-framework design system
Building a cross-framework design system
 
ContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
ContainerCon EU 2016 - Software-Defined Storage and Container SchedulersContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
ContainerCon EU 2016 - Software-Defined Storage and Container Schedulers
 
Intro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developersIntro to SharePoint 2010 development for .NET developers
Intro to SharePoint 2010 development for .NET developers
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics[DanNotes] XPages - Beyound the Basics
[DanNotes] XPages - Beyound the Basics
 
Ext JS Upgrade Adviser EA Launch
Ext JS Upgrade Adviser EA LaunchExt JS Upgrade Adviser EA Launch
Ext JS Upgrade Adviser EA Launch
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
 
XPages -Beyond the Basics
XPages -Beyond the BasicsXPages -Beyond the Basics
XPages -Beyond the Basics
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
Building Rich Internet Applications with Ext JS
Building Rich Internet Applications  with Ext JSBuilding Rich Internet Applications  with Ext JS
Building Rich Internet Applications with Ext JS
 
Presentation 1 Web--dev
Presentation 1 Web--devPresentation 1 Web--dev
Presentation 1 Web--dev
 
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support EngineerSupport Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
Support Tools für die Admin-Konsole - Nebil Kisa, Advanced Support Engineer
 
Learn from my Mistakes - Building Better Solutions in SPFx
Learn from my  Mistakes - Building Better Solutions in SPFxLearn from my  Mistakes - Building Better Solutions in SPFx
Learn from my Mistakes - Building Better Solutions in SPFx
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuning
 
MySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The DolphinMySQL Day Paris 2016 - State Of The Dolphin
MySQL Day Paris 2016 - State Of The Dolphin
 

Recently uploaded

Recently uploaded (20)

Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)
 
Weeding your micro service landscape.pdf
Weeding your micro service landscape.pdfWeeding your micro service landscape.pdf
Weeding your micro service landscape.pdf
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Transformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksTransformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with Links
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdf
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
 
Software Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements EngineeringSoftware Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements Engineering
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
COMPUTER AND ITS COMPONENTS PPT.by naitik sharma Class 9th A mittal internati...
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024
 

ApacheCon North America - Introduction to FlexJS

  • 1. ApacheCon North America Introducing Apache™ FlexJS™ Miami, Florida May 18, 2017 Yishay Weiss Apache Flex™ Apache Flex™, Flex, FlexJS and Apache™ are trademarks of The Apache Software Foundation
  • 2. Short Bio • Software dev since 1998, mostly UI • Freelance Flex and JS dev & consultant since 2010 • Apache Flex Committer and PMC Member since 2016 • Working with Harbs on migrating an app to FlexJS
  • 3. Classic Flex SDK • MXML (declerative programming) • AS3 (strongly typed, packages, but ECMAScript) • Good IDEs • Flash dependent • Lots of features • Big application download size • Difficult to optimize
  • 4. FlexJS • MXML (declarative programming) • AS3 (strongly typed, packages, but ECMAScript) • Good IDEs • Flash dependent • Lots of features • Big application download size • Difficult Easy to optimize
  • 5. Let’s Build An App • MXML • IDE • Non CSS layout • Data binding • States • Custom component
  • 6. Build for Flash • Put a breakpoint in IDE • Runtime verifier (handy for distributed development) • Incremental Build • Pixel perfect across browsers • Developers like it • Right click – Flash (clients not so much)
  • 7. Build for JS • Right click - no flash • Show sources (can be minified) • Break and inspect in browser
  • 8. How did That Work? • In Flash • IDE compiles • FlexJS is just a set of libraries • In JS • Run Ant or Maven build • App code is transpiled from AS3 to JS (using Falcon JX) • Framework code was already transpiled
  • 9. Let’s Modify Using a Bead • Add a behavior • Put in MXML • New behavior shows both in flash and in JS • Bead source appears only when added
  • 10. What Are These Beads? • Think of UI components as strands • -------------------- • A bead is an encapsulation of a functionality • Can be added to strand • ----------<view>------<data-binding>-----<tooltip>-----<layout>--- • Or removed • --------- <view>------<layout>--- • Can listen on strand or on other beads • Model, view, controller, layout are examples of beads
  • 11. What’s So Good About Them? • Avoid overthinking hierarchy trees • Composition over inheritance • Easily override behavior • Configuration via CSS can be powerful • Don’t download code you don’t use • Faster download, faster code • Create your own components set by choosing your beads
  • 12. Demo • Remember ClickTracker? • Build, show code • ClickTracker is in source, so it was downloaded with app • Remove Bead • Build, show code • ClickTracker is no longer there, so we just optimized
  • 13. Component Sets • Choose your component set • What are your needs? • Rapid development (Express) • Fast app startup (Basic) • 3rd party library (MDL, CreateJS) • You can mix • Choose namespace prefix
  • 14. Contributing to Framework • Set up IDE to use framework libs • Create an example app • Add bead/component • Run test example in IDE • Run in JS • Good? Tests Run? Make pull request.