Changing Adobe

George W

Adobe is no more the graphics developer tool vendor it used to be. It is a developer friendly company that has a huge array of technologies which the coders are going to love. In this article George W takes a look at the technologies that Adobe have in store for you….

George W

For someone who has spent over a decade in the IT industry, the name Adobe still is reminiscent of a company that makes tools that are meant for graphics developers. For long Adobe and its most famous tool Adobe Photoshop has been the Desktop Publishing guy’s (DTP) favorite tool.

But all this has changed now, and lot more will change as Adobe will soon be regarded as a developer friendly company changing the way we design and write software.

Most of it started with Adobe acquiring rival vendor Macromedia in April 2005. Macromedia at that time was known for their Flash technology as well as authoring and web development tools. In fact Macromedia was a mirror image of Adobe on the web platform. The deal which was completed almost two years back for a whopping 3.4 USD billion resulted in the merger of two companies that virtually controlled web and print multimedia market or at least were definite leaders in this space.

Unlike Adobe or erstwhile Adobe, Macromedia was a less formal or more developer friendly company. While users of Adobe tools were people from traditional fields such as designers, advertising professionals, artists and publishers, Macromedia tools were positioned for users with a better understanding of technology such as web designers, multimedia professionals and software developers.

And it was also clear that post merger Adobe will invest more into the technologies and product lines acquired as a result of the merger.

Macromedia had earlier looked at beyond web animation with their ColdFusion product line which primarily consisted of web application servers and associated tools. At the same time they had developed a scripting language loosely modeled on JavaScript called ActionScript which can be used to control timeline based Flash animations.

While ColdFusion had few takers outside certain niche markets, the product line survived over the years, despite issues from bugs to inconsistency over multiple editions.

Macromedia also ensured more acceptance to the Flash platform with keeping the Flash and files associated with it a open standard. They even released a free SDK, which unfortunately turned out to be a bit buggy.

After acquisition Adobe had integrated popular Macromedia tools into their own product line taking advantage of the new technologies acquired and strengthening them with Adobe’s own leadership position.

Let us take a look at few of these products that would be of interest to developers. 

Flash

Adobe Flash started of as a technology meant to make web pages look better. But slowly the technology which was purely a web designer tool had scripting features.

Originally Flash grew out of a chain of thought that started in the 1980s with some ideas Jonathan Gay had at school, then at college and later while working for Silicon Beach Software and its successors.

In January 1993, Charlie Jackson, Jonathan Gay, and Michelle Welsh started a small software company called FutureWave and created their first product, SmartSketch. A drawing application, SmartSketch was designed to make creating computer graphics as simple as drawing on paper. Although SmartSketch was an innovative drawing application, it didn't gain enough of a foothold in its market. As the Internet began to thrive, FutureWave began to realize the potential for a vector-based web animation tool that might easily challenge Macromedia's often slow-to-download Shockwave technology. In 1995, FutureWave modified SmartSketch by adding frame-by-frame animation features and re-released it as FutureSplash Animator on Macintosh and PC. By that time, the company had added a second programmer Robert Tatsumi, an artist Adam Grofcsik, and a PR specialist Ralph Mittman. The product was offered to Adobe and used by Microsoft in its early (MSN) work with the Internet. In December 1996, Macromedia acquired the vector-based animation software and later released it as Flash 1.0.

By 1999, Flash saw 100 million downloads and in 2007 it is estimated 97% of PCs across the globe has a Flash player installed in them.

In 2004, the "Flash Platform" was introduced. This expanded Flash to more than the Flash authoring tool. Flex 1.0 and Breeze 1.0 were released, both of which utilized the Flash Player as a delivery method but relied on tools other than the Flash authoring program to create Flash applications and presentations. Flash Lite 1.1 was also released, enabling mobile phones to play Flash content.

ActionScript

ActionScript first appeared in its current syntax with the release of Flash 5, which was the first thoroughly programmable version of Flash. This ActionScript release was named ActionScript 1.0. It was targeted at web programmers, who were at that time using mostly VBScript and JavaScript to create client side applications.

Macromedia Flash 6 (MX) then further broadened the utility of the programming environment by adding a number of built-in functions and allowing better programmatic control of movie elements. Flash 7 (MX 2004) introduced ActionScript 2.0, which added strong typing and class-based programming features such as explicit class declarations, inheritance, interfaces, and Strict Data Typing. ActionScript 1.0 and 2.0 share the same compiled form within Flash SWFs.

Everything is designed to be asynchronous; callbacks are ubiquitous, but Event objects do not exist.  The XML implementation has been present since Flash 5. Flash can send and receive XML, which can be used to create online multiplayer games via an online server.  The Flash authoring environment for ActionScript offers reference, code hints and syntax highlighting. Often, the source code is saved along with the rest of the movie in a .fla file. It is also common for ActionScript code to be imported from external text files via include statements. In this case, the external files may be compiled with the built-in compiler in the Flash IDE or with Motion Twin ActionScript2 Compiler (MTASC).

With the introduction of Flex 2 Adobe also introduced ActionScript3. The salient features of ActionScript 3 include a better referencing model, enforced statically typed models, better error handling. The best description of ActionScript 3 would be a language that is a cross of Java and JavaScript.

Flex

Flex is positioned as Adobe’s answer to the challenges which was yet unsolved by Ajax— bringing desktop like rich applications to the net. While Ajax created hype surrounding Rich Internet Applications, there were limitations to Ajax as a technology.

To understand what Flex is, you must first understand what a Flash movie is. A Flash movie, at its most simple, is a file with an SWF extension (the pros refer to them as "swiffs") that contains compiled code that renders an interface and occasionally make calls to back-end systems. The SWF is read by the Flash player, which most people (an estimated 97% of Web users) have installed as a browser plug-in, and rendered on-screen within the confines of the Flash movie. The Flash movie shows up on screen via some HTML tags that define its dimensions and other attributes.

To create a Flash movie, developers traditionally use Adobe's Flash IDE, a timeline-based application that is exceptionally well suited to creating animations. If you've never seen the Flash IDE, it's worth taking the time to download the free trial. The Flash IDE, however, was not originally intended to be a tool for application developers like us. While some incredible applications have been created using the Flash IDE, developers who come from a coding background have had a hard time getting comfortable building applications this way.

The Flex team was well aware of this and, to their credit, recognized that if Flash was going to play a significant role in the next generation of Web applications, especially at the enterprise level, they would need to entice coders to get in the game. Wouldn't it be great, they thought, to be able to create Rich Internet Applications (RIAs) using only code?
And so, Flex was born.

Flex allows you, the developer, to create Flash applications using code. The good news is that the code is very similar to the HTML and CFML you already know.

Here is a simple example:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
      <mx:Label text="Hello World!" fontSize="22" color="#ffff00"/>
</mx:Application>

Notice that Flex uses opening and closing tags, just like HTML and ColdFusion. In this case, the markup language is called MXML. Also, the first line tells you that MXML documents are standards-compliant XML files.

You can just take a look at this example too.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
   <mx:Script>
     <![CDATA[
       import mx.controls.Alert;
       public function doAlert():void {
         Alert.show('Hello Actionscript!');
       }
     ]]>
   </mx:Script>
   <mx:Button id="myBtn" label="Click me!" click="doAlert();"/>
</mx:Application>

What it does?

You can probably guess that this snippet of code displays a button on screen that, when clicked, calls the doAlert function. Inside the function is a call to Flex's Alert class, which generates alert boxes, just like in JavaScript.

ActionScript is where the real work of your Flex application occurs. It can be used to manipulate the application's visual elements as well as gather, send, and retrieve data from remote sources such as Web services, Java objects, and even ColdFusion Components (CFCs).

Flex also uses Cascading Style Sheets syntax to style the visual elements of your application, so those CSS skills will come in handy with Flex as well.

Flex represents what's known as the presentation layer of an application; the view part of that model-view-controller stuff that's all the rage these days. That is, its primary concern is to render the interface for the user and provide an environment that is comfortable and intuitive. For example, we're all used to dragging and dropping things within our desktop environments, so Flex has this functionality built in - and it's easy to implement.

What Flex does not do is all the back-end transactional things that an applications needs. It cannot directly send a query to a database. It cannot POP an e-mail account. It cannot manipulate files on the server. Is this a drawback to using Flex? No. In fact, it's its greatest strength. Flex leaves the choice of back-end technology up to the developer or organization. This means that the initial investments made to create such systems can be repurposed with a rich front end.

Flex contains several built-in functions that can talk to various back-end technologies, including native connections to ColdFusion CFCs and Java objects, XML files, as well as Web services. That last one is important; Flex can talk to any Web service, regardless of the technology used to create it. This means that an organization that has invested heavily in their technology of choice, say .NET, can retain that code base, while adding a sophisticated presentation layer that is difficult or impossible to achieve with a straight HTML interface.

Flex Data Services

Flex Data Services (FDS) is a server-side complement to the main Flex SDK and Flex Builder IDE. Deployed as a Java EE application, it adds the following capabilities to Flex applications:

  • proxying HTTP requests, as a workaround to the Flash Player sandbox security restrictions
  • supports the "publish" end of the "publish/subscribe" design pattern: the Flash client can subscribe to events broadcasted from FDS
  • dynamic MXML/Actionscript compilation. This is similar to the way previous versions of Flex applications were deployed

Adobe provides a free version of FDS which is limited to a single CPU, and doesn't support clustering. The full version costs $6,000 USD per CPU (limited to 100 concurrent users) or $20,000 USD per CPU.
The Flex Development Cycle
According to the Adobe Flex 2 docs, the development cycle will be something like this

  • Define an application interface using a set of pre-defined components (forms, buttons, and so on)
  • Arrange components into a user interface design
  • Use styles and themes to define the visual design
  • Add dynamic behavior (one part of the application interacting with another, for example)
  • Define and connect to data services as needed
  • Build the source code into a SWF file that runs in the Flash Player

Apollo

Apollo is the code name for a cross-operating system runtime being developed by Adobe that allows developers to leverage their existing web development skills (Flash, Flex, HTML, JavaScript, Ajax) to build and deploy Rich Internet Applications (RIAs) to the desktop.

Essentially, Apollo is Adobe's initiative to bring Rich Internet Applications from the web to the desktop in a way that uses the best of both worlds. The idea is that developers will be able to bring their web applications offline and take advantage of things a desktop application can do including accessing the file system and drag and drop from the desktop to the application. In addition, Apollo is going to be cross platform meaning you can build these desktop applications and they will run on PCs, Macs and Linux machines.

The idea of bringing the rich Flash experience to the desktop isn't something new to Adobe. Macromedia started down this path with their Central product line. Central was the very first implementation of bringing Flash outside the browser, though it saw limited adoption. Central acted as an application manager and Flash applications written for Central ran inside a Central desktop client instead of as separate applications, the model Apollo uses now. In addition, developing for Central was a nightmare involving having multiple .swf files and needing to code communication between all of them. Flex has made writing applications in Flash much more simple, but Central came before Flex.

In many ways, Apollo wouldn't have been possible without the Flex framework. In order to bring Flash applications to the desktop, you needed to make it more developer friendly on the web. Once Adobe accomplished that with Flex, the road to Apollo was complete.

Adobe's Flex is going to be a big contributor to Apollo applications and Adobe has made it very easy to convert Flash and Flex applications to the desktop. However Apollo will also offer support for Ajax and PDF. One of the things Kevin mentioned was that Apollo will give Ajax developers a very consistent and cross-platform development environment on which to deploy their web applications. Currently, Ajax developers need to deal with a variety of different browsers. While frameworks such as Dojo and Prototype have made this easier, building Ajax applications for Safari and other browsers requires extra time and cost. Apollo will give them the cross-platform aspect that makes Ajax development so compelling, but will not require the hacks that true cross-platform Ajax currently requires. In addition, you can port your current Ajax application to Apollo with almost no code changes. No Flash is required to use Apollo, your Ajax application can be turned into a desktop application without any Flash at all. For Web 2.0 companies, Apollo will be a great way to enhance their current applications.

Apollo will also leverage Adobe's PDF format.

Conclusion

What we have discussed in this article is purely the tip of the iceberg. Whether it is Apollo or Flex, Adobe’s plans are clearly to capture the frontend of application market. More importantly the web developers esepcially the scripting kiddies who somewhere in their career felt overwhelmed by the lack of skills in coding for the desktop can now hope to do with minimum learning curve.








}