22 March 2010
Note: This article was written using Flex 4 and/or Flash Builder 4, however, the information described here is still valid for Flex 4.5 SDK and/or Flash Builder 4.5 though some minor changes might be necessary.
As a fellow European said: "This is the question!". We have a question and you expect an answer. Right! I’m afraid you’ll have to wait a little bit. And not because I want to tease you, it is just there are so many things one can say about Flex, PHP, or about Flex and PHP integration.
Enough digressions! Let’s start from the beginning: what is actually Flex (I assume by now everyone knows what PHP is)?
The simplest answer is: Flex is just another way of creating an application authored in Adobe Flash Professional on Adobe Flash Player. A Flex application gets compiled into a SWF file, which is played inside of the browser by Flash Player. Why did we need another way of creating applications authored in Adobe Flash Professional on Adobe Flash Player? Traditionally those applications were created using the Flash Professional authoring tool. If you take a look at this tool, you’ll notice that it is oriented primarily for designers. There is a stage, a timeline, drawing tools, and so on.
When you are developing applications and you care about productivity, you want components, you want to be able to streamline development as much as possible by reusing code, and not last but not least, you want a modern IDE.
Thus a revised answer could be: Flex is an open source framework that helps developers to quickly create Rich Internet Applications (RIAs) that run inside Flash Player or Adobe AIR (see Figure 1 for a list of built-in UI components). The framework was shaped pretty much as it is today with the arrival of Flex 2, Flash Player 9, and ActionScript 3. The current version is Flex 4.
So using Flex you can create applications for Flash Player (web apps) or Adobe AIR (desktop apps). But what is so cool about building applications for Flash Player or Adobe AIR?
Well, at least there are two reasons: RIA and Contextual Applications.
If you compare the web applications with the desktop ones you can draw these points:
Each of these two categories has its own strengths. Wouldn’t be cool to have a third category that combines the reachness and availability of web apps with the richness and responsivness of desktop apps? Actually this category already exists (since 2002 when Macromedia used for the first time this term) and it’s called Rich Internet Applications. With Flex you can build RIAs easily.
From its inception in 2002, RIA came a long way. The first use cases were public facing applications. In the last couple of years we’ve seen an increasing usage of RIAs behind the firewall, in the enterprise world. Using the RIA approach in enterprise means bigger ROI. In Figure 2 and Figure 3 you can see how a simple form for gathering data about car crashes can be implemented using RIAs. Instead of having a bunch of text areas that force the user to type in a lot of information, you can create a user interface that lets the user pick up the car, describe the damages, and "draw" the accident scene.
One may think that if you build your application with Flex you’ll have problems with users not being able to consume your application because they don’t have Flash Player installed. This is not true, because for years 98% of all connected computers have Flash Player installed.
What about Contextual Applications? Contextual applications "are characterized by their ability to adapt presentation and performance to different application contexts, including multiple operating systems, platforms, and devices; diverse and changing types of networks; and unique user expectations and personalization".
A good example of the contextual applications is Times Reader by The New York Times (See Figures 4 and 5). This is an Adobe AIR application created with Flex, and it can run on desktops, laptops, PCs, tablets, and phones. It has offline support (you can read the news while not connected, because it saves these locally). It has the ability to adapt the content to the screen size (it can increase or decrease the number of columns, and remove pictures and articles from the active screen in order to fit the current size of the screen).
And finally I want to add to the case I’m building the Mobile world. More and more people have smartphones and use these devices for activities that not so long ago were possible only with laptop or desktop connected to a wire. And this trend is going in only one direction: UP! Soon there will be more people accessing the Internet from mobile devices than from computers. What about building applications for these devices? Well, to put it mildly is a nightmare. And it really isn’t someone’s fault! Having many companies building so many devices it is only natural to have specific ways for each platform (Symbian, Web OS, BlackBerry, Android, Windows Mobile, and iPhone).
2010 is the year when Adobe releases Flash Player 10.1 and Adobe AIR 2 for mobile devices (the first to receive this will be Android and BlackBerry; for iPhone you can use the next version of Flash Professional to package Flash apps as a native app). We are still working to create a Flex framework suited for mobile devices. Once you have this, you will be able to leverage your current Flex experience on mobile world.
Both Flex and AJAX are client-side technologies and both can be used to create RIAs or to "augment" existent web applications. Like in the case of Flex, typically an AJAX application makes a request to server after the initial response was rendered, and injects the response into the existing page once the servers sent the answer to that call.
In fact, there are people using both technologies to do things that would be impossible to do with only one of them.
Flex is a client side technology; PHP is a server side technology. Both technologies are quite mature: you can find tools, frameworks and libraries, and articles/examples for any task or application type you might think of.
Both technologies are open, and both have the lowest entry point: your time to understand them. Using Flex or Adobe AIR SDK and PHP with vi doesn’t cost a thing, and the same is using the runtimes (Flash Player or Adobe AIR) and using a web server with PHP.
If you are used to code using IDEs you can buy Flash Builder and Zend Studio to create a powerful setup for Flex and PHP projects (both these IDEs are Eclipse based and can be installed together on the same Eclipse instance).
Finally it is about being able to create better applications, being able to use text, video, sound, animations, gestures, multi-touch to create rich user interfaces, being able to create real-time, collaborative applications, being able to use the same technologies and workflows across OSs and devices (computers, smartphones, tablets)…and having fun while doing this.