SlideShare a Scribd company logo
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

More Related Content

What's hot

Php Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant KillerPhp Conference Brazil - Phalcon Giant Killer
Php Conference Brazil - Phalcon Giant Killer
Jackson 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 API
Damir 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 CXF
Carl Lu
 
Introduction to ActiveMQ Apollo
Introduction to ActiveMQ ApolloIntroduction to ActiveMQ Apollo
Introduction to ActiveMQ Apollo
dejanb
 
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
Udaya 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 Deal
Jim Duffy
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
Piergiorgio Lucidi
 
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/CamelCamelone-2012 HTML5 WebSocket ActiveMQ/Camel
Camelone-2012 HTML5 WebSocket ActiveMQ/Camel
Charles 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 Security
Kenneth 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
 
Hidden Gems in ColdFusion 11
Hidden Gems in ColdFusion 11Hidden Gems in ColdFusion 11
Hidden Gems in ColdFusion 11
ColdFusionConference
 
Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016
ColdFusionConference
 
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
ColdFusionConference
 
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
ColdFusionConference
 
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 Alfresco
Wildan Maulana
 

What's hot (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
 

Similar to 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 Unconference
Elad 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 Integration
rssharma
 
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
ukdpe
 
Zend Amf And Flex
Zend Amf And FlexZend Amf And Flex
Zend Amf And Flex
riafox
 
Introduction to Microsoft Silverlight
Introduction to Microsoft SilverlightIntroduction to Microsoft Silverlight
Introduction to Microsoft Silverlight
Glen 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 Resources
keith_sutton100
 
A Microsoft primer for PHP devs
A Microsoft primer for PHP devsA Microsoft primer for PHP devs
A Microsoft primer for PHP devs
guest0a62e8
 
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
jphl
 
Adobe Flex builder by elmagnif
Adobe Flex builder  by elmagnifAdobe Flex builder  by elmagnif
Adobe Flex builder by elmagnif
mbaye camara
 
AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012AMF Testing Made Easy! DeepSec 2012
AMF Testing Made Easy! DeepSec 2012
Luca Carettoni
 
Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0
guest642dd3
 
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 Rails Pres
Flex Rails PresFlex Rails Pres
Flex Rails Pres
philipsexton
 
Flex In Portal Final
Flex In Portal   FinalFlex In Portal   Final
Flex In Portal FinalSunil Patil
 

Similar to 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
 
Adobe® Flex™
Adobe® Flex™Adobe® Flex™
Adobe® Flex™
 
What is Adobe Flex ?
What is Adobe Flex  ?What is Adobe Flex  ?
What is Adobe Flex ?
 

More from 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 Learning
Joseph Labrecque
 
Interactive Animation with Adobe Animate CC
Interactive Animation with Adobe Animate CCInteractive Animation with Adobe Animate CC
Interactive Animation with Adobe Animate CC
Joseph Labrecque
 
Cinematic Interactives with Animate CC
Cinematic Interactives with Animate CCCinematic Interactives with Animate CC
Cinematic Interactives with Animate CC
Joseph Labrecque
 
Getting Familiar with Animate CC
Getting Familiar with Animate CCGetting Familiar with Animate CC
Getting Familiar with Animate CC
Joseph Labrecque
 
Responsive Web Design
Responsive Web DesignResponsive Web Design
Responsive Web Design
Joseph 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 Interactivity
Joseph 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 Landscape
Joseph Labrecque
 
Surviving Industry Disruption in Higher Education
Surviving Industry Disruption in Higher EducationSurviving Industry Disruption in Higher Education
Surviving Industry Disruption in Higher Education
Joseph 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 Consumption
Joseph Labrecque
 
Introducing Adobe Animate CC
Introducing Adobe Animate CCIntroducing Adobe Animate CC
Introducing Adobe Animate CC
Joseph Labrecque
 
Bootstrap Fundamentals
Bootstrap FundamentalsBootstrap Fundamentals
Bootstrap Fundamentals
Joseph Labrecque
 
Flash Professional CC for Mobile
Flash Professional CC for MobileFlash Professional CC for Mobile
Flash Professional CC for Mobile
Joseph 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 Interactivity
Joseph 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 Look
Joseph 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 Beyond
Joseph Labrecque
 
Mobile Application Development Technology Roundup
Mobile Application Development Technology RoundupMobile Application Development Technology Roundup
Mobile Application Development Technology Roundup
Joseph 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 Engine
Joseph Labrecque
 

More from 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
 

Recently uploaded

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 

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. ;)