From the Trenches of the Enterprise Software

Yakov Fain

Subscribe to Yakov Fain: eMailAlertsEmail Alerts
Get Yakov Fain: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: ColdFusion on Ulitzer, Java EE Journal, Java Developer Magazine

CFDJ: Article

AMF 3 Specification Is Published

Data serialization between Flash Player and the rest of the world made public

Action Message Format (AMF) is a protocol that is used to serialize the data coming into Flash Player or going out to other programming environments that need to communicate with Flash Player. Say, if you create in Java an instance of the class MyOrder.java, this instance can be converted into a string of bytes, sent over the wire to Flash Player and then recreated there as an instance of the ActionScript object MyOrder.as.  The rules of how to do this are defined by a communication protocol, such as  AMF.  Prior to Flash Player 9, the protocol AMF0 has been used, but now Adobe offer implementation of  more efficient AMF3.

The good news is that Adobe decided to make the AMF3 protocol  available to the public, and you can find its description in this document
This is great news for Flash community as it’ll allow more and more third parties to implement this protocol and offer a lot faster communication between the Flash Player and programming environments written in other languages. While Adobe today offers its own implementation of this protocol  for Java and Coldfusion, now it’ll start competing  with other firms that may offer more efficient implementation of this protocol or better tool for developers. The Midnight Coders is one of the vendors that are offering their version of AMF for Java, .Net and other platforms.

While the AMF uses HTTP as a transport, the speed of data exchange between Flash Player and, say,  J2EE application over AMF would be at least ten time faster than comparing to a regular HTTP protocol.
AMF protocol  is based on data polling, but Adobe offers yet another Real Time Messaging Protocol (RTMP) that is being used in such applications as video streaming or others  where the real-time push from the server is needed, for example financial trading applications. The specification of RTMP protocols has not been published yet at this point.

More Stories By Yakov Fain

Yakov Fain is a Java Champion and a co-founder of the IT consultancy Farata Systems and the product company SuranceBay. He wrote a thousand blogs (http://yakovfain.com) and several books about software development. Yakov authored and co-authored such books as "Angular 2 Development with TypeScript", "Java 24-Hour Trainer", and "Enterprise Web Development". His Twitter tag is @yfain

Comments (1) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


Most Recent Comments
Spam hater no. 1 02/05/08 04:48:23 AM EST

I have studied the specification and have a couple of comments.

The compressed way of representing integers with 1 to 4 bytes are very smart, but why did they stop with 4 bytes. If they allowed up to 5 bytes, a complete 32 bit integer could be represented this way.

It isn't clear - at least to me - how negative integers should be represented.

Examples, examples, examples - why aren't their any?