Planet of the AOPs at 360|Flex

This year at 360|Flex in Denver I’ll be co-presenting a session with Mike Labriola called “Planet of the AOPs“. What is the Planet of the AOPs? Let me give you a little hint…

public class Foo {
  private function getPrivateBar():String {
    return "private bar";
  }
}
var foo:Foo = new Foo();
foo['getPrivateBar']();

Yup! It’s gonna be fun! The session will be on Tuesday April 12th at 2:50pm. Hope to see you there!

Also, Mike and I are doing a 360|Flex speaker chat today at 11am (MDT).

My Upcoming Flex Sessions in Atlanta – DevNexus and Atlanta Flex User Group

In a few weeks I’ll be speaking in Atlanta at DevNexus and at the Atlanta Flex User Group. On March 21, 2011 at DevNexus I have two sessions:

On March 22, 2011 at the Atlanta Flex User Group I will be presenting about Flex 4.5 – The Non-Mobile New Features.

I hope to see you at DevNexus and at the Atlanta Flex User Group!

Integrating Flex and Java EE with JBoss

Flex and Java have always fit together very nicely. Connecting from Flex to a Java back-end is pretty straightforward whether you are using plain old Java beans, Spring beans, or EJB session beans. I’ve created a video and some sample code that shows you how to connect Flex to a Java EE system using BlazeDS. This video walks though a real-time collaborative Whiteboard application that runs in the browser, on the desktop, and on mobile devices. Check out the video and let me know what you think.

Testing Flex Apps with FlexMonkey Reloaded

Whether or not you use a tool to test your Flex apps, you are repeatedly testing your application. Doing this by hand is a pain: start the app, click through some stuff, verify the result is what you expected, makes some changes to your code and then do it all again. The open source FlexMonkey tool automates that process so you don’t have to keep doing those steps manually. FlexMonkey works with Flex applications that run in the browser (Flash Player) as well as on the desktop (Adobe AIR). Jon Rose has just finished a complete overhaul of FlexMonkey that makes automating your Flex testing process uber-simple and much more robust than the previous version.

Jon and I have created some resources to help get you started using FlexMonkey. Start by reading the Introduction to Flex and AIR Testing with FlexMonkey. Then check out a short screencast I did that walks through the FlexMonkey basics:


To continue learning check out a series of videos from Jon that will give you a more in-depth look at each piece of FlexMonkey:

Now enjoy being more productive as you automate the testing process you do hundreds of times a day, leaving more time for Angry Birds! Let me know what you think.

Flex Jam February 2011 – Learn Flex in Ann Arbor

In a few weeks I’ll be in Ann Arbor, MI to lead a Flex Jam hosted by SRT Solutions. Code Jams give you the opportunity to learn by doing. So bring your laptop and come join us in Ann Arbor!

Here is the full description of the event:
Join SRT Solutions as we host James Ward, Adobe Flex evangelist, from Tuesday, February 15 through Thursday February 17 for 3 interactive days of Flex (and AIR) development and exploration. Jams, pioneered by Bruce Eckel and modeled after sessions that bring musicians together to create something new and interesting, take learning beyond the lecture/lab process. The lecture/lab learning works best for groups where everyone is at the same level. By bringing together developers of varying skill levels with a technology, the Jam process allows everyone to work at their own level.
Experienced Flex developers: bring problems of your own to work on, with the guidance of James Ward.
New or limited experience Flex developers: bring examples of problems to try, or work on the examples provided.

Go sign up now!

Building Cross-Device Apps with Flex and Spring at the Detroit JUG

On February 15, 2011 I’ll be presenting at the Detroit Java User Group about Building Cross-Device Apps with Flex and Spring. If you live in the Detroit area then I hope to see you there! If not, then talk to your local Java User Group leader about having me come and speak.

Here is the abstract for the talk:
Today, users want apps in the browser, on their desktop, phone, tablet, and TV. Reusing code across all of these devices is now crucial for developers. By combining Flex for the UI with Spring and Hibernate for the back-end, developers can build apps that work on a variety of devices including PCs, Android phones / tablets, the BlackBerry PlayBook tablet, iPhones, and iPads. This session will walk developers through the steps for creating these cross-device apps with Flex and Java.

Go register now! See you there! :)

Integrating Flex/Flash with HTML5 APIs

Beyond the media hype about Flash versus HTML5 exists the reality of coexistence and cooperation. This coexistence and cooperation makes the web a better place. When developers combine the strengths of Flash with the strengths of HTML, users get the best possible experiences on the web.

Both HTML and Flash are important foundations that Adobe builds its products on. Here’s a little secret about Adobe’s business model… When new versions of those platforms come out, so do new versions of the tools for building on them. And guess what Adobe makes money on… Tools. So it is true that Adobe loves Flash AND HTML5. :)

In the world of coexistence and cooperation (that is the technical reality) we find some really exciting things. One such thing is Jangaroo an open source project that cross-compiles ActionScript to JavaScript. This means that you can build applications in ActionScript (and eventually MXML) and cross-compile those applications to run in places where Flash doesn’t exist. And you can even use Adobe tools to help you write that ActionScript. :)

Another quick example I whipped up is a proof-of-concept of how you can integrate Flex applications with the new HTML5 session history and navigation APIs (pushState, replaceState, and so on). In a sufficiently modern browser (such as Chrome, Firefox 4, or Safari) open the following demo in a new tab / window:
http://www.jamesward.com/demos/FlexReplaceState/app

As you click on tabs notice that the URL changes without page refresh and without resorting to the use of named anchors / hashes. Also notice that page refresh, back, and forward all work. Check out the source for the demo on github. That is the kind of cooperation and integration we will continue to see more of as HTML5 matures. I’m excited to see the web become a better place as HTML and Flash both mature!

P2P in Desktop, Mobile, and Tablet Flex Apps

Using the open source Flex SDK, developers can easily build desktop, mobile, and tablet applications that use Peer to Peer (P2P) communication. I’ve created a video that walks through demos and code illustrating how to use the P2P APIs in Adobe AIR applications. Check it out:

Grab the code for the demos in the video from github:

Just as the video shows, it’s incredibly easy to use the P2P APIs. Here is a quick walk through. First create a new NetConnection that is connected to “rtmfp:” like so:

localNc = new NetConnection();
localNc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
localNc.connect("rtmfp:");

In the netStatus event listener wait for the “NetConnection.Connect.Success” event and then set up the NetGroup:

private function netStatus(event:NetStatusEvent):void
{                        
    switch(event.info.code)
    {
        case "NetConnection.Connect.Success":
            setupGroup();
            break;
    }
}
 
private function setupGroup():void
{
    var groupspec:GroupSpecifier = new GroupSpecifier(GROUP_ID);
    groupspec.ipMulticastMemberUpdatesEnabled = true;
    groupspec.multicastEnabled = true;
    groupspec.routingEnabled = true;
    groupspec.postingEnabled = true;
 
    // This is a multicast IP address. More info: http://en.wikipedia.org/wiki/Multicast_address
    groupspec.addIPMulticastAddress("239.254.254.2:30304");
 
    netGroup = new NetGroup(localNc, groupspec.groupspecWithAuthorizations());
    netGroup.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
}

Now handle a “NetGroup.SendTo.Notify” event when a message is received over the P2P connection:

// in the netStatus switch block
case "NetGroup.SendTo.Notify":
    var data:Object = event.info.message;
    break;

And finally to send a P2P message to everyone who is listening simply do:

netGroup.sendToAllNeighbors(objectToSend);

That’s it! Super simple and super fun! :)

Thanks to Tom Krcha for all of his great blogs on how to do this. Also thanks to Mark Dong and James Li (Flash Platform Evangelists in China) for helping me build P2Pong.

Dreamforce 2010 and Cloudstock

I’ll be speaking at Dreamforce again this year! I have two sessions that are going to be super fun! First is a panel called “Cloud Mobility: Taking Critical Business Functions With You, Whenever, Wherever” on Wednesday at 3:15 PM. Then on Thursday at 11am I’ll be co-presenting a session on “Building Rich User Interfaces with Adobe Flash Builder for Force.com” with Markus Spohn from Salesforce.com.

Preceding Dreamforce is the Cloudstock event where you can see some other great presentations related to Flex and RIAs. Lee Brimelow will be doing a presentation on “Flex and Flash Platform on the Cloud” that is guaranteed to entertain and educate. There will also be presentations from Nigel Pegg on Real-time Apps and Keith Sutton on “Adobe’s Cloud Offerings for Developers and Enterprises”.

It’s going to be a great week! I hope to see you at Dreamforce 2010!