SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
LEVERAGING BLAZEDS, JAVA, AND FLEX:
DYNAMIC DATA TRANSFER
 Joseph Labrecque




                          360|Flex – April 17th 2012
Joseph Labrecque, MA
University of Denver - OTL
Senior Interactive Software Engineer
Adjunct Faculty

Fractured Vision Media, LLC
Proprietor



Twitter:   @JosephLabrecque
Web:       http://josephlabrecque.com/
Who is using ColdFusion?
Who is using Java?
Who is using BlazeDS?
Who is using PHP + AMFPHP?
Who is using   FLEX?
SESSION AGENDA
What we will cover…
•   Technology choices involved
•   Systems configuration and documentation
•   Code snippet walkthough
•   Specific, cool use cases in university
•   Other stuff!
Technology Choices
BLAZEDS
BlazeDS is the server-based Java remoting and web
messaging technology that enables developers to
easily connect to back-end distributed data and
push data in real-time to Apache Flex and Adobe
AIR applications for more responsive rich Internet
application (RIA) experiences.

Just as with the Flex framework, BlazeDS is
expected to be contributed to the Apache Software
Foundation (ASF).
FLEX
The Apache Flex framework provides a highly
productive, open source framework for building
and maintaining expressive web applications
that deploy consistently on all major browsers,
desktops and operating systems.

It provides a modern, standards-based language
and programming model that supports common
design patterns suitable for developers from
many backgrounds.

Flex applications run in the ubiquitous Adobe
Flash Player and Adobe AIR.
JAVA
Oracle Java is a programming language and
computing platform first released by Sun
Microsystems in 1995. It is the underlying
technology that powers state-of-the-art
programs including utilities, games, and
business applications.

Java runs on more than 850 million personal
computers worldwide, and on billions of
devices worldwide, including mobile and TV
devices.
SPRING
Spring is the leading platform to build
and run enterprise Java applications.

Led and sustained by SpringSource,
Spring delivers significant benefits for
many projects, increasing development
productivity and runtime performance
while improving test coverage and
application quality.
SPRING + BLAZEDS
Spring BlazeDS Integration is a top-level Spring
project, and a component of the complete
Spring Web stack.

This project's purpose is to make it easier to
build Spring-powered Rich Internet Applications
using Apache Flex as the front-end client. It
aims to achieve this purpose by providing first-
class support for using the open source Adobe
BlazeDS project and its powerful remoting and
messaging facilities in combination with the
familiar Spring programming model.
Systems Configuration
CHOICES / REASONS
JAVA:      Major apps use this or ColdFusion
SPRING:    Needed a modern framework for Java
FLEX:      For advanced functionality
BLAZEDS:   For AMF calls between Java and Flash
HTML(5):   Default web presentation technology

Spring and BlazeDS work AWESOME together!
BLAZEDS CONFIGURATION
There is a dismal lack of clear
instruction for configuring
BlazeDS AMF services with
Spring.

Many of the resources that do
exist refer to older versions of the
software or strict scenarios that
do not apply to everyone using
Spring for their projects.
OFFICIAL SPRING DOCS




http://static.springsource.org/spring-flex/docs/1.0.x/reference/html/index.html
OFFICIAL ADOBE RESOURCES




  http://opensource.adobe.com/wiki/display/blazeds/BlazeDS
UNOFFICIAL GUIDE ;)




 http://inflagrantedelicto.memoryspiral.com/2011/01/get-up-and-
              running-with-blazeds-amf-in-spring-mvc/
Let’s talk code
Action Message Format
Binary format used to serialize objects graphs such
ActionScript objects and XML, or send messages
between an Adobe Flash client and a remote
service.

Used across over 15 platforms:
ColdFusion, Java, PHP, Python, Ruby, iOS, even JavaScript!
AMF0
Introduced in Flash Player 6 (2001).
Number
Boolean
String
Object
Null
Array
Object/Array End
AMF3
Introduced in Flash Player 9 (2006).
Undefined
Null
False
True
Integer
Double
String
XML
Date
Array
Object
XML End
REMOTEOBJECT
Provides access to Java objects through AMF
components within Flash Player.

<s:RemoteObject></s:RemoteObject>

RemoteObject instances can be set up via MXML or
ActionScript but they do rely upon the Flex
framework.
ENDPOINT
The location of AMF services to access.
http://josephlabrecque.com/messagebroker/amf

Note that this URL will differ depending on how BlazeDS
is configured via web.xml:

<servlet-mapping>
     <servlet-name>spring</servlet-name>
     <url-pattern>/messagebroker/amf</url-
pattern>
</servlet-mapping>
DESTINATION
This is the service name established upon
configuration:
flexService


Defined within any Java classes that will be used by Flash:

import org.springframework.flex.remoting.RemotingDestination;
@Service("flexService")
@RemotingDestination(value="flexService",channels={"my-amf"})
RESULT/FAULT
This is a set of event handler methods defined in our
RemoteObject for handling the results of AMF calls.

This is normally done through ActionScript.


private function resultAMF(e:ResultEvent):void {
     var r:String = e.result as String;
}
METHOD
A Flex-based representation of the actual remote
method to be invoked.

Includes a representation of all arguments expected
by this method as well.

These values are able to use data binding.


<s:method name=“remoteMethodName" ...
MXML
<fx:Declarations>
       <s:RemoteObject id="ro" showBusyCursor="true"
               endpoint="{siteURL+'messagebroker/amf'}"
               destination="flexService"
               result="resultAMF(event)" fault="faultAMF(event)">
               <s:method name="createAudioRecordingFileItem">
                      <s:arguments>
                              <bytes>{mp3ByteArray}</bytes>
                              <responseId>{rID}</responseId>
                              <replace>{replace}</replace>
                      </s:arguments>
               </s:method>
       </s:RemoteObject>
</fx:Declarations>
ActionScript – AMF Invoke
Invoke the send() method upon the specific method
defined within the RemoteObject instance.

private function saveMP3():void {
     ro.createAudioRecordingFileItem.send();
}
ActionScript – AMF Result
The result event handler is invoked when a
successful result is returned from an AMF call.

import mx.rpc.events.ResultEvent;

private function resultAMF(e:ResultEvent):void {
     var r:String = e.result as String;
}
ActionScript – AMF Fault
The fault event handler is invoked when a fault is
triggered as the result of an AMF call.

import mx.rpc.events.FaultEvent;

private function faultAMF(e:FaultEvent):void {
     Alert.show(e.fault.faultString, "Error!");
}
Specific Use Cases
DU ASSESS-IT!
Assess-It! is a web-based application
that supports academic program
assessment at the University of Denver.

Assess-It! supports three basic
assessment models which were
developed based on input from faculty
and staff who are engaged in academic
program assessment at DU.

https://assess-it.du.edu/
SINGLE UPLOAD W/ TINYMCE
Using TinyMCE for WYSIWYG
text processing.
http://www.tinymce.com/

No Java-based file
management! Just PHP… what
to do?

We use Flex and BlazeDS:
modified the TinyMCE image
insert code. Easy!
MULTI-FILE UPLOAD
Looked at HTML <form> and
JavaScript-based solutions.

Many relied on Flash in
backend.

Why not just do it ourselves?

Allows multiple selection,
batched upload, immediate
feedback for the user.
IMAGE GALLERY VIEWER
Q: Could we have done this in
jQuery/HTML/JS?
A: Sure.

Q: Could we have done this in
jQuery/HTML/JS in a solid, tested,
cross-browser method with great
user interaction in a couple of
hours?
A: Hell, no.
AUDIO RECORDING
Old recorder would save off to
Flash Media Server as audio-only
FLV. System then goes in via FTP
to fetch it.

New recorder does all the
recording and encoding in the
Flash Player. Then sends the bytes
over to Java for file save via AMF.

Uses:
flash.utils.ByteArray
flash.events.SampleDataEvent
org.bytearray.micrecorder.encoder.WaveEncoder
fr.kikko.lab.ShineMP3Encoder
AUDIO PLAYBACK
Basic playback of recorded files
using the recorder module or
uploaded MP3 files.

Hooks into system through AMF.

AMF not necessary.
Not all Flash
OTHER TECH…
More than Flash… of course.

• The markup is HTML(5).
• Use of CSS3 for gradients, shadows, text.
• TinyMCE and Flex integration.
• Heavy use of JavaScript and jQuery.
• jQuery makes JavaScript (fairly) usable!


Actually really cool that we can do this
now.
HTML & FRIENDS (+FLASH)
A few words…
• Most web applications I’m involved in are a wide
  mixture of both front-end and back-end tech.
• This has been the case for many years – it just
  makes sense in many cases.
• If you are requiring Flash for core functionality –
  may as well use it more liberally.
• HTML(5) has its place… so does Flash and Flex.
• Seems people are OVERREACTING. Cut it out. ;)
Thank you.

@JosephLabrecque
Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer

Weitere ähnliche Inhalte

Was ist angesagt?

Php Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerPhp Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerJackson F. de A. Mafra
 
Web development with ASP.NET Web API
Web development with ASP.NET Web APIWeb development with ASP.NET Web API
Web development with ASP.NET Web APIDamir Dobric
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
Building A Simple Web Service With CXF
Building A Simple Web Service With CXFBuilding A Simple Web Service With CXF
Building A Simple Web Service With CXFCarl Lu
 
Introduction to ActiveMQ Apollo
Introduction to ActiveMQ ApolloIntroduction to ActiveMQ Apollo
Introduction to ActiveMQ Apollodejanb
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & CucumberUdaya Kiran
 
Web service through cxf
Web service through cxfWeb service through cxf
Web service through cxfRoger Xia
 
ASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealJim Duffy
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCharles Moulliard
 
CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityKenneth Peeples
 
API and Microservices Meetup - To Code or Low Code?
API and Microservices Meetup - To Code or Low Code?API and Microservices Meetup - To Code or Low Code?
API and Microservices Meetup - To Code or Low Code?Ian Vanstone
 
10 Reasons ColdFusion PDFs should rule the world
10 Reasons ColdFusion PDFs should rule the world10 Reasons ColdFusion PDFs should rule the world
10 Reasons ColdFusion PDFs should rule the worldColdFusionConference
 
Load Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusionLoad Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusionColdFusionConference
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11ColdFusionConference
 
Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with AlfrescoWildan Maulana
 

Was ist angesagt? (20)

Php Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerPhp Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant Killer
 
Flex and Java
Flex and JavaFlex and Java
Flex and Java
 
Web development with ASP.NET Web API
Web development with ASP.NET Web APIWeb development with ASP.NET Web API
Web development with ASP.NET Web API
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
Building A Simple Web Service With CXF
Building A Simple Web Service With CXFBuilding A Simple Web Service With CXF
Building A Simple Web Service With CXF
 
Introduction to ActiveMQ Apollo
Introduction to ActiveMQ ApolloIntroduction to ActiveMQ Apollo
Introduction to ActiveMQ Apollo
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
 
Web service through cxf
Web service through cxfWeb service through cxf
Web service through cxf
 
ASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big DealASP.NET 5: What's the Big Deal
ASP.NET 5: What's the Big Deal
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
 
CamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF SecurityCamelOne 2013 Karaf A-MQ Camel CXF Security
CamelOne 2013 Karaf A-MQ Camel CXF Security
 
API and Microservices Meetup - To Code or Low Code?
API and Microservices Meetup - To Code or Low Code?API and Microservices Meetup - To Code or Low Code?
API and Microservices Meetup - To Code or Low Code?
 
Hidden Gems in ColdFusion 11
Hidden Gems in ColdFusion 11Hidden Gems in ColdFusion 11
Hidden Gems in ColdFusion 11
 
Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016
 
10 Reasons ColdFusion PDFs should rule the world
10 Reasons ColdFusion PDFs should rule the world10 Reasons ColdFusion PDFs should rule the world
10 Reasons ColdFusion PDFs should rule the world
 
Load Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusionLoad Balancing, Failover and Scalability with ColdFusion
Load Balancing, Failover and Scalability with ColdFusion
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
 
Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with Alfresco
 

Ähnlich wie Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer

Mashups MAX 360|MAX 2008 Unconference
Mashups MAX 360|MAX 2008 UnconferenceMashups MAX 360|MAX 2008 Unconference
Mashups MAX 360|MAX 2008 UnconferenceElad Elrom
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integrationravinxg
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integrationrssharma
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patternsukdpe
 
Zend Amf And Flex
Zend Amf And FlexZend Amf And Flex
Zend Amf And Flexriafox
 
Introduction to Microsoft Silverlight
Introduction to Microsoft SilverlightIntroduction to Microsoft Silverlight
Introduction to Microsoft SilverlightGlen Gordon
 
Introduction To Adobe Flex And Semantic Resources
Introduction To Adobe Flex And Semantic ResourcesIntroduction To Adobe Flex And Semantic Resources
Introduction To Adobe Flex And Semantic Resourceskeith_sutton100
 
A Microsoft primer for PHP devs
A Microsoft primer for PHP devsA Microsoft primer for PHP devs
A Microsoft primer for PHP devsguest0a62e8
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmersjphl
 
Adobe Flex builder by elmagnif
Adobe Flex builder  by elmagnifAdobe Flex builder  by elmagnif
Adobe Flex builder by elmagnifmbaye camara
 
AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012Luca Carettoni
 
Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0guest642dd3
 
BlazeDS
BlazeDS BlazeDS
BlazeDS Priyank
 
Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.Joseph Labrecque
 
Flex In Portal Final
Flex In Portal   FinalFlex In Portal   Final
Flex In Portal FinalSunil Patil
 

Ähnlich wie Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer (20)

Mashups MAX 360|MAX 2008 Unconference
Mashups MAX 360|MAX 2008 UnconferenceMashups MAX 360|MAX 2008 Unconference
Mashups MAX 360|MAX 2008 Unconference
 
Adobe Flex4
Adobe Flex4 Adobe Flex4
Adobe Flex4
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integration
 
Flex And Java Integration
Flex And Java IntegrationFlex And Java Integration
Flex And Java Integration
 
Silverlight Training
Silverlight TrainingSilverlight Training
Silverlight Training
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
 
Zend Amf And Flex
Zend Amf And FlexZend Amf And Flex
Zend Amf And Flex
 
Introduction to Microsoft Silverlight
Introduction to Microsoft SilverlightIntroduction to Microsoft Silverlight
Introduction to Microsoft Silverlight
 
Introduction To Adobe Flex And Semantic Resources
Introduction To Adobe Flex And Semantic ResourcesIntroduction To Adobe Flex And Semantic Resources
Introduction To Adobe Flex And Semantic Resources
 
A Microsoft primer for PHP devs
A Microsoft primer for PHP devsA Microsoft primer for PHP devs
A Microsoft primer for PHP devs
 
An Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP ProgrammersAn Introduction to Websphere sMash for PHP Programmers
An Introduction to Websphere sMash for PHP Programmers
 
Adobe Flex builder by elmagnif
Adobe Flex builder  by elmagnifAdobe Flex builder  by elmagnif
Adobe Flex builder by elmagnif
 
AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012
 
Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0
 
BlazeDS
BlazeDS BlazeDS
BlazeDS
 
Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.Adobe AIR. NativeProcess. FFMPEG. Awesome.
Adobe AIR. NativeProcess. FFMPEG. Awesome.
 
Flex Rails Pres
Flex Rails PresFlex Rails Pres
Flex Rails Pres
 
Flex In Portal Final
Flex In Portal   FinalFlex In Portal   Final
Flex In Portal Final
 
What is Adobe Flex ?
What is Adobe Flex  ?What is Adobe Flex  ?
What is Adobe Flex ?
 
Adobe® Flex™
Adobe® Flex™Adobe® Flex™
Adobe® Flex™
 

Mehr von Joseph Labrecque

Producing Quality Video Content for Online Learning
Producing Quality Video Content for Online LearningProducing Quality Video Content for Online Learning
Producing Quality Video Content for Online LearningJoseph Labrecque
 
Interactive Animation with Adobe Animate CC
Interactive Animation with Adobe Animate CCInteractive Animation with Adobe Animate CC
Interactive Animation with Adobe Animate CCJoseph Labrecque
 
Cinematic Interactives with Animate CC
Cinematic Interactives with Animate CCCinematic Interactives with Animate CC
Cinematic Interactives with Animate CCJoseph Labrecque
 
Getting Familiar with Animate CC
Getting Familiar with Animate CCGetting Familiar with Animate CC
Getting Familiar with Animate CCJoseph Labrecque
 
Animate CC and the Flash Runtimes at Adobe MAX
Animate CC and the Flash Runtimes at Adobe MAX Animate CC and the Flash Runtimes at Adobe MAX
Animate CC and the Flash Runtimes at Adobe MAX Joseph Labrecque
 
Don't Fear the SWF! (Adobe MAX Community Summit)
Don't Fear the SWF! (Adobe MAX Community Summit)Don't Fear the SWF! (Adobe MAX Community Summit)
Don't Fear the SWF! (Adobe MAX Community Summit)Joseph Labrecque
 
Adobe Animate CC: Introduction to Animation and Interactivity
Adobe Animate CC: Introduction to Animation and InteractivityAdobe Animate CC: Introduction to Animation and Interactivity
Adobe Animate CC: Introduction to Animation and InteractivityJoseph Labrecque
 
Adobe Animate CC: Tool for the Changing Tech Landscape
 Adobe Animate CC: Tool for the Changing Tech Landscape Adobe Animate CC: Tool for the Changing Tech Landscape
Adobe Animate CC: Tool for the Changing Tech LandscapeJoseph Labrecque
 
Surviving Industry Disruption in Higher Education
Surviving Industry Disruption in Higher EducationSurviving Industry Disruption in Higher Education
Surviving Industry Disruption in Higher EducationJoseph Labrecque
 
Designing Short, Simple, and Effective Video Content for Online Consumption
Designing Short, Simple, and Effective Video Content for Online ConsumptionDesigning Short, Simple, and Effective Video Content for Online Consumption
Designing Short, Simple, and Effective Video Content for Online ConsumptionJoseph Labrecque
 
Introducing Adobe Animate CC
Introducing Adobe Animate CCIntroducing Adobe Animate CC
Introducing Adobe Animate CCJoseph Labrecque
 
Flash Professional CC for Mobile
Flash Professional CC for MobileFlash Professional CC for Mobile
Flash Professional CC for MobileJoseph Labrecque
 
Flash Professional CC 2015: A New Era in Animation and Interactivity
Flash Professional CC 2015: A New Era in Animation and InteractivityFlash Professional CC 2015: A New Era in Animation and Interactivity
Flash Professional CC 2015: A New Era in Animation and InteractivityJoseph Labrecque
 
Adobe MAX 2015 - Giving Flash Professional Another Look
Adobe MAX 2015 - Giving Flash Professional Another LookAdobe MAX 2015 - Giving Flash Professional Another Look
Adobe MAX 2015 - Giving Flash Professional Another LookJoseph Labrecque
 
Why Flash Professional Still Matters for the Web and Beyond
Why Flash Professional Still Matters for the Web and BeyondWhy Flash Professional Still Matters for the Web and Beyond
Why Flash Professional Still Matters for the Web and BeyondJoseph Labrecque
 
Mobile Application Development Technology Roundup
Mobile Application Development Technology RoundupMobile Application Development Technology Roundup
Mobile Application Development Technology RoundupJoseph Labrecque
 
Adobe Generation Professional: Animation
Adobe Generation Professional:AnimationAdobe Generation Professional:Animation
Adobe Generation Professional: AnimationJoseph Labrecque
 
Flash Professional CC: Multiplatform Creativity Engine
Flash Professional CC: Multiplatform Creativity EngineFlash Professional CC: Multiplatform Creativity Engine
Flash Professional CC: Multiplatform Creativity EngineJoseph Labrecque
 

Mehr von Joseph Labrecque (20)

Producing Quality Video Content for Online Learning
Producing Quality Video Content for Online LearningProducing Quality Video Content for Online Learning
Producing Quality Video Content for Online Learning
 
Interactive Animation with Adobe Animate CC
Interactive Animation with Adobe Animate CCInteractive Animation with Adobe Animate CC
Interactive Animation with Adobe Animate CC
 
Cinematic Interactives with Animate CC
Cinematic Interactives with Animate CCCinematic Interactives with Animate CC
Cinematic Interactives with Animate CC
 
Getting Familiar with Animate CC
Getting Familiar with Animate CCGetting Familiar with Animate CC
Getting Familiar with Animate CC
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
 
Animate CC and the Flash Runtimes at Adobe MAX
Animate CC and the Flash Runtimes at Adobe MAX Animate CC and the Flash Runtimes at Adobe MAX
Animate CC and the Flash Runtimes at Adobe MAX
 
Don't Fear the SWF! (Adobe MAX Community Summit)
Don't Fear the SWF! (Adobe MAX Community Summit)Don't Fear the SWF! (Adobe MAX Community Summit)
Don't Fear the SWF! (Adobe MAX Community Summit)
 
Adobe Animate CC: Introduction to Animation and Interactivity
Adobe Animate CC: Introduction to Animation and InteractivityAdobe Animate CC: Introduction to Animation and Interactivity
Adobe Animate CC: Introduction to Animation and Interactivity
 
Adobe Animate CC: Tool for the Changing Tech Landscape
 Adobe Animate CC: Tool for the Changing Tech Landscape Adobe Animate CC: Tool for the Changing Tech Landscape
Adobe Animate CC: Tool for the Changing Tech Landscape
 
Surviving Industry Disruption in Higher Education
Surviving Industry Disruption in Higher EducationSurviving Industry Disruption in Higher Education
Surviving Industry Disruption in Higher Education
 
Designing Short, Simple, and Effective Video Content for Online Consumption
Designing Short, Simple, and Effective Video Content for Online ConsumptionDesigning Short, Simple, and Effective Video Content for Online Consumption
Designing Short, Simple, and Effective Video Content for Online Consumption
 
Introducing Adobe Animate CC
Introducing Adobe Animate CCIntroducing Adobe Animate CC
Introducing Adobe Animate CC
 
Bootstrap Fundamentals
Bootstrap FundamentalsBootstrap Fundamentals
Bootstrap Fundamentals
 
Flash Professional CC for Mobile
Flash Professional CC for MobileFlash Professional CC for Mobile
Flash Professional CC for Mobile
 
Flash Professional CC 2015: A New Era in Animation and Interactivity
Flash Professional CC 2015: A New Era in Animation and InteractivityFlash Professional CC 2015: A New Era in Animation and Interactivity
Flash Professional CC 2015: A New Era in Animation and Interactivity
 
Adobe MAX 2015 - Giving Flash Professional Another Look
Adobe MAX 2015 - Giving Flash Professional Another LookAdobe MAX 2015 - Giving Flash Professional Another Look
Adobe MAX 2015 - Giving Flash Professional Another Look
 
Why Flash Professional Still Matters for the Web and Beyond
Why Flash Professional Still Matters for the Web and BeyondWhy Flash Professional Still Matters for the Web and Beyond
Why Flash Professional Still Matters for the Web and Beyond
 
Mobile Application Development Technology Roundup
Mobile Application Development Technology RoundupMobile Application Development Technology Roundup
Mobile Application Development Technology Roundup
 
Adobe Generation Professional: Animation
Adobe Generation Professional:AnimationAdobe Generation Professional:Animation
Adobe Generation Professional: Animation
 
Flash Professional CC: Multiplatform Creativity Engine
Flash Professional CC: Multiplatform Creativity EngineFlash Professional CC: Multiplatform Creativity Engine
Flash Professional CC: Multiplatform Creativity Engine
 

Kürzlich hochgeladen

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

Leveraging BlazeDS, Java, and Flex: Dynamic Data Transfer

  • 1. LEVERAGING BLAZEDS, JAVA, AND FLEX: DYNAMIC DATA TRANSFER Joseph Labrecque 360|Flex – April 17th 2012
  • 2. Joseph Labrecque, MA University of Denver - OTL Senior Interactive Software Engineer Adjunct Faculty Fractured Vision Media, LLC Proprietor Twitter: @JosephLabrecque Web: http://josephlabrecque.com/
  • 3. Who is using ColdFusion?
  • 4. Who is using Java?
  • 5. Who is using BlazeDS?
  • 6. Who is using PHP + AMFPHP?
  • 7. Who is using FLEX?
  • 8. SESSION AGENDA What we will cover… • Technology choices involved • Systems configuration and documentation • Code snippet walkthough • Specific, cool use cases in university • Other stuff!
  • 10. BLAZEDS BlazeDS is the server-based Java remoting and web messaging technology that enables developers to easily connect to back-end distributed data and push data in real-time to Apache Flex and Adobe AIR applications for more responsive rich Internet application (RIA) experiences. Just as with the Flex framework, BlazeDS is expected to be contributed to the Apache Software Foundation (ASF).
  • 11. FLEX The Apache Flex framework provides a highly productive, open source framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops and operating systems. It provides a modern, standards-based language and programming model that supports common design patterns suitable for developers from many backgrounds. Flex applications run in the ubiquitous Adobe Flash Player and Adobe AIR.
  • 12. JAVA Oracle Java is a programming language and computing platform first released by Sun Microsystems in 1995. It is the underlying technology that powers state-of-the-art programs including utilities, games, and business applications. Java runs on more than 850 million personal computers worldwide, and on billions of devices worldwide, including mobile and TV devices.
  • 13. SPRING Spring is the leading platform to build and run enterprise Java applications. Led and sustained by SpringSource, Spring delivers significant benefits for many projects, increasing development productivity and runtime performance while improving test coverage and application quality.
  • 14. SPRING + BLAZEDS Spring BlazeDS Integration is a top-level Spring project, and a component of the complete Spring Web stack. This project's purpose is to make it easier to build Spring-powered Rich Internet Applications using Apache Flex as the front-end client. It aims to achieve this purpose by providing first- class support for using the open source Adobe BlazeDS project and its powerful remoting and messaging facilities in combination with the familiar Spring programming model.
  • 16. CHOICES / REASONS JAVA: Major apps use this or ColdFusion SPRING: Needed a modern framework for Java FLEX: For advanced functionality BLAZEDS: For AMF calls between Java and Flash HTML(5): Default web presentation technology Spring and BlazeDS work AWESOME together!
  • 17. BLAZEDS CONFIGURATION There is a dismal lack of clear instruction for configuring BlazeDS AMF services with Spring. Many of the resources that do exist refer to older versions of the software or strict scenarios that do not apply to everyone using Spring for their projects.
  • 19. OFFICIAL ADOBE RESOURCES http://opensource.adobe.com/wiki/display/blazeds/BlazeDS
  • 20. UNOFFICIAL GUIDE ;) http://inflagrantedelicto.memoryspiral.com/2011/01/get-up-and- running-with-blazeds-amf-in-spring-mvc/
  • 22. Action Message Format Binary format used to serialize objects graphs such ActionScript objects and XML, or send messages between an Adobe Flash client and a remote service. Used across over 15 platforms: ColdFusion, Java, PHP, Python, Ruby, iOS, even JavaScript!
  • 23. AMF0 Introduced in Flash Player 6 (2001). Number Boolean String Object Null Array Object/Array End
  • 24. AMF3 Introduced in Flash Player 9 (2006). Undefined Null False True Integer Double String XML Date Array Object XML End
  • 25. REMOTEOBJECT Provides access to Java objects through AMF components within Flash Player. <s:RemoteObject></s:RemoteObject> RemoteObject instances can be set up via MXML or ActionScript but they do rely upon the Flex framework.
  • 26. ENDPOINT The location of AMF services to access. http://josephlabrecque.com/messagebroker/amf Note that this URL will differ depending on how BlazeDS is configured via web.xml: <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/messagebroker/amf</url- pattern> </servlet-mapping>
  • 27. DESTINATION This is the service name established upon configuration: flexService Defined within any Java classes that will be used by Flash: import org.springframework.flex.remoting.RemotingDestination; @Service("flexService") @RemotingDestination(value="flexService",channels={"my-amf"})
  • 28. RESULT/FAULT This is a set of event handler methods defined in our RemoteObject for handling the results of AMF calls. This is normally done through ActionScript. private function resultAMF(e:ResultEvent):void { var r:String = e.result as String; }
  • 29. METHOD A Flex-based representation of the actual remote method to be invoked. Includes a representation of all arguments expected by this method as well. These values are able to use data binding. <s:method name=“remoteMethodName" ...
  • 30. MXML <fx:Declarations> <s:RemoteObject id="ro" showBusyCursor="true" endpoint="{siteURL+'messagebroker/amf'}" destination="flexService" result="resultAMF(event)" fault="faultAMF(event)"> <s:method name="createAudioRecordingFileItem"> <s:arguments> <bytes>{mp3ByteArray}</bytes> <responseId>{rID}</responseId> <replace>{replace}</replace> </s:arguments> </s:method> </s:RemoteObject> </fx:Declarations>
  • 31. ActionScript – AMF Invoke Invoke the send() method upon the specific method defined within the RemoteObject instance. private function saveMP3():void { ro.createAudioRecordingFileItem.send(); }
  • 32. ActionScript – AMF Result The result event handler is invoked when a successful result is returned from an AMF call. import mx.rpc.events.ResultEvent; private function resultAMF(e:ResultEvent):void { var r:String = e.result as String; }
  • 33. ActionScript – AMF Fault The fault event handler is invoked when a fault is triggered as the result of an AMF call. import mx.rpc.events.FaultEvent; private function faultAMF(e:FaultEvent):void { Alert.show(e.fault.faultString, "Error!"); }
  • 35. DU ASSESS-IT! Assess-It! is a web-based application that supports academic program assessment at the University of Denver. Assess-It! supports three basic assessment models which were developed based on input from faculty and staff who are engaged in academic program assessment at DU. https://assess-it.du.edu/
  • 36. SINGLE UPLOAD W/ TINYMCE Using TinyMCE for WYSIWYG text processing. http://www.tinymce.com/ No Java-based file management! Just PHP… what to do? We use Flex and BlazeDS: modified the TinyMCE image insert code. Easy!
  • 37. MULTI-FILE UPLOAD Looked at HTML <form> and JavaScript-based solutions. Many relied on Flash in backend. Why not just do it ourselves? Allows multiple selection, batched upload, immediate feedback for the user.
  • 38. IMAGE GALLERY VIEWER Q: Could we have done this in jQuery/HTML/JS? A: Sure. Q: Could we have done this in jQuery/HTML/JS in a solid, tested, cross-browser method with great user interaction in a couple of hours? A: Hell, no.
  • 39. AUDIO RECORDING Old recorder would save off to Flash Media Server as audio-only FLV. System then goes in via FTP to fetch it. New recorder does all the recording and encoding in the Flash Player. Then sends the bytes over to Java for file save via AMF. Uses: flash.utils.ByteArray flash.events.SampleDataEvent org.bytearray.micrecorder.encoder.WaveEncoder fr.kikko.lab.ShineMP3Encoder
  • 40. AUDIO PLAYBACK Basic playback of recorded files using the recorder module or uploaded MP3 files. Hooks into system through AMF. AMF not necessary.
  • 42. OTHER TECH… More than Flash… of course. • The markup is HTML(5). • Use of CSS3 for gradients, shadows, text. • TinyMCE and Flex integration. • Heavy use of JavaScript and jQuery. • jQuery makes JavaScript (fairly) usable! Actually really cool that we can do this now.
  • 43. HTML & FRIENDS (+FLASH) A few words… • Most web applications I’m involved in are a wide mixture of both front-end and back-end tech. • This has been the case for many years – it just makes sense in many cases. • If you are requiring Flash for core functionality – may as well use it more liberally. • HTML(5) has its place… so does Flash and Flex. • Seems people are OVERREACTING. Cut it out. ;)