FlexJS

360|Flex 2014 Alex Harui PMC Chair May 15, 2014 Agenda

• Who

• Why

• What • Highlights • Demo

• When

• How Who am I?

• Apache Flex Committer and PMC Member

• Apache Flex PMC Chair

• Adobe Employee

• Flex SDK developer for almost 12 years

• 30+ years experience Disclaimer

• Even though I am a full-time Adobe employee and spend my whole day on Apache Flex, everything I say here is just my opinion, and not an official statement on behalf of Adobe Systems Inc., or the Apache Foundation, or even the Apache Flex project itself. Why

• Then: • Flash used to be in virtually every browser. • AIR used to run on most computers. • Flex provided excellent developer productivity • IDEs • Code intelligence • Debugger • Write-once run anywhere Why

• Now: • There are browsers that don’t run Flash and devices that AIR cannot target • There are large existing MXML and ActionScript code bases • JavaScript still makes it easy to make hard-to-find mistakes • Some of these JS frameworks makes your code not look like code What == FlexJS

• Use MXML and ActionScript to create either SWFs that run in Flash/AIR or HTML/JS/CSS files that run in browsers (or anywhere HTML/JS/CSS runs) without Flash. • IE8, 9, 10, Chrome, Firefox, Android, IOS • Mobile Apps via Apache Cordova (PhoneGap) • Adobe Common Extensibility Platform (a.k.a. Creative Suite Extensions)

• Bring the advantages of Flex to the JavaScript world Several Approaches

• Emulate Flash Player

• Emulate current Apache Flex SDK

• New framework Emulate Flash Player

• Then you wouldn’t have to change any of your code.

• But that’s a lot of work

• Fidelity/Performance issues • Frame events • Other Flash-isms (embedded fonts, Stage3D)

• But some folks have doing this: • See JooFlash, DartFlash, Shumway Emulate Flex SDK

• Then you’d have to change code wherever you went straight to Flash • useHandCursor, blendModes, filters

• Still some fidelity/performance issues • Weak references, Dictionary, E4x, Embedded Assets

• The existing API has class dependencies that might produce bigger resulting JS files.

• But might be worth a try.