@bigosmallm | email@example.com
Apache Flex PMC Member | Advisory Software Engineer, IBM
Who am I?
Advisory Software Engineer at IBM
Apache Flex Committer and PMC Member
UI Architect with 14+ years experience building UI for
enterprise and consumer apps
Used a variety of UI development platforms – HTML5/JS,
Apache Flex, Flash, .Net/C#, Tcl/Tk, OpenGL, etc.
They made me say this…
Apache Flex, Flex, FlexJS and Apache
are either registered trademarks or
trademarks of the Apache Software
Foundation in the United States and/or
Everything I say here is just my opinion,
and not an official statement on behalf
of IBM, or the Apache Software
Foundation, or even the Apache Flex
Flash used to be in virtually every browser.
AIR used to run on most computers.
Flex provided excellent developer
Write once, run anywhere
There are browsers that don’t run Flash and devices
that AIR cannot target
There are large existing MXML and ActionScript code
Some of these JS frameworks makes your code not
look like code
What is FlexJS?
A new application development framework
Cross compiles MXML and ActionScript into HTML and
Runs in web, desktop and mobile(app) in swf format
Runs in browser based environments as HTML/JS/CSS
files without the need for the Flash Player plugin.
Classes, interfaces using ActionScript 3.0
Button, Label, DropDownList, Panel, Charts, Map,
Bring your favorite design patterns (Singleton, MVC,
Unit test with FlexUnit
Designed to be cross-compiled
Doesn’t use AS/Flash features that are hard to implement in JS
Thinly wrap HTML/JS and present as classes.
New coding patterns support plug-ins and composition.
Strands and Beads (more about this in a bit)
Incremental feature development
Smaller SWFs and JS downloads
FlexJS goal is to help you write your app faster
Built in Dependency Injection
Choice of IDEs
Adobe Flash Builder and FDT.
Choice of UI Frameworks
JQuery, CreateJS partially wrapped. Others to come?
Full fledged object oriented inheritance model (not just prototype
Statically type code, dynamic optional. So best of both worlds.
Packages, classes, interfaces
Use standard design patterns easily
Easy to maintain
Friendly for projects with medium to large size teams
Like HTML, MXML is XML markup language
Declaratively lay out your interface (components, skins, layout,
Declaratively define nonvisual aspects of the application (data
binding, states, webservices, etc.)
Unlike HTML, you can extend MXML with custom components that
you reference as MXML tags
What does the code look like?
Lets look at some code:
Input: MXML, ActionScript3 code
Code + demo
Code + demo
Third party integration
Code + demo
Visualization using Charts
Graphic Drawing APIs (Rect, Fill, etc.)
Rendering fidelity between Flash and
Strands, Beads, etc.
Components are bundles of functionality formed by composition,
rather than by inheritance.
Add just the features you need
A component consists of strands onto which beads are added.
A strand is the component wrapper
A bead encapsulates a particular bit of functionality
Beads can interact with each either through the strand, with
events, or direct manipulation
Example: TextInput component
FlexJS 0.0.2 (alpha) available now.
More releases in 2014
1.0 in 2015
1.0 means basic functionality of most current Flex
SDK components, not “near-parity”.
We need help!
All kinds of contributions welcome on both current Flex
SDK, FlexJS and other efforts.
FlexJS apps will run in just about any browser.
FlexJS apps will run on more devices.
FlexJS can improve your productivity
You can directly affect the growth and development of
FlexJS (yay, opensource!)
Mailing List: firstname.lastname@example.org
To subscribe, send an email to:
Nabble Forum: s.apache.org/flex-dev-forum
Classes, Interfaces, Inheritance, Encapsulation, Polymorphism.