SlideShare a Scribd company logo
1 of 31
www.coremedia.com© CoreMedia | 30/01/15 | 1
Running Flash Apps in HTML5-enabled browsers
Andreas Gawecki Frank Wienberg
Software Architects & Jangaroo Evangelists
Jangaroo - AS3 w/o FlashPlayer
www.coremedia.com© CoreMedia | 30/01/15 | 2
Flash / Flex can do awesome things, but
not without FlashPlayer browser plugin.
Ppl do amazing things with HTML 5, CSS 3
and JavaScript – is Flash dead?
Problem 1
www.coremedia.com© CoreMedia | 30/01/15 | 3
 Some platforms not Flash-
enabled (iOS)
 FlashPlayer has to rely on
quirky old Browser plugin API
 Does not integrate seamlessly
with (D)HTML
 Up-to-date plugin version not
installed everywhere
FlashPlayer Browser Plugin Downsides
www.coremedia.com© CoreMedia | 30/01/15 | 4
The target platform Web / browser only
understands JavaScript, but:
JavaScript was not made for
programming in the large
Problem 2
www.coremedia.com© CoreMedia | 30/01/15 | 5
What Brendan says
"The over-minimized design of JS [...] imposed a
long-term complexity tax on JS programmers and
libraries. Everyone invents an OOP framework,
some standard packaging discipline, and a latent
type system. Why should not the core language
address these obvious requirements?"
Brendan Eich, creator of JavaScript
www.coremedia.com© CoreMedia | 30/01/15 | 6
 No packages / namespaces,
classes, modules
 No explicit interfaces / APIs
 No static typing
 Libraries and build process
not standardized
JavaScript for Enterprise
– The Bad Parts
www.coremedia.com© CoreMedia | 30/01/15 | 7
Keep on coding ActionScript 3!
Keep on using Flash APIs!
Target the Web through
FlashPlayer and HTML 5!
Jangaroo Answers:
www.coremedia.com© CoreMedia | 30/01/15 | 8
How to execute
another programming
language in the
browser?
www.coremedia.com© CoreMedia | 30/01/15 | 9
translate to JavaScriptby plugin
How to execute another programming
language in the browser?
www.coremedia.com© CoreMedia | 30/01/15 | 10
Which programming
language?
www.coremedia.com© CoreMedia | 30/01/15 | 11
Which programming language?
ActionScript 3
(Adobe)
Java
(Oracle)
C#
(Microsoft)
www.coremedia.com© CoreMedia | 30/01/15 | 12
Available Technologies
by plugin
translate to
JavaScript
Java Java Applet GWT
C# Silverlight
Script#
JSC
ActionScript Flash Player Jangaroo
www.coremedia.com© CoreMedia | 30/01/15 | 13
ActionScript adds programming-
in-the-large features missing in
JavaScript
ActionScript and JavaScript are
quite similar
Advantages of JavaScript are kept
Enhanced tool support
ActionScript 3 from a JavaScript
developer’s point of view
www.coremedia.com© CoreMedia | 30/01/15 | 14
Compile ActionScript 3 to JavaScript that (through a
small runtime library)
a) runs in any browser and
b) looks very similar to the AS3 source code.
Jangaroo Approach
www.coremedia.com© CoreMedia | 30/01/15 | 15
Jangaroo
= Enterprise JavaScript
⊂ ActionScript 3
www.coremedia.com© CoreMedia | 30/01/15 | 16
Jangaroo Source Code
package joo.util {
public class Offset {
public static const HOME : joo.util.Offset = new Offset(0, 0);
public function Offset(left : Number , top : Number ) {
this.left = left;
this.top = top;
}
public function clone() : joo.util.Offset {
return new Offset(this.left, this.top);
}
public function getDistance() : Number {
return Math.sqrt(this.left*this.left + this.top*this.top);
}
public function scale(factor : Number) : joo.util.Offset {
return new Offset(this.left * factor, this.top * factor);
}
public function isHome() : Boolean {
return this.left==0 && this.top==0;
}
public var left : Number;
public var top : Number;
}}
www.coremedia.com© CoreMedia | 30/01/15 | 17
Jangaroo Compiled Code (JavaScript)
joo.classLoader.prepare(
"package joo.util",
"public class Offset",function($$l,$$private){var is=joo.is,assert=joo.assert,…;return[
"public static",{/*const*/ HOME/*: joo.util.Offset*/: function(){return new Offset(0, 0);}},
"public",function Offset(left/*: Number*/, top/*: Number*/) {
this.left = left;
this.top = top;
},
"public",function clone()/*: joo.util.Offset*/{
return new Offset(this.left, this.top);
},
"public",function getDistance()/*: Number*/{
return Math.sqrt(this.left*this.left + this.top*this.top);
},
"public",function scale(factor/*: Number*/)/*: joo.util.Offset*/{
return new Offset(this.left * factor, this.top * factor);
},
"public",function isHome()/*: Boolean*/{
return this.left==0 && this.top==0;
},
"public",{/*var*/ left /*: Number*/: undefined},
"public",{/*var*/ top /*: Number*/: undefined}
]});
www.coremedia.com© CoreMedia | 30/01/15 | 18
Only supported syntactically
 visibility modifiers
(protected, internal)
 namespace
 annotation ([…])
 typing (no type conversion /
coercion)
Not (yet) supported
 E4X (XML literals and -API)
Not supported in IE < 9
 Property accessor functions
(get / set)
Supported Features
 package
 class
 private members
 static members
 inheritance (extends)
 Import
 interface (implements)
 helper classes (same file)
 optional semicolons
Jangaroos ActionScript 3
www.coremedia.com© CoreMedia | 30/01/15 | 19
Jangaroo is More
Than a Compiler
www.coremedia.com© CoreMedia | 30/01/15 | 20
 Automatic loading of dependent classes
 On-demand class initialization (static code)
 Simple boot strap from HTML / JavaScript
 Simple to use Jangaroo libraries from JavaScript code
 Modular build process through Apache Maven
 Versioned modules
 Collection of transitive dependencies
 Generate debug and optimized code in one go
 IDE support through being AS3 compatible
 Minor overhead in generated code
 Jangaroo tools: ~13 k SLoC
Jangaroo Features
www.coremedia.com© CoreMedia | 30/01/15 | 21
 JavaScript libraries can be used as-is or through “fake” AS3 API
 Available Jangaroo modules with AS3 API wrappers:
 Browser DOM and BOM API
 Ext Core
 Ext JS
 soundmanager 2
 Open Source ActionScript libraries can simply be recompiled:
 FlexUnit
 Box2D
 Flash standard libraries are not Open Source and thus have to
be reimplemented for Jangaroo (work in progress on github)
Jangaroo Libraries
www.coremedia.com© CoreMedia | 30/01/15 | 22
2004:
Start as
internal
project
„JSC“
Using it in
CoreMedia
CMS
07/2008:
Open
Source
„Jangaroo“
6/2009: From
ECMAScript 4
to
ActionScript 3
09/2010:
github
11/2010:
current
version:
0.7.9
Jangaroo: Project History
 http://blog.jangaroo.net/2008/07/former-life-and-birth-of-jangaroo.html
www.coremedia.com© CoreMedia | 30/01/15 | 23
Software Lifecycle with Jangaroo
Jangaroo supports the whole lifecycle of professional
software development of enterprise JavaScript
applications
www.coremedia.com© CoreMedia | 30/01/15 | 24
Software Lifecycle with Jangaroo
IDE
Build Process
Unit Test Framework
Automatic UI Tests
Continuous Integration
HTML Documentation
Source-Level Debugging
www.coremedia.com© CoreMedia | 30/01/15 | 25
IntelliJ IDEA
Flash Develop
Flash Builder
Powerflasher FDT
IDE Support
www.coremedia.com© CoreMedia | 30/01/15 | 26
Command Line
Ant
Maven
IDEA (incremental)
Build Process
www.coremedia.com© CoreMedia | 30/01/15 | 27
UI Tests: Selenium
Continuous
Integration:
Hudson
Unit Tests: JooUnit =
FlexUnit 0.9 
Jangaroo
Test Tools
www.coremedia.com© CoreMedia | 30/01/15 | 28
Documentation:
ASDoc
Debugging: Firebug
& Co
Documentation and Debugging
www.coremedia.com© CoreMedia | 30/01/15 | 29
 User Group
 http://groups.google.com/group/jangaroo-users/
 Source Code
 http://github.com/CoreMedia/jangaroo-tools
 http://github.com/CoreMedia/jangaroo-libs
 Demos
 Flash Demos:
http://www.jangaroo.net/files/examples/flash/lines/
http://www.jangaroo.net/files/examples/flash/box2d/
 Browser Game: http://www.jangaron.net
Jangaroo: Resources
www.jangaroo.net
www.coremedia.com© CoreMedia | 30/01/15 | 30
Demos & Applications
www.coremedia.com© CoreMedia | 30/01/15 | 31
CONTENT | CONTEXT | CONVERSION
Singapore
asia-info@coremedia.com
tel +65.6562.8866
Hamburg
info@coremedia.com
tel +49.40.32 55 87.0
San Francisco
usa-info@coremedia.com
tel +1.415.371.0400
London
uk-info@coremedia.com
tel +44.207.849.3317

More Related Content

Viewers also liked

Futurex Brochure (Direct Mailer)
Futurex Brochure (Direct Mailer)Futurex Brochure (Direct Mailer)
Futurex Brochure (Direct Mailer)Jasmeet Warraich
 
Marathon Futurex, Lower Parel
Marathon Futurex, Lower ParelMarathon Futurex, Lower Parel
Marathon Futurex, Lower Parelmarathongrp
 
Marathon Futurex Brochure
Marathon Futurex BrochureMarathon Futurex Brochure
Marathon Futurex Brochuremarathongrp
 
UPL employee motivational posters
UPL   employee motivational postersUPL   employee motivational posters
UPL employee motivational postersJasmeet Warraich
 

Viewers also liked (6)

Futurex Brochure (Direct Mailer)
Futurex Brochure (Direct Mailer)Futurex Brochure (Direct Mailer)
Futurex Brochure (Direct Mailer)
 
Arcon brochure
Arcon brochureArcon brochure
Arcon brochure
 
Astellas
AstellasAstellas
Astellas
 
Marathon Futurex, Lower Parel
Marathon Futurex, Lower ParelMarathon Futurex, Lower Parel
Marathon Futurex, Lower Parel
 
Marathon Futurex Brochure
Marathon Futurex BrochureMarathon Futurex Brochure
Marathon Futurex Brochure
 
UPL employee motivational posters
UPL   employee motivational postersUPL   employee motivational posters
UPL employee motivational posters
 

Similar to Jangaroo @ FlashCodersNY

PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"Frank Wienberg
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textToma Velev
 
Android app development Hybrid approach for beginners
Android app development  Hybrid approach for beginnersAndroid app development  Hybrid approach for beginners
Android app development Hybrid approach for beginnersKhirulnizam Abd Rahman
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011sullis
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with FlutterAwok
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)Igalia
 
Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011sullis
 
Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15sullis
 
Practical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific LanguagesPractical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific LanguagesGuillaume Laforge
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)firenze-gtug
 
Eclipse Training - RCP & Industrialization
Eclipse Training - RCP & IndustrializationEclipse Training - RCP & Industrialization
Eclipse Training - RCP & IndustrializationLuca D'Onofrio
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxIgalia
 
Apache Flex and the imperfect Web
Apache Flex and the imperfect WebApache Flex and the imperfect Web
Apache Flex and the imperfect Webmasuland
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascriptwendy017
 
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...John Head
 

Similar to Jangaroo @ FlashCodersNY (20)

PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
PLASTIC 2011: "Enterprise JavaScript with Jangaroo"
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
 
Android app development Hybrid approach for beginners
Android app development  Hybrid approach for beginnersAndroid app development  Hybrid approach for beginners
Android app development Hybrid approach for beginners
 
Flashcamp
FlashcampFlashcamp
Flashcamp
 
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
 
Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011Android 3.1 - Portland Code Camp 2011
Android 3.1 - Portland Code Camp 2011
 
Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15Android 3.0 Portland Java User Group 2011-03-15
Android 3.0 Portland Java User Group 2011-03-15
 
Practical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific LanguagesPractical Groovy Domain-Specific Languages
Practical Groovy Domain-Specific Languages
 
Android crash course
Android crash courseAndroid crash course
Android crash course
 
What's new in p2 (2009)?
What's new in p2 (2009)?What's new in p2 (2009)?
What's new in p2 (2009)?
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
Eclipse Training - RCP & Industrialization
Eclipse Training - RCP & IndustrializationEclipse Training - RCP & Industrialization
Eclipse Training - RCP & Industrialization
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
 
TPR4
TPR4TPR4
TPR4
 
TPR4
TPR4TPR4
TPR4
 
Apache Flex and the imperfect Web
Apache Flex and the imperfect WebApache Flex and the imperfect Web
Apache Flex and the imperfect Web
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascript
 
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 

Jangaroo @ FlashCodersNY

  • 1. www.coremedia.com© CoreMedia | 30/01/15 | 1 Running Flash Apps in HTML5-enabled browsers Andreas Gawecki Frank Wienberg Software Architects & Jangaroo Evangelists Jangaroo - AS3 w/o FlashPlayer
  • 2. www.coremedia.com© CoreMedia | 30/01/15 | 2 Flash / Flex can do awesome things, but not without FlashPlayer browser plugin. Ppl do amazing things with HTML 5, CSS 3 and JavaScript – is Flash dead? Problem 1
  • 3. www.coremedia.com© CoreMedia | 30/01/15 | 3  Some platforms not Flash- enabled (iOS)  FlashPlayer has to rely on quirky old Browser plugin API  Does not integrate seamlessly with (D)HTML  Up-to-date plugin version not installed everywhere FlashPlayer Browser Plugin Downsides
  • 4. www.coremedia.com© CoreMedia | 30/01/15 | 4 The target platform Web / browser only understands JavaScript, but: JavaScript was not made for programming in the large Problem 2
  • 5. www.coremedia.com© CoreMedia | 30/01/15 | 5 What Brendan says "The over-minimized design of JS [...] imposed a long-term complexity tax on JS programmers and libraries. Everyone invents an OOP framework, some standard packaging discipline, and a latent type system. Why should not the core language address these obvious requirements?" Brendan Eich, creator of JavaScript
  • 6. www.coremedia.com© CoreMedia | 30/01/15 | 6  No packages / namespaces, classes, modules  No explicit interfaces / APIs  No static typing  Libraries and build process not standardized JavaScript for Enterprise – The Bad Parts
  • 7. www.coremedia.com© CoreMedia | 30/01/15 | 7 Keep on coding ActionScript 3! Keep on using Flash APIs! Target the Web through FlashPlayer and HTML 5! Jangaroo Answers:
  • 8. www.coremedia.com© CoreMedia | 30/01/15 | 8 How to execute another programming language in the browser?
  • 9. www.coremedia.com© CoreMedia | 30/01/15 | 9 translate to JavaScriptby plugin How to execute another programming language in the browser?
  • 10. www.coremedia.com© CoreMedia | 30/01/15 | 10 Which programming language?
  • 11. www.coremedia.com© CoreMedia | 30/01/15 | 11 Which programming language? ActionScript 3 (Adobe) Java (Oracle) C# (Microsoft)
  • 12. www.coremedia.com© CoreMedia | 30/01/15 | 12 Available Technologies by plugin translate to JavaScript Java Java Applet GWT C# Silverlight Script# JSC ActionScript Flash Player Jangaroo
  • 13. www.coremedia.com© CoreMedia | 30/01/15 | 13 ActionScript adds programming- in-the-large features missing in JavaScript ActionScript and JavaScript are quite similar Advantages of JavaScript are kept Enhanced tool support ActionScript 3 from a JavaScript developer’s point of view
  • 14. www.coremedia.com© CoreMedia | 30/01/15 | 14 Compile ActionScript 3 to JavaScript that (through a small runtime library) a) runs in any browser and b) looks very similar to the AS3 source code. Jangaroo Approach
  • 15. www.coremedia.com© CoreMedia | 30/01/15 | 15 Jangaroo = Enterprise JavaScript ⊂ ActionScript 3
  • 16. www.coremedia.com© CoreMedia | 30/01/15 | 16 Jangaroo Source Code package joo.util { public class Offset { public static const HOME : joo.util.Offset = new Offset(0, 0); public function Offset(left : Number , top : Number ) { this.left = left; this.top = top; } public function clone() : joo.util.Offset { return new Offset(this.left, this.top); } public function getDistance() : Number { return Math.sqrt(this.left*this.left + this.top*this.top); } public function scale(factor : Number) : joo.util.Offset { return new Offset(this.left * factor, this.top * factor); } public function isHome() : Boolean { return this.left==0 && this.top==0; } public var left : Number; public var top : Number; }}
  • 17. www.coremedia.com© CoreMedia | 30/01/15 | 17 Jangaroo Compiled Code (JavaScript) joo.classLoader.prepare( "package joo.util", "public class Offset",function($$l,$$private){var is=joo.is,assert=joo.assert,…;return[ "public static",{/*const*/ HOME/*: joo.util.Offset*/: function(){return new Offset(0, 0);}}, "public",function Offset(left/*: Number*/, top/*: Number*/) { this.left = left; this.top = top; }, "public",function clone()/*: joo.util.Offset*/{ return new Offset(this.left, this.top); }, "public",function getDistance()/*: Number*/{ return Math.sqrt(this.left*this.left + this.top*this.top); }, "public",function scale(factor/*: Number*/)/*: joo.util.Offset*/{ return new Offset(this.left * factor, this.top * factor); }, "public",function isHome()/*: Boolean*/{ return this.left==0 && this.top==0; }, "public",{/*var*/ left /*: Number*/: undefined}, "public",{/*var*/ top /*: Number*/: undefined} ]});
  • 18. www.coremedia.com© CoreMedia | 30/01/15 | 18 Only supported syntactically  visibility modifiers (protected, internal)  namespace  annotation ([…])  typing (no type conversion / coercion) Not (yet) supported  E4X (XML literals and -API) Not supported in IE < 9  Property accessor functions (get / set) Supported Features  package  class  private members  static members  inheritance (extends)  Import  interface (implements)  helper classes (same file)  optional semicolons Jangaroos ActionScript 3
  • 19. www.coremedia.com© CoreMedia | 30/01/15 | 19 Jangaroo is More Than a Compiler
  • 20. www.coremedia.com© CoreMedia | 30/01/15 | 20  Automatic loading of dependent classes  On-demand class initialization (static code)  Simple boot strap from HTML / JavaScript  Simple to use Jangaroo libraries from JavaScript code  Modular build process through Apache Maven  Versioned modules  Collection of transitive dependencies  Generate debug and optimized code in one go  IDE support through being AS3 compatible  Minor overhead in generated code  Jangaroo tools: ~13 k SLoC Jangaroo Features
  • 21. www.coremedia.com© CoreMedia | 30/01/15 | 21  JavaScript libraries can be used as-is or through “fake” AS3 API  Available Jangaroo modules with AS3 API wrappers:  Browser DOM and BOM API  Ext Core  Ext JS  soundmanager 2  Open Source ActionScript libraries can simply be recompiled:  FlexUnit  Box2D  Flash standard libraries are not Open Source and thus have to be reimplemented for Jangaroo (work in progress on github) Jangaroo Libraries
  • 22. www.coremedia.com© CoreMedia | 30/01/15 | 22 2004: Start as internal project „JSC“ Using it in CoreMedia CMS 07/2008: Open Source „Jangaroo“ 6/2009: From ECMAScript 4 to ActionScript 3 09/2010: github 11/2010: current version: 0.7.9 Jangaroo: Project History  http://blog.jangaroo.net/2008/07/former-life-and-birth-of-jangaroo.html
  • 23. www.coremedia.com© CoreMedia | 30/01/15 | 23 Software Lifecycle with Jangaroo Jangaroo supports the whole lifecycle of professional software development of enterprise JavaScript applications
  • 24. www.coremedia.com© CoreMedia | 30/01/15 | 24 Software Lifecycle with Jangaroo IDE Build Process Unit Test Framework Automatic UI Tests Continuous Integration HTML Documentation Source-Level Debugging
  • 25. www.coremedia.com© CoreMedia | 30/01/15 | 25 IntelliJ IDEA Flash Develop Flash Builder Powerflasher FDT IDE Support
  • 26. www.coremedia.com© CoreMedia | 30/01/15 | 26 Command Line Ant Maven IDEA (incremental) Build Process
  • 27. www.coremedia.com© CoreMedia | 30/01/15 | 27 UI Tests: Selenium Continuous Integration: Hudson Unit Tests: JooUnit = FlexUnit 0.9  Jangaroo Test Tools
  • 28. www.coremedia.com© CoreMedia | 30/01/15 | 28 Documentation: ASDoc Debugging: Firebug & Co Documentation and Debugging
  • 29. www.coremedia.com© CoreMedia | 30/01/15 | 29  User Group  http://groups.google.com/group/jangaroo-users/  Source Code  http://github.com/CoreMedia/jangaroo-tools  http://github.com/CoreMedia/jangaroo-libs  Demos  Flash Demos: http://www.jangaroo.net/files/examples/flash/lines/ http://www.jangaroo.net/files/examples/flash/box2d/  Browser Game: http://www.jangaron.net Jangaroo: Resources www.jangaroo.net
  • 30. www.coremedia.com© CoreMedia | 30/01/15 | 30 Demos & Applications
  • 31. www.coremedia.com© CoreMedia | 30/01/15 | 31 CONTENT | CONTEXT | CONVERSION Singapore asia-info@coremedia.com tel +65.6562.8866 Hamburg info@coremedia.com tel +49.40.32 55 87.0 San Francisco usa-info@coremedia.com tel +1.415.371.0400 London uk-info@coremedia.com tel +44.207.849.3317

Editor's Notes

  1. Andere RIA-Technologien haben sich nicht durchgesetzt Für viele ein notwendiges Übel: “Muss man ja leider benutzen” “Möglichst viel auf dem Server implementieren, da gibt es wenigstens vernünftige Infrastruktur”  Web 2.0
  2. Andere RIA-Technologien haben sich nicht durchgesetzt Für viele ein notwendiges Übel: “Muss man ja leider benutzen” “Möglichst viel auf dem Server implementieren, da gibt es wenigstens vernünftige Infrastruktur”  Web 2.0
  3. But: the standardization process is going on for years, it seems that eventually Microsoft is retreating or even sabotaging the progress. If Microsoft does not support JS2, then IE won't, and it will only run via plugin... What makes our approach different? We put the OOP framework into the language, not (only) into a runtime extension.
  4. Andere RIA-Technologien haben sich nicht durchgesetzt Für viele ein notwendiges Übel: “Muss man ja leider benutzen” “Möglichst viel auf dem Server implementieren, da gibt es wenigstens vernünftige Infrastruktur”  Web 2.0
  5. ActionScript bietet die in JavaScript fehlenden programming-in-the-large-Features Pakete, Klassen, Module, Schnittstellen, Sichtbarkeit Statische Typisierung ActionScript und JavaScript gut aufeinander abbildbar Generierter Code und Quellcode sehr ähnlich Einfacher für Entwickler (und für den Compiler) Statische Typisierung optional => iterative Migration Stärken von JavaScript bleiben erhalten Closures Dynamische Sprach-Aspekte JavaScript-Bibliotheken können direkt verwendet werden Tool-Unterstützung In den letzten Monten dank Flex professionelles Niveau erreicht. Diverse IDEs Build-Prozess (Flex-Maven-Plug-Ins) …