<<

MASARYK UNIVERSITY FACULTY}w¡¢£¤¥¦§¨  OF I !"#$%&'()+,-./012345

Advanced Internet Applications on Desktop

DIPLOMA THESIS

Bc. Martin Miko

Brno, 2011 Declaration

Hereby I declare, that this paper is my original authorial work, which I have worked out by my own. All sources, references and literature used or excerpted during elaboration of this work are properly cited and listed in complete reference to the due source.

Advisor: doc. RNDr. Tomáš Pitner, Ph.D.

ii Acknowledgement

I would like to thank to doc. RNDr. Tomáš Pitner, Ph.D. whose guidance, many inspiring ideas, remarks, and above all patience made all this possible. Without his good will this work would never be born. Also I would like to thank to all my friends, who stood behind me, had to cope with my moodiness and helped in many ways in the time of need. And last, but not least, I would like to thank to my family for their support and understanding.

iii Abstract

The aim of this work is to describe, analyse and compare selected important rich Internet application platforms that allow desktop deployment. Analysed platforms are Adobe AIR using applications built in Adobe Flex and Silverlight. Secondary aim of this work is demonstration of capabilities offered by AIR framework and comparison of AIR applica- tions to solutions based on JavaScript. To compare and analyse various platforms, a comparison or benchmarking method is required, but unluckily no relevant methods exist. This work proposes a benchmarking method that allows complex comparison of this type of platforms. Method is based on gen- eral requirements of users and developers. Proposed method consist of two parts, the first part scores features of platforms, the second part further refines results obtained in the first part, according to defined user roles. Result of comparison showed that Adobe AIR is more mature and balanced platform than Microsoft Silverlight and it is more suitable for desktop deployed rich Internet appli- cation development. Another result is proposal of benchmarking method that can be used, for complex analysis of rich Internet application platform that provide desktop deployment capabilities. The demonstrational application shows that AIR-Flex solution can offer better and more interesting features than JavaScript based solution. Nevertheless rich Internet application platforms cannot compete with traditional ones like neither in terms of performance nor offered capabilities.

iv Keywords desktop, RIA, rich, Internet, application, Flex, AIR, Silverlight, comparison, benchmark

v Contents

1 Introduction ...... 1 1.1 Thesis goals and structure ...... 2 1.2 Genesis: From web to desktop ...... 2 1.3 Rich Internet applications on desktop ...... 4 1.4 Available Rich Internet Application desktop technologies ...... 6 1.4.1 Adobe AIR, Adobe Flex and Microsoft Silverlight ...... 7 1.4.2 JavaFX ...... 7 1.4.3 Canoo ULC ...... 8 1.4.4 ...... 8 1.4.5 Prism ...... 9 1.4.6 Fluidium ...... 10 2 Closer look at Adobe Flex, Adobe AIR and Microsoft Silverlight ...... 11 2.1 Adobe Flex and Adobe AIR ...... 11 2.1.1 Technology backgroud ...... 11 2.1.2 History ...... 12 2.1.3 Platform architecture ...... 13 2.2 Microsoft Silverlight ...... 14 2.2.1 Technology backgroud ...... 15 2.2.2 History ...... 15 2.2.3 Platform architecture ...... 16 3 Comparison and benchmark analysis proposal ...... 19 3.1 Why we need to analyse, compare and benchmark ...... 19 3.2 Comparison and Benchmarking method ...... 20 3.2.1 About proposed method ...... 20 3.2.2 Requirement groups ...... 21 3.2.3 User roles ...... 23 4 Benchmark ...... 25 4.1 Technology ...... 25 4.1.1 Offered features ...... 25 4.1.2 Integration options ...... 27 4.1.3 Areas of use ...... 29 4.1.4 Conclusion ...... 31 4.2 Portability ...... 31 4.2.1 Supported operating systems, devices and system requirements . . . . 31 4.2.2 Runtimes ...... 33 4.2.3 Conclusion ...... 34 4.3 Development ...... 35 4.3.1 development kits ...... 35 4.3.1.1 AIR SDK and Flex SDK ...... 35 4.3.1.2 Silverlight 4 SDK and Expression Blend SDK ...... 36

4.3.2 AIR development tools ...... 36 4.3.3 Open-source AIR development tools ...... 37 4.3.4 Silverlight development tools ...... 38 4.3.5 Open-source Silverlight development tools ...... 39 4.3.6 Testing and debugging ...... 40 4.3.6.1 Flash platform tools ...... 40 4.3.6.2 Silverlight tools ...... 41 4.3.7 Knowledge and skill reusability ...... 41 4.3.8 Conclusion ...... 44 4.4 Usability ...... 44 4.4.1 Distribution ...... 45 4.4.2 User experience ...... 46 4.4.3 Conclusion ...... 47 4.5 Results ...... 47 5 Development of AIR video chat client ...... 50 5.1 Application analysis and design ...... 50 5.2 Development and deployment ...... 53 5.2.1 Development ...... 54 5.2.2 Deployment ...... 57 6 Conclusion ...... 59 Bibliography ...... 64 A Content of attached CD ...... 65

vii Chapter 1 Introduction

The information technologies are one of the most rapidly evolving areas in the human his- tory. Their penetration into lives of individuals and whole societies is undoubtedly astonish- ing and complete. People cannot imagine their lives without them anymore. It is interesting to watch how quickly all hardware gets smaller and its computing power grows, Smart- phones of current era have more computing power than powerful server computers used twenty years ago, how communication infrastructure evolved into single ecosystem, inter- connecting almost the whole world. And all these changes have influenced both software and human activities as well. Software and human activities connected with information technologies changed rapidly to reflect current needs and capabilities of their hardware counterparts. Software evolved not only in a technical way, but also in a way of usability. User interfaces transformed from simple terminal screens to appealing graphical user interfaces, which are more intuitive and more usable, even for new users, without any previous experience with similar software. When speaking about human activities, it is important to say, that they have always reflected the way how people worked with information technologies. The more people use various software tools and devices, the more are human activities tied to information technologies. On the one hand it is good, because the information technologies help us with boring, or otherwise laborious work. On the other hand, they have become in many cases too integral part of our lives, and if they stop working properly one day, we may not be able to identify it, or even recover from possible losses. The main force behind a recent development of information technologies is undoubtedly the Internet. The Internet as a global phenomenon is not only a way of quick accessing of information, but also a global infrastructure for business, government or social networking. The Internet itself is changing the world as we know it. It provides a new, unique and glob- alised environment, where almost everything is instantaneously accessible to everyone. It is very intriguing to watch how Internet resembles the globalization of real world and vice versa. Maybe one day we will have a single infrastructure, and will use a single device to ac- cess all our data, which will be hosted on-line. A science fiction you say? Well not at all, technologies are still evolving, and they are evolving pretty rapidly in this way. Powerful mobile devices and widely available services accessible over Internet are the cornerstones for future unified platforms. These platforms will employ new models of using and building of applications. Probably they will not be much different from those we already know, and

1 1.1. THESIS GOALS AND STRUCTURE they will be built on top of what we already have, combining only the best of each approach. Closest to these new ways of understanding, using and developing of before mentioned applications are rich Internet applications and platform on which they are built. The main reason for choosing these platforms for future application development is their hybrid char- acter. They can combine the best of -based and desktop-based applications, into a single, powerful application. Furthermore, they offer a unified environment, so ap- plications can be run on multiple devices and operating systems almost seamlessly. This is probably the way most future applications will be developed.

1.1 Thesis goals and structure

Goals of this work are following. The main goal of this work is to describe, analyse and compare selected important rich Internet application platforms that allow desktop deploy- ment. Analysed platforms are Adobe AIR using applications built in Adobe Flex and Mi- crosoft Silverlight. Secondary goal of this work is demonstration of capabilities offered by AIR framework and comparison of AIR applications to solutions based on JavaScript. In this work we will look at some noteworthy platforms, which support deployment on desktop operating systems and we will try to compare them and find out what can be build on top of them. But before that, in this chapter, we will describe background and the evolution which lead to current state in this field. After a brief introduction a chapter describing background of analysed platforms will follow. The third chapter will describe how we will compare chosen platforms. In the following chapter we will be analysing the chosen platforms. And in the fifth chapter, we will describe development of an example application built in one of analysed platforms.

1.2 Genesis: From web to desktop

To start with, we will look back into the history. Everything started with the invention of World Wide , or briefly the web. A service firstly introduced in 1991 at Euro- pean Organization for Nuclear Research (Conseil Européen pour la Recherche Nucléaire – CERN). Its purpose was simple: allow sharing of data among high energy physicists. The idea of implementation was simple too: use of interlinked documents that would point to each other, creating environment, in which any information could be retrieved from any- where. Users of the web in its early years were mostly university-based scientific departments or physics laboratories. The true turning point came two years after the creation of the web, when first graphical web browsers were introduced. In years following, web quickly de- veloped to a medium, which was rapidly gaining popularity for its universal reach. As the web was spreading around the world, grew the demand for its capabilities. Simple text doc- uments, with simple graphics were just not enough. Technologies like Flash, JavaScript or Java Applets were introduced over time to enable more interesting and interactive experi- ence, when browsing web sites.

2 1.2. GENESIS: FROM WEB TO DESKTOP

Another milestone in development of the web was Dot-com boom and bust, which hap- pened between 1999 and 2001. This could be considered as a transition through the peak of the famous Gartner’s Hype cycles graph, where new coming technology, at first creates an initial hype and big expectations, which are followed by an inevitable disappointment. What happened was that many companies tried to build their business on services provided via World Wide Web on top level .com [read as dot-com] domains. Rather quickly it became obvious that many companies will bankrupt after consuming their initial capital. Despite bad ending of Dot-com era, it brought two positive aspects. First of all, there were large investments to telecommunication infrastructure, which allowed cheaper and more afford- able high-speed Internet connections. The other positive aspect was that companies which survived have found successful business models, which gave the web more compelling ex- perience. The last era of web, which in fact still lasts, can be defined as Web 2.0 era, and was in- troduced shortly after the infamous Dot-com bubble burst. Web 2.0 can be briefly described as an era of publishing and reaching information in a new way, as well as providing new experiences to end users. Promotion of new ways of sharing content and information, like Weblogs (commonly known as Blogs), RSS news feeds, Wikipedia, YouTube, or other ser- vices made web popular, mainly among ordinary users. One concept we must not forget to mention are mash-up applications, which were usually built on top of renowned existing services. The precursor for mash-ups was royalty free, general availability of interfaces of popular web services. Mash-up applications brought a new way of experience, when con- tent from various sources was mixed together, providing brand new service or application that mixed existing qualities of used services and added value on top of them. The important fact to be noted here was that all these technologies and techniques less or more supported or used the idea of a rich Internet application. The first time in the history term rich Internet application indirectly appeared in March 2002, when , the founder of Flash platform, released a white-paper called “Macro- media Flash MX — A next-generation rich client”[1]. Although indirectly noted as Internet application and rich client, this paper is credited for coining the term rich Internet applica- tion. The paper was aimed at Flash as a technology, promoting its new capabilities and rea- sons for building rich Internet applications. However, ideas in this paper can be extracted and used generally for any rich Internet application based on any technology. At the pa- per publication time, web pages as well as web-based applications were designed mostly as thin clients. It means all the computing have been done on servers and client comput- ers were used only as renderers for HTML form based user interfaces. This was a waste of client computer potential, as well as very unnatural way of interacting with applications, when each interaction with application required a page refresh. Rich Internet applications introduced new model, where loading of data is done in the background, and does not in- terfere with user actions. Another cornerstone was use of visually rich user interfaces that resembled more desktop applications graphical user interfaces, than ordinary web pages. And all this was allowed by using computing power of client computer, instead of relying only on remote servers. Thanks to all these features, rich Internet applications became

3 1.3. RICH INTERNET APPLICATIONS ON DESKTOP very popular over time, and many techniques and technologies have been developed and employed. As the concept of rich Internet application proved to be viable, many companies con- verted their applications to use this new model. Except that, many new web applications were created, promoting this concept among ordinary users. Mainly companies like Google, eBay, or Amazon, who offered their services in this new way need to be credited. As men- tioned earlier, rich Internet applications rapidly gained on popularity, and many companies started using them as the main way of delivering their services to customers. Wider use of these application brought new demands. Software developers as well as end users wanted new features and wanted to use these applications in more traditional way, as they were used from the desktop application environment. Their voice has been heard and leading companies introduced frameworks and technologies that allow more or less fluent transi- tion between the web and the desktop world. Companies like Adobe, Mozilla, Google and Microsoft, introduced their solutions, promoting various concepts of desktop capabilities, which are enabled when applications are built on top of their platforms. Although rich In- ternet applications are built on top of mature and proved concepts, desktop deployment is still young and quite new. It will take some time until rich Internet applications deployed on desktop will earn their place among other technologies.

1.3 Rich Internet applications on desktop

This work is aimed at very young branch of rich Internet applications, the rich Internet applications deployed on desktop. Rich Internet applications have been around for many years. They have evolved from simple graphical user interfaces to applications with high complexity and wide range of capabilities. In the same way has evolved the definition of the term rich Internet application. In the early years it was understood as “an application with rich ”, as time went on the definition changed to “an application which delivers rich user experience”. Rich Internet applications were originally not meant to run as stand-alone desktop soft- ware, they were and still are primarily web based applications, however, there has been a quite big excitement about building and reusing rich Internet application technologies to build desktop applications recently. So there is a question. What benefits bring rich Internet application technologies that allow desktop deployment? In the first place rich Internet application on desktop is a customized . It means it can look the same to every user, on any computer, because the same code is being executed to create the user interface. The underlying browser or virtual machine handles the differences between operating systems, what allows code to execute in the same way on a wide variety of machines. Furthermore, the desktop deployed rich Internet applications can store data locally and usually do not require an Internet connection to run. In some cases, applications are constrained by the browser window, but that may be acceptable drawback. Among disadvantages belongs use of “bridging” layer between application and host oper- ating system. In many cases this can cause worse performance.

4 1.3. RICH INTERNET APPLICATIONS ON DESKTOP

A traditional desktop application, on the other hand, starts up quickly and has usually better performance, because it is run directly from the user’s computer. Traditional desktop applications use specific software platforms, this means they can be highly specialized, optimize and complex. A big drawback of pure desktop applications is usually difficulty of portability, what is usually cost for using specific operating systems features, which are not available on other ones. Generally speaking, rich Internet applications deployed on desktop may have somewhat worse performance and usually will not be able to utilize all operating system specific fea- tures, but they are able to target multiple operating systems with the same code, and can be developed quicker. Now that we know about benefits these applications bring, it is time to define what exactly this work will examine. First of all we need to point out the fact that rich Internet ap- plications can be built using various technologies and employ various approaches. Maybe the best known and most popular way is use of HTML with JavaScript, CSS and eventu- ally (AJAX stands for Asynchronous JavaScript And XML, a technique allowing user to interact with a web page or an web application without page refreshes). These are open standards favoured by many developers, because they can be learned quickly. They usu- ally do not require any special software for development and very lightweight software for their deployment. All that is needed is an ordinary text editor and web browser with ap- propriate extension. Various frameworks and runtimes are available to add desktop specific capabilities and ability to run web applications offline. Although all this may sound great, there are drawbacks that favour different approaches. One of the main problems is wide variety of software platforms that can be used to run these application and their various support of different capabilities on different host operating systems. Developer is forced to choose one and adjust his or hers application according to capabilities and restrictions posed by that platform. This issue partially breaks the concept of developing universal application which can be run anywhere. Another drawback is in technologies itself. HTML, as the main visual interface definition language, was not created for this purpose. If anyone likes it or not, the fact is that HTML was meant to display text documents, not applications, the situation is much the same in re- gard with CSS. Although these technologies are powerful, they still do not offer capabilities of desktop solutions, but that is the cost for their portability and simplicity. When speaking about JavaScript and AJAX, here the main problem is in their nature of scripting language; they cannot be compiled and optimized, what can in some cases worsen the performance of the whole application. We have to mention the lack of audio or video support as well. These capabilities can be enabled only via external objects embedded into applications. However, this problem will be partially solved with approaching HTML 5 standard, but the standard is still only a draft and support of these features is rather poor. Furthermore, the standard itself will not address media streaming or access to operating system devices, which is supported with proprietary technologies. Nevertheless it introduces offline storage, what can simplify and make this capability more consistent across platforms and runtimes.

5 1.4. AVAILABLE RICH INTERNET APPLICATION DESKTOP TECHNOLOGIES

To sum up the ideas behind; HTML and related technologies used for rich Internet appli- cation development are great and easy to use, but they remain only collection of technolo- gies. Without proper frameworks build on top of them and runtimes where applications can be deployed, they are still quite useless when we speak about desktop deployment. As we mentioned earlier, there exists another approach to this type of development, it is build around more or less proprietary, but open technologies, using virtual machines, or dedicated runtimes. These are maintained by large developer companies and provide much more consistent development and deployment environment. Another benefit provided by proprietary technologies, is that they usually form a single platform, with clear vision of use and wide variety of features and supported user scenarios. Using dedicated virtual ma- chines or runtimes allows access to operating system specific capabilities and devices, such as built-in web camera or microphone. Although they may seem promising, many problems exist on these platforms as well. This work will focus on evaluating both capabilities and drawbacks; of let us say two most common commercial platforms, which can be used for rich Internet application deployment on desktop. These platforms will be and Microsoft Silverlight. When talking about Flash platform, we will focus especially on its technologies that create desktop sub- platform, namely Adobe Flex framework and Adobe AIR. Other significant platforms and technologies that are out of our scope will be mentioned and briefly described in following part.

1.4 Available Rich Internet Application desktop technologies

This part will briefly describe some noteworthy technologies or platforms used for desktop rich Internet application development, or their deployment to desktop. They vary in many ways; employ different techniques or approaches to utilize the power of the rich Internet application. In spite of before mentioned facts, they have one common denominator, they are meant to be used for processing of rich Internet applications as standard desktop ones. Some of these platforms are still in preproduction version, but all mentioned platforms need to be considered as potential rivals to already mature and commercially used ones. Following technologies and platforms will be described: • Adobe AIR and Adobe Flex • Microsoft Silverlight • JavaFX • Canoo ULC • Google Gears • Mozilla Prism • Fluidium

6 1.4. AVAILABLE RICH INTERNET APPLICATION DESKTOP TECHNOLOGIES

1.4.1 Adobe AIR, Adobe Flex and Microsoft Silverlight

These two technologies will be mentioned just briefly, because their description and analysis will follow in next chapters. Adobe Integrated Runtime (AIR) is a commercial platform, offering cross-operating sys- tem runtime, with deep operating system integration. Idea of AIR is to bring rich Internet applications to desktop, with all features offered by web technologies and enrich this fea- ture set by enabling developers to utilize native operating system capabilities. AIR forms with Adobe Flex full featured development platform that is suitable mainly for multimedia content distribution. Microsoft Silverlight is still a quite premature technology, if we talk about desktop de- ployment, but Microsoft tries hard to make it usable and interesting mainly for business application developers and vendors. With Microsoft’s strategic share on desktop operating system market, Silverlight needs to be concerned as a very potent rival in this area. Al- though still being "one step behind" Adobe’s AIR platform Silverlight’s recent progress in field of RIA technologies shows that Microsoft takes this competition seriously, but as we will mention later maybe not in the same way as Adobe does.

1.4.2 JavaFX

One of the youngest of platforms we will mention is, as its name suggests, based on Java technology. JavaFX can be considered a younger sister of the Java platform. This means it benefits from long technological evolution of Java and furthermore it utilizes power of . JavaFX applications can use features of Java such as the HotSpot virtual machine, garbage collector, advanced set of libraries, support for hardware acceleration or access device level capabilities on Mobile and TV devices. With Java SE 6 update 10 (and above) JavaFX applications can use Drag-to-Install. Drag-to-Install is a very nice feature; application can be dragged out of browser and then re-launched directly from desktop. The latest release enables building applications for desktop, browser and mobile phones. JavaFX platform provides a rich set of User Interface controls to accelerate content cre- ation, advanced animation features, capabilities for integration of rich media, rich text and web services. An example of JavaFX application can be seen in line in Figure 1.1. Designers can use JavaFX Production Suite. This suite includes a plug-ins for Adobe Pho- toshop, and JavaFX Media Factory for importing . In this way designers can create and export graphics from their existing tools into the JavaFX format. This can be very useful in creating user appealing applications. From a development standpoint, JavaFX provides a unified development and deploy- ment model. This means developers can target their applications for any platform (mobile or desktop) and switch between them easily. Applications are written in JavaFX Script. It is a declarative scripting language that looks like a mix of JSON (JavaScript Object Notation) and Java code. In this way developers can write code that closely matches the layout of the and reuse already existing Java libraries.

7 1.4. AVAILABLE RICH INTERNET APPLICATION DESKTOP TECHNOLOGIES

Figure 1.1: Example of JavaFX 3-D Display slideshow application

JavaFX has a great potential, it provides many features and is comparable to Adobe’s Flash or Microsoft’s Silverlight platforms. It can benefit from big ecosystem and market that is provided by Java community. If Oracle will treat this platform properly, it can become a viable alternative to current commercial ones[2].

1.4.3 Canoo ULC

UltraLightClient (ULC) developed by Canoo is a commercial platform built on Java. As said by authors, ULC is a development library for creating web applications with a richer interface. ULC aims at enterprise users, who have little bit different requirements for their applications. Enterprise applications must be reliable, scalable, highly available and easily maintainable. So use of Java, as platform for both client and server side of application, is logical. Concept of this framework is in splitting business logic and presentation layer. Client side application is just a presentation engine (thin client), that displays data and manages user actions, while whole business logic is deployed on server. Client communicates with server side application, over standard protocols (HTTP, HTTPS, RMI / IIOP, etc.) [3] Unlike others UCL uses Java’s Swing library for building user interface of their client applications. However, massive usage of Java leads to question if ULC can be still considered a rich Internet application.

1.4.4 Google Gears

Google’s Gears was an open-source project developed by Google. It seemed to be a promis- ing technology, although there were few crucial drawbacks. Google announced on their blog in February 2010 that they are abandoning Gears in favour of emerging HTML 5. HTML 5 will cover most of features offered by Gears, and will be broadly adopted and implemented in all major web browsers. Many of these features have already been ported to Google’s

8 1.4. AVAILABLE RICH INTERNET APPLICATION DESKTOP TECHNOLOGIES

Chrome web browser[4]. Although Gears is deprecated by Google, we will look at it to exemplify how may be HTML 5 application designed and built in the future. Gears is a browser extension that makes it possible to create web applications, which can run offline. It extends browser capa- bilities and exposes them via JavaScript . Another important remark on Gears is that it does not provide deep integration with host operating system. Gears applications rely more on features that can be delivered via online rather than offline mode. Gears provides three key features:

• A local server, to cache and serve application resources (HTML, JavaScript, images, etc.) without need to contact a remote server

• A database, to store and access data from within the browser

• A worker thread pool, to make web applications more responsive by performing time expensive operations in the background

From the logical point of view Gears provides tools that developer can use, but it is up to them how they will use them. Problems connected with offline support of web based ap- plications are well described on Gears’ support page describing its architecture. This page describes many possible ways of how to solve problems that need to be addressed and pro- poses implementations not only in Gears. Google promised to provide support for existing applications. So until the full adoption of HTML 5, Gears and all APIs ported to Chrome browser can be considered as an excellent example of what can be really achieved with en- hanced web browser and open standards technologies like HTML and JavaScript.[5]

1.4.5 Mozilla Prism

Mozilla Prism brings a different approach to the deployment of RIA applications on desk- top. Prism is a runtime and offers only very few specific features of host operating systems. Applications or runtimes like this are commonly called site-specific browsers. At the bot- tom layer it uses the same web browser engine as Mozilla does. It can be installed either as a stand-alone application or as an extension of Mozilla’s Firefox. It really seems to be just a custom Firefox instance, allowing web applications to have its own desktop icon and run in separate window. No offline support or deeper integration with host operating system is supported. This may seem useless and illogical, but the whole idea of prism is supported by the fact that many desktop applications have moved to the web. Also many new applications have been created as pure web applications and they are taking place of the old desktop ones. Prism still seems to be in a preproduction version, based on current enrolment in Mozilla labs. However, as noted on its site it is heavily used by Yahoo! Zimbra and WorkSmart.net services[6].

9 1.4. AVAILABLE RICH INTERNET APPLICATION DESKTOP TECHNOLOGIES

1.4.6 Fluidium This is a very specific technology, honestly it is a "one man show" project, but its concept is very interesting and it should be noted. Fluidium is an open-source platform for developing rich Internet applications that run as native Mac OS X desktop applications. Simply it means that its author has thrown away whole cross-platform concept and focused only on Apple’s Mac OS X operating systems. He proclaims that Fluidium is something like AIR, but just for Mac. Fluidium is said to works like a wrapper around existing web applications, giving them the right look and feel. Fluidium being platform dependent allows usage of specific Cocoa (Apple’s application framework used to build their native applications) features, and this is what gives these applications their competitive edge. This project was inspired by Mozilla’s Prism and Adobe’s AIR. It is built on open source technologies, and it is tightly connected with , which is a site-specific browser for Mac OS, that means it is something very similar to Mozilla’s Prism project[7].

10 Chapter 2 Closer look at Adobe Flex, Adobe AIR and Microsoft Silverlight

In this chapter we will look into platforms that have been chosen for comparison. We will de- scribe background, history and architecture of AIR and Silverlight platform to give a better understanding, why they use different techniques and offer different features. This chapter will not focus on particular features or capabilities; they will be described in the comparison, but rather on ideas and technologies behind these frameworks.

2.1 Adobe Flex and Adobe AIR

To start with, we need to say that Adobe AIR and Adobe Flex are parts of a bigger Adobe Flash platform. Flash itself was originally an animation tool for web sites. Over years of development it evolved into a full featured rich Internet application platform, however, it was still missing some features, which would open the platform to more developers. Being primarily a platform for visual designers it offers great authoring tool, which is currently called Flash Professional. Although Flash Professional is great for animations and visually rich application development, it has poor support for programming, debugging and testing in a traditional way. Adobe, having a leading position in the field of rich Internet appli- cations, quickly understood what is their platform missing. The missing component was a framework that would help to do their job in a native and a more straight forward way. So logically another step in Flash platform’s evolution was Flex. Flex is an open source framework which offers tools and building blocks for rich In- ternet application development. Unlike Flash, Flex is oriented towards programmers and offers all tools that are needed for the application development. These cornerstones and a strong demand for offline support promoted introduction of new technology called AIR. AIR standing for Adobe Integrated Runtime, extended platform’s reach to desktop and mo- bile devices. What created let us call it an AIR sub-platform.

2.1.1 Technology backgroud

The idea of the AIR runtime was introduced to address simple yet important need. Flash platform needed desktop runtime to extend its reach. Adobe wisely built AIR runtime in a versatile manner to support not only Flash based applications, but also more common HTML-based ones. Including both the WebKit HTML and Adobe Flash engines, enables developers to build applications using HTML, JavaScript, Flash, or Flex.

11 2.1. ADOBE FLEX AND ADOBE AIR

In general the Adobe AIR runtime enables developers to build web applications that run as standalone client applications without constraints of a web browser. Using a Flash engine with API exposed to Flex and Flash developers makes it a key component of the Flash Plat- form. It provides a consistent and flexible development and runtime environment for the delivery of applications across various devices and platforms. Except common desktop op- erating systems AIR supports Google Android, BlackBerry Tablet OS and Apple iOS mobile operating system[8], furthermore AIR is supported on some smart TVs as well. In this work we will focus mainly on Flex based AIR applications, however, we will not describe Flex framework in detail. Flex framework itself is quite complex and its functional- ity will be described where appropriate. Although we will not describe Flex itself in detail, most of our descriptions in comparison chapter will refer to it in order of an implementation layer, if not explicitly mentioned otherwise.

2.1.2 History

The history of Adobe AIR began only in 2007, but AIR has already undergone many im- provements and became a robust and very usable platform. Adobe made the first public preview release of AIR, at that time called by code name Apollo, on March 2007. This first release contained runtime, software development kit and extension for the Flex framework. Shortly after followed three beta versions, first on June when Apollo was renamed to cur- rently used AIR, second on October, and third on December. First official release was on February 2008, when the Adobe AIR 1.0 runtime and SDK was released. Version 1.1 was released on June 2008 and included a number of new fea- tures. Support for additional languages, support for localizing the name, description, local database error messages of the application, a new property for detecting the space available on a drive, or a new property for detecting whether the host operating system’s window manager supports transparency are only a fraction of many updates that were added. Next important release of AIR was on November 2008 and been marked as version 1.5. New features included support for encrypting the local database, added support of new Flash Player 10 features, like anti aliasing engine, dynamic streaming and many more. Also the version of WebKit that AIR used was updated, what improved performance of HTML based applications due to a new JavaScript interpreter. Another important release connected with version 1.5 was on December 2008, when the first release of AIR for Linux was intro- duced. During year 2009 were released another three minor version of AIR 1.5, which were mostly bug fixes, or addresses compatibility and security issues. Last major update was preceded by two betas on November 2009 and February 2010 and a release candidate on May 2010. Final release of AIR 2.0 was on June 2010 and the AIR platform once again gained many new capabilities. New features and capabilities that were introduced included mass storage device detection, native installer and related functionality, performance improvements, global error handler and many more. Another milestone of AIR platform was official support of Google Android operating system, released on October 2010. This clearly shows that Adobe promotes AIR platform as an environment for multiple

12 2.1. ADOBE FLEX AND ADOBE AIR devices, not only for desktop deployment. The 2.5 version was released on October 2010 and included some minor improvements for desktop applications and many improvements for Android platform. Final release as of time of writing is version 2.5.1 which contains only security and bug fixes[9].

2.1.3 Platform architecture

As we already mentioned Adobe AIR runtime is relatively new platform, but it actually uses three very mature and stable cross-platform technologies. These technologies allow AIR to be a cross-operating system, multi-screen runtime that allows developers to leverage their web development skills to build and deploy rich Internet applications to the desktop and mobile devices. AIR uses following technologies:

• WebKit HTML engine - used for rendering HTML content inside an AIR applica- tion. It is an open source, cross-platform browser. WebKit is the rendering engine on which Apple’s browser is built on. It has a strong support of W3C stan- dards, such as HTML, XHTML, DOM, CSS and ECMAScript. Except strong support of standards, it also provides support for enhanced functionality, like rounded cor- ners using CSS.

• Adobe Flash engine – is used for rendering and running Flash based content. Flash engine is a cross-platform virtual machine used to run full SWF-based applications, created using either Flex or Flash. Combining Flash platform with ActionScript lan- guage gives Flash based applications more capabilities, compared to HTML-based ones. Mainly when it comes to multimedia capabilities, like playing video, or access- ing peripherals such as microphone or webcam.

• SQLite engine – is a database engine which enables local database access. It’s an extremely lightweight, open source, cross-platform SQL database engine. Thanks to its small memory footprint and low system requirements, SQLite is heavily used as embedded memory storage engine in many mobile and desktop applications. SQLite uses an ordinary file to store the entire database (tables, indexes, etc.), which has standardized structure, and thus is platform independent.

Except these technologies the runtime provides set of APIs, which enable individual engines to communicate with each other and with operating system (see Figure 2.1)[10]. In this part we have to mention one more thing, it is security model. Adobe AIR ap- plications allow developers to access many features of host operating system, but there are some security limits. Security model is based on sandboxes, where two separate modes are used. AIR uses two different sandboxes to divide local and remote parts of application and to provide reasonable level of security. The application sandbox contains all content that is installed with the application inside the application directory. These are typically HTML, XML, JS, and SWF files. Only files inside application sandbox have access to platform’s API

13 2.2. MICROSOFT SILVERLIGHT

Figure 2.1: AIR runtime architecture and other parts of runtime. The other sandbox is a nonapplication sandbox, here resides content that is either accessed locally, but not installed with AIR application, or accessed re- motely. Content inside the nonapplication sandbox is handled as if it was in a Flash security sandbox in web browser, so it does not have access to local AIR APIs and additional stricter security rules apply[10]. Features we have mentioned here do not describe AIR capabilities in an exhausting man- ner, but should be enough to show the concept of the AIR platform. As we will proceed through comparison, we will uncover additional aspects of AIR and related technologies.

2.2 Microsoft Silverlight

Microsoft has always been the leader in desktop operating system universe. In fact, Mi- crosoft has always held the largest market share of desktop operating systems market, with its Windows operating systems. Having its own, worldwide dominating desktop platform, enabled Microsoft to focus on development of its unique and optimized desktop application platforms and frameworks. After long years of development Microsoft introduced .NET as their primary platform for desktop application development. The .NET platform ensured Microsoft’s long lasting dominance as platform vendor on Windows operating systems. Nevertheless, the world is changing, and rich Internet applications gain on importance quickly. Microsoft seeing great opportunities in this new potential market was forced to cre- ate a platform that would be both viable and somehow related to technologies already in its portfolio. After unsuccessful attempts with JavaScript and various proprietary technolo-

14 2.2. MICROSOFT SILVERLIGHT gies, Microsoft introduced Silverlight. Silverlight also relied on JavaScript at first, however, the first patch introduced .NET model of functionality. In fact Silverlight was designed to be direct competitor to Adobe’s Flash platform, as both these platforms target almost the same audience. Silverlight relies on mature technologies like .NET and WPF, what makes it a quickly developing and feature rich platform.

2.2.1 Technology backgroud

Unlike Adobe’s AIR, the Silverlight framework was developed to conquer the world of rich Internet applications. Microsoft with its .NET platform and all related technologies has a strong foundation on which it can build its products. In the beginning the Silverlight was introduced as a subset of Windows Presentation Foundation that is a graphical subsystem for rendering user interfaces in Windows-based applications. WPF was initially released as a part of .NET framework and used XAML, a XML-based layouting language for building user interfaces. XAML in fact is very similar to Adobe’s MXML or other languages of this kind. Shortly after Silverlight has been released, Microsoft understood what the weak and strong points of its new platform were, and added many new features over a rather short period of time. Silverlight became a lightweight version of .NET runtime, which was ca- pable of delivering rich graphics and multimedia features in the same way as Flash, but at many costs. Silverlight is not as portable as AIR and compared to full .NET framework has drastically reduced functionality. Silverlight is meant to run on any browser and on any operating system, but that is only a marketing phrase and no one knows, if and when Silverlight achieves this goal. Silverlight is aimed at .NET developers, who can leverage their knowledge and utilize all the power of .NET that Silverlight offers for rich Internet application development. What brings us to the crucial piece of knowledge, Microsoft does not consider Silverlight as a plat- form that should be used primarily for desktop application development, and in this case .NET platform should be used instead. In spite of these facts, Microsoft provides support for desktop deployment, but in its own way.

2.2.2 History

Silverlight with its first official release in second half of 2007 was already updated for about 25 times, in less than two and a half year. When Microsoft released first Community Tech- nology Preview of Silverlight, it used code name: Windows Presentation Foundation Every- where (WPF/E). The official release of Silverlight was on September 2007, when core presentation frame- work and input, user interface and multimedia controls were released. This implementa- tion relied mostly on JavaScript, but its use was later discontinued, in favour of modified, lightweight .NET runtime. Almost at the same time Microsoft released Silverlight 1.1 re- ferred to as Alpha refresh, which was later renamed to Silverlight 2.

15 2.2. MICROSOFT SILVERLIGHT

In the following year many updates were issued, addressing new features and improve- ments and Silverlight 2 betas. The final release of the Silverlight 2 was on October 2008. In version 2 Silverlight finally gained its .NET nature and many new features were introduced, including advanced skinning and templating support, comprehensive networking support allowing calling of REST, WS*/SOAP, POX, RSS and standard HTTP services, advanced content protection (Silverlight DRM) and many more, but the desktop deployment was not supported yet. After few beta releases; version 3 of Silverlight framework was released on July 2009. This release introduced new functionality including out-of-browser support. Out-of-browser support is Microsoft’s term used for Silverlight applications that can run stand-alone outside of browser. Microsoft decided to use interesting runtime model. Runtime itself is just spe- cial process that uses web browser engine combined with Silverlight plug-in and provides stand-alone runtime. This runtime was available for Windows and Mac operating systems, with supported browser installed. Final version, of Silverlight as of time of writing, is version 4, which was released on April 2010. Version 4 brings, among many other features, further improvements of out-of- browser support, as well as support of Windows Phone 7, where Silverlight should be used as primary platform for native application development[11][12].

2.2.3 Platform architecture

Silverlight is a powerful development platform allowing creation of engaging, interactive user experiences for web, desktop, and mobile applications, both online and offline. It uses a plug-in architecture built on top of .NET framework. This means, both desktop and web deployed applications use the same plug-in, the only difference is in a runtime which hosts it. Silverlight supports two programming models: the JavaScript API for Silverlight and the managed API for Silverlight. The JavaScript API for Silverlight is strongly discouraged to be used and is available to ensure backward compatibility with version 1 applications. The managed API is based on a subset of the .NET framework, enriched with special features available only in Silverlight. Components of Silverlight architecture are following:

• Core presentation framework – provides components and services oriented toward the user interface user interaction, including user input, media playback, DRM or data binding. Into Core presentation framework belongs XAML, vector graphics, images and animation as well.

• .NET Framework for Silverlight – is a lightweight version of the .NET Framework that contains all necessary components and libraries, including data integration, net- working, base class libraries, garbage collection, and the common language runtime (CLR). Another important part of this framework is Windows Communication Foun- dation, which helps with access of remote data and services. Dynamic language run- time (DLR) is also a part of .NET Framework for Silverlight. DLR provides dynamic

16 2.2. MICROSOFT SILVERLIGHT

compilation and execution of scripting languages such as JavaScript and IronPython, which can be used to program Silverlight applications

• Installer and updater – is installation and update control that simplifies the instal- lation process of application when used for the first-time, and provides easy and automatic update mechanism. However it is not part of the Silverlight core stack.

We have mentioned all the important parts of Silverlight framework (see Figure 2.2), but still one part is missing, the host browser core. The host browser core, or browser core func- tionality provides a bridge between Silverlight plug-in and host operating system. It also influences the performance of the whole application, because the browser core and the Sil- verlight plug-in form together a virtual machine for deployed application[13].

Figure 2.2: Silverlight runtime architecture

Since Silverlight version 4, out-of-browser applications can be developed and installed under two different security profiles. First option is out-of-browser application with partial trust; the second is out-of-browser application with elevated trust. The out-of-browser appli- cation running under partial trust can be installed on the user’s computer, but will have the same security context as an in-browser Silverlight application. It means the application will have a very limited access to the host computer. Almost all functionality involving interac- tion with the host operating system will have to be initiated by the user. On the other hand

17 2.2. MICROSOFT SILVERLIGHT the out-of-browser application installed under the elevated trust will have more privileges and better access to the host operating system. Trusted applications capabilities include: relaxed user consent and initiation requirements, full screen support, window customiza- tion support, or limited access to the host file system. Although applications running under elevated trust offer many useful features, it is strongly advised to use them only if these features are needed[14]. Not all capabilities and features of Silverlight were mentioned, but we covered basic con- cepts behind this platform as much as it was possible. Additional features will be analysed later in comparison and will give us better insight into the Silverlight as a whole.

18 Chapter 3 Comparison and benchmark analysis proposal

3.1 Why we need to analyse, compare and benchmark

Over past forty years information technologies have undergone many changes and rapid development. Over those years many new technologies have emerged. Some have failed, other were successful and flourished for a long time. Quick evolution was continuously opening new possibilities of how to use them. Their popularity grew with their better af- fordability and usability. New technologies, which were initially available only to scientists, government organizations and big corporations, suddenly became available to the masses. The ordinary people started using computers and information technologies in many areas of their lives, creating a demand for innovations. This demand opened a whole new market and fuelled even faster development and evolution. Another fact caused by the wide adoption of information technologies was their continuous diversification and increase in complexity. Taking into account all these facts, it is obvious, that it became impossible to know every technology. The only reasonable option in this situation is to specialize ourselves and narrow down our interests. Specializing on a particular area of interest usually becomes a big problem, if we want to, or need to, adopt new technologies. Problems become even bigger problem when it comes to software devel- opment, where available technologies change quickly. A very good example can be recent rapid development of web-based software platforms. Web-based application development usually requires integration of more than one technology. This means we have to have at least rough knowledge about available technologies and frameworks based upon them. In the software development, like in any other business area, is important to carefully plan before starting a new project. Choosing wrong technology may cause serious losses and can consume large amount of money and other resources. But on the other hand, if we choose well, we can have serious competitive edge. Generally we can have different views at a problem. Everything depends on our situation and goal we want to achieve. Choosing the right target audience, developing the right product, and using the right platform are the keys to success. If we are in the role of a decision maker we would usually welcome some kind of help or guide. This is when analysis and comparison, or benchmarking comes useful. Having a guide helping us focus on important features and skipping those unimportant can save us lot of trouble and time. All before mentioned reasons give us a clear picture why are analysis, comparison and benchmarking so important. We can find some similar works analysing various features of

19 3.2. COMPARISON AND BENCHMARKING METHOD

RIA frameworks, but they usually focus only on web applications and their deployment.

3.2 Comparison and Benchmarking method

Although benchmarking is usually associated with performance tests, in general it may be used as a way of comparison between more objects of interest. Examined objects are graded according to predefined criteria, and they can be compared based on these results. This approach allows us to relatively compare objects and somehow show qualitative differences between them. Benchmarking of software development platforms is not an easy task. Wide variety of factors needs to be taken into account, if we want to assess what they really offer. When it comes to rich Internet application platforms aimed at desktop deployment, situation be- comes even more complicated. We are examining platforms designed for web use, but trying to apply the same criteria as we would on full featured desktop ones As noted before benchmarks usually tend to be either performance oriented[14]. In case of web applications we can find ease of use oriented comparisons as another way of assess- ing its potential. It is fully up to examiner, which particular features he or she will favour, compare and assess. Lack of any formal standards opens many possible ways of how to do such comparison and benchmarking. All that exist is usually a set of tables comparing some- times even unrelated facts about rich Internet application frameworks on Wikipedia.org. Lack of any formal documents or standards is caused by the fact that desktop deployed rich Internet applications are still not widely adopted. Wider adoption over time, and growing demand for this type of rich Internet applications, will surely bring more and more compar- ing and benchmarking standards and methods. In our case focusing on performance would be quite worthless, because it is rather dif- ficult and not very correct. We have to take into account various architectures, devices and approaches, which can influence application behaviour and its performance. Performance can be strongly influence by the way of implementation as well. Another important fact to consider is how quick frameworks and underlying technologies evolve. Both analysed frameworks having major releases every year, introducing major technical improvements, cause performance benchmarks to be out of date very quickly.

3.2.1 About proposed method

Having described motifs behind the creation of our method we can continue to its descrip- tion. We need to stress the fact that comparison and benchmark method proposed and used in this work is unlike others. Because of lack of any other similar methods we had to pro- pose the whole method from a scratch, only based on assignment criteria and general facts and well-known requirements of users. Our method covers technical features, development process and partially usability. It will covers basic needs that should be considered when choosing rich Internet application framework, and also will focus on demands of various users that either develop or consume applications built on top of these frameworks.

20 3.2. COMPARISON AND BENCHMARKING METHOD

The evaluation process itself is divided into two stages. In the first stage, platforms will be evaluated against a set of requirements divided into four requirement groups. In each requirement group we will describe in more or less detail, what and why we are comparing and assessing. Score will be awarded for each group according to Table 3.1. Detailed de- scription of requirement groups will follow later in this chapter. In the second stage, we will define three user roles, which will describe general requirements of possible user groups of framework and respectively created applications. Group scores from previous analysis will be multiplied by weights according to specific user roles. User roles will be also described later in this chapter. As a result we will have 3 benchmark scores for each framework, each reflecting particular needs of targeted audience. Based on these results we can conclude which framework is more suitable for particular use and target users.

Rank Description Score mark Not Available Examined requirement is not implemented at all. 0 Very Poor Examined requirements are implemented badly 1 and they cannot be used in production environ- ment. Poor Requirements are implemented poorly. Supported 2 features can be used, but implementation is odd or too laborious if used. Good Requirements are implemented fairly, many re- 3 quirements are met. Supported features are us- able. Very good Very good implementation, almost all or all re- 4 quirements are satisfied. Implementation should satisfy everything that could be expected. State of art Exemplar implementation, nothing more can be 5 achieved with current technologies.

Table 3.1: Benchmark ranks and scores.

3.2.2 Requirement groups

As mentioned before, evaluation will be done against four requirement groups. These groups represent non performance requirements that should frameworks meet to be usable, by any possible user. Each group will focus on chosen features of respective area. At the end of each group evaluation will be a summary of results and obtained score of both frameworks. Following groups will be analysed:

• Technology maturity

• Portability

21 3.2. COMPARISON AND BENCHMARKING METHOD

• Development

• Accessibility and usability

The technology group will assess offered features, integration options and areas of use. It is clear that if we want to decide which platform to use we will consider platforms capabili- ties at first. Offered features play key role in any decision making process, if platform does not offer what we need, it is worthless for us. Integration options represent another aspect of technology features. We are building rich Internet applications on desktop and it means we need a certain level of desktop integration and we also expect to have available all net- working integration capabilities of non desktop applications. Last requirement in this group describes and analyses the areas of use. The areas of use will be viewed as use cases of ap- plications that can be built on top of analysed platforms. In this part we will describe strong and weak areas of both platforms and look where they can be used. We will also mention their use beyond desktop deployment. And finally look a little bit in the future as we will mention announced future capabilities of both platforms. The portability group focuses on support of cross-platform deployment. This require- ment is based on the fact that web-based rich Internet applications have very good porta- bility options. Virtually they can be run almost on any machine with appropriate runtime plug-in, and this is exactly what we would like to have available, when we are building and deploying desktop applications. We will analyse supported operating systems, system re- quirements and respective runtimes. These are the features which influence where and how applications can be deployed. In the development group we will focus on support of application development pro- cess of analysed platforms. In fact this group of requirements will be analysed very deeply, much more than other groups. The idea behind this group of requirements is following: if we want to develop applications quickly, we need to have an easy to learn framework and good learning support. We will describe software development kits, development tools, test- ing and knowledge reusability. We will start with description of available software devel- opment kits. We will continue with in-depth description of development tools. Third part will describe testing, not only from the point of available tools, but also from the theoretical view. It is because many web developers are not used to use automated testing tools and frameworks, because of the nature of web-based applications. Final part will be dedicated to knowledge and skill reusability. This aspect of platforms can play a key role in adoption process, if a developer comes to a familiar environment, required skills can be learned very quickly. The last requirements group focuses on usability features offered by investigated frame- works. These features are of big importance to end users. We will discuss distribution op- tions and user experience. The distribution options are important part of first impression, if the end user cannot obtain a copy of our application, all our efforts are wasted. In this part we will mostly describe the installation and update options and related problems. In the user experience part we will look at some features that may be useful when we want

22 3.2. COMPARISON AND BENCHMARKING METHOD to build and deliver appealing and visually customized applications. These options will be discussed with focus on user interface capabilities.

3.2.3 User roles As we mentioned before, the second part of the benchmark will base its assessment on user roles. As we look at rich Internet application life-cycle, we can identify three distinctive user roles, which are content provider, application developer and the end user. These roles are defined in a way to reflect different needs of users on each stage of application life-cycle. In reality they can more or less overlap, but they still retain their distinctive character. Each role has 10 weight points distributed according to requirements it represents (see Table 3.2) These weight points will be used to multiply results from the first part so each platform can get maximum of 50 points per any user role. Based on resulting scores we will be able to assess which platform fits which role the best. In the rest of this part we will describe each user role to explain weight point distribution.

Content distributor Developer End user Technology maturity 3 4 2 Portability 3 2 3 Development 1 4 0 End user 3 0 5

Table 3.2: User role - requirement groups weight matrix

Content distributor role represents users and organizations that use rich Internet applica- tions for multimedia or information distribution. Into this role belong various entertainment companies, providing streamed audio and video, as well as companies that use rich Internet applications as front-end for their services, like eBay, NASDAQ, or FedEx. We must not for- get eLearning providers, because rich Internet application solutions can provide enhanced user experience, for their students. A common pattern among all these use-cases is service distribution from provider to end user. This makes this role the most balanced in terms of requirements posed on platform and applications. Content distributor must consider tech- nological, portability as well as usability options. Development capabilities does not bother him too much, the aim of this role is on reaching, delivering and satisfying end user with provided service. Development itself can be outsourced, thus the lesser interest in this area. Developer role naturally represent programmes as well as visual designers or other pro- fessionals who work together on building of applications. This role stresses more technical aspects of the framework than those connected with usability. This may seem like devel- opers were not interested in usability at all, but it is not quite true. Developers consider usability options, but not in the first place. What developers need is a good set of tools, ma- ture platform, which will offer the capabilities they need, including those connected with usability. Some common criteria that are important to any developer may include: easy to adopt programming language, good development support, stable application programming

23 3.2. COMPARISON AND BENCHMARKING METHOD interface, easy way of portability and advanced technology features. Weights assigned to re- quirement groups try to reflect these needs as much as they can. Finally the end user role represents consumers of applications. End users are usually or- dinary people, who will use the application presumably on daily basis. They do not care what development capabilities platforms have. Their biggest concern is about usability, if they are not able to use application in an easy and meaningful way, they will not use it. In- directly they also take into account technology and portability features. In connection with technology features we need to concern what advanced features technology offers, if it can- not satisfy need of users it may become eventually useless. When speaking about porta- bility users need to be able to run their rich Internet applications virtually from anywhere, although exceptions exist. Now that we have explained reasons behind this work and method that will be used to compare chosen platforms, we can proceed to the next chapter, where actual comparison will happen.

24 Chapter 4 Benchmark

This chapter contains results of the benchmark. Evaluation of each technology against re- quirement groups. There is a conclusion after each part, showing final scores for both frame- works.

4.1 Technology

In technology part we will focus on more technological aspects of both frameworks. First of all, we will analyse features that we would expect and that are offered. After that we will look into integration options that frameworks provide. And finally we will describe and compare areas of use of both frameworks and propose possible further application of offered features.

4.1.1 Offered features In this requirement we will focus on chosen features of both frameworks, based on expecta- tions that can developers or end users have when they are designing and using these appli- cations. Undoubtedly both end users and developers expect some features to be available in any framework and application that may be developed and used as rich Internet application on desktop. Let us call these features the common features of rich Internet applications on desktop. Apart from common features we will look at more specific features, like business application support and entertainment support too. Now let us begin with the common set of features we would expect any rich Internet application on desktop to have. Here is a list of described features as they will follow: • Multimedia capabilities

• Local storage

• Local file system access Support of multimedia capabilities is somehow automatically implied when we talk about rich Internet applications. In fact the term rich was used to describe these capabilities in the beginning of their expansion. Now as time passed, multimedia capabilities evolved and support much more than plain rendering of animations. Both frameworks offer more or less the same. Support of advanced animation rendering, video and audio playback or

25 4.1. TECHNOLOGY streaming has become a standard. Interesting feature for developer and content provider may be the Digital Right Management (DRM) support[16]. DRM support is in fact crucial to create applications for digital media distribution, like music and video download or rental store, or streaming solutions. In field of DRM, Silverlight has the upper hand. It has very advanced DRM support that covers all scenarios that can be expected. AIR applications do not support DRM directly, but they need special Adobe Flash Access software development kit to enable it[17]. However, with this support kit they are capable of almost the same that can be done with Silverlight DRM. Another interesting feature is hardware acceleration. Flash and also AIR applications support only H.264 video hardware decoding on desktop for now. Silverlight on the other hand supports hardware acceleration of whole user interface, making it a bit more inter- esting. Nevertheless both frameworks have this feature still in early development phase, so further improvement can be expected. Local storage and local file system access are the next two capabilities that we will inves- tigate. First of all we need to mention that local storage is something totally different than local file system access. By local storage we mean local, private data store. It can be single file or couple of files that store our data, usually arranged as objects or virtual files. In contrast local file system access allows us to access and manipulate local files on user’s computer. It is obvious that using local storage private to our application is different than accessing files on user’s file system. Both frameworks provide local storage, but in different ways. Adobe AIR provides two primitive types of local storage, SharedObject and Encrypted local storage[18]. SharedObject method is used to store small chunks of data, in our case locally (it supports remote storage method too, but that is out of scope of this work). This method allows sharing of objects among multiple client applications, what is useless in case we want to store secret data. Encrypted local storage is the second option. As its name sug- gests, content stored in this local storage is fully encrypted. Each application has its own storage, except that each application has separate secure storage for each user who uses it. This means it is ideal for storing data like login information, but not for confidential data like DRM keys or security certificates, because other processes run under the same user can access its content. Both methods are recommended to be used as a caching method, rather than persistent storage. It is because content can be lost for various reasons, for example during bad update of application, change of publisher ID and so on. In case we want to use persistent storage it is strongly advised to use embedded SQLite database and store its content on local file system, having the possibility to encrypt it, it gives us the ideal solution for storing the confidential data persistently. Silverlight offers different way of storing local data. Silverlight’s implementation is called Isolated Storage. It is available for both out-of-browser application modes that Silverlight provides[19]. Storage structure is organized as a virtual file system. It can contain files and folders and thus hierarchically organize stored data. In this way applications can save data in their own isolated portion of the file system, without having to specify a particular path within the host file system. An application cannot navigate out of its own file system into another, because the root of the virtual file system is located in a per-user, obfuscated folder

26 4.1. TECHNOLOGY on the physical file system. Furthermore isolated stores are scoped to particular code as- semblies. This means that data stored by one application cannot be accessed by another. However, applications using highly trusted, unmanaged code can access isolated storage that does not belong to them, same applies to administrative applications. Silverlight also offers file encryption and file signing inside Isolated Storage virtual file system. This makes this solution much more robust than solution used in AIR framework. The file system access support is different in both frameworks as well. AIR applications have full access to the file system they can even access the file system properties[18]. The file system access can run in synchronous or asynchronous mode. It may seem odd support- ing an asynchronous mode in connection with the file system access, but it comes logical when we want to load or save big volumes of data out of or into a local file. By calling asynchronous save or load operations we avoid unresponsiveness of our application and provide much a better user experience. Microsoft Silverlight provides, as noted in the beginning, much different approach to file system access. Silverlight out-of-browser applications running in partial trust mode cannot access the file system at all[19]. They are restricted only to virtual Isolated Storage file system mentioned previously. Applications running in trusted mode can access files on users file system, but only in a restricted way. Direct access is permitted only to user’s home folder and its subfolders, these locations are accessible without user’s intervention or approval. Other files may be accessed too, but only via open or save dialogues, what makes use of file system access much more complicated. Microsoft claims this to be a security precaution that helps to proactively protect the end users. Although it is indisputably true, it is strange and maybe pointless. Applying security restrictions at this cost may become very counter- productive in near future.

4.1.2 Integration options

This technological requirement is aimed at integration options of inspected frameworks. If we speak about integration of rich Internet application, first that comes to mind is the integration with host. These options are usually more interesting when we are developing entertainment oriented applications, because they can leverage desktop capabilities, such as touch screen interaction or GPS data and bring new, exciting experience to the end user. Host integration can describe many things, and can be understood in many ways. It can reach from support of simple notifications, possibility to change window chrome, or access of user’s file system, as mentioned in the features requirement, to capability of executing and calling other applications. Most of these capabilities are mentioned in subsections where it is appropriate, so we will focus on the last one mentioned. Let us start with Silverlight applications. Silverlight applications employing Microsoft’s security restrictions posed on sandboxed and partially trusted applications do not have any of these capabilities. Nevertheless when it comes to trusted applications, there is one op- tion, but only if they are installed on Windows systems. Trusted applications offer the COM Automation Support[20]. COM Automation is Microsoft’s technology that allows applica-

27 4.1. TECHNOLOGY tions to expose their functionality via object to scripts or other applications. In this way an external application can access functionality of let us say Microsoft Word, Excel or Outlook and automate actions that are accessible by users. As an example can server automated mail sending via Outlook, or automated extraction of data from Excel spreadsheet, creation of table or graph and inserting results into Word document. COM automation uses a server- client model, applications providing functionality are servers and applications consuming functionality are clients. This is very useful in business applications. These can automati- cally produce Word reports, send emails and interact with other third party software that supports this type of access. In this case developers are limited only by support of automa- tion. In business environment where Microsoft’s software forms major part this feature rep- resents major advantage over other frameworks. AIR applications employ different approach. Applications run in two sandboxes, one for locally installed and one for remotely obtained components. Sandbox for locally in- stalled components is not very restrictive and allows access to file system or other system resources. The sandbox for non local components behaves like ordinary flash plug-in sand- box, with limited access to remote services, and without any access to local file system, etc. Having much more benevolent security model, the framework provides the possibility to call application that can be executed on host operating system. This feature is called Native process[21] and is available on all supported desktop operating systems. However, restric- tion is that AIR application has to be installed in extended desktop profile. This means it must be installed via operating system native installer. In other words, application is not distributed as AIR cross-platform file, but as a binary file of the respective operating sys- tems. External files can be called as if they were executed in command line. AIR applications communicate with native process applications via application’s standard input, output and error stream. This full access to native processes on host operating systems puts additional responsibility on developers. They need to validate input data passed to and output data ob- tained from external applications. If native process implementation lacks security features like validation, it can cause serious vulnerabilities. This model of external application invo- cation is much more robust and provides better options of how to use it. Nevertheless it is less secure and requires developers to handle all possible problems and vulnerabilities that can occur. In addition this feature comes with two major sacrifices. AIR applications lose their full cross-platform nature. Separate native installer must be built for each target oper- ating system. And additionally, AIR application loses its auto update capabilities. However these features are required mainly in business environment, where they should not repre- sent significant problems. When we mention business applications it should be noted that integration with back- end server systems via remote services is supported too. Business applications can deliver through these connections data and information and present them in more attractive and useful way. Rich Internet applications became very popular platform for deploying business applications, for their versatility, rich visual and connectivity capabilities. Almost all of busi- ness applications, whether thin or thick clients, usually rely on data provided from powerful backend systems. Most companies at present use various backend systems, creating het-

28 4.1. TECHNOLOGY erogeneous environment, luckily standardized communication protocols exist. Both frame- works support at least the common industry-wide communication protocols. Furthermore both frameworks provide lower level access to network communication like UDP sockets and streams. This allows creation and handling of custom protocols if needed. They also provide various built-in streaming capabilities, which can be useful when creating media players, or digital content kiosks. However, these capabilities are built on top of proprietary protocols developed by respective companies, and are compatible only with specific stream- ing servers.

4.1.3 Areas of use

Final requirement to consider in the technology part is about areas of use. It is not truly about technology itself, but rather about its application and maybe about visions and concepts. In this requirement we will analyse what are current and possible future areas of use of applications built on top of platforms we are comparing. We will also go a bit beyond the scope of desktop deployment. Rich Internet applications offer us the possibility to target many platforms and devices, what broadens our possible audience and thus areas of use. To start with, we can define two basic areas of use of desktop applications, first would be entertainment and the second would be business. These two areas only roughly divide applications to distinctive categories. We could come with much finer division. However, it would always end up in describing subsets of features and requirements of these two categories. We also need to mention that some business applications require entertainment features and vice versa. The division is based more on purpose of application, than require- ments or features the application uses. So let us start with the comparison itself. Both Adobe and Microsoft try to take over as much market share of each area as possible. Proclaiming they support the same or almost the same features makes deciding very hard. They also proclaim, focusing on same problems and offering similar solution to them. In spite of nice marketing phrases and all the efforts of public relation offices of both companies, the truth is different. Entertainment sector is for years ruled by Adobe and their Flash platform. It all started with simple animations and evolved through annoying advertisements to widely adopted platform for video streaming and interactive online gaming. Building on top of this founda- tion, AIR applications can be definitely used for, multimedia content delivery. Unless more efficient technology is introduced, Flash platform will not be replaced. Silverlight tries hard, but to be honest, most of online video content is still served via Flash format. Silverlight ap- plications came too late to this part of entertainment sector and possibly will only struggle to survive. Another part of entertainment area where Silverlight fails is branded content and experience delivery. Silverlight has only basic possibilities of how to customize the window chrome. Adobe AIR on the other hand can be customized in any way designer likes and thus is more suitable for brand promotion or other similar uses. Recently very popular subarea of entertainment use is gaming. Although Flash platform is widely used for online games, it is still bit useless on desktop. Silverlight has not achieved

29 4.1. TECHNOLOGY any noticeable success in gaming sector either. Requirements of gamers are much higher than Silverlight or Flash can deliver. Developers of both platforms work on support of hard- ware acceleration of whole applications, but currently only hardware acceleration of video decoding is supported. Silverlight was already released with full application acceleration support, but it is not included in its core functionality and enabled by default. Also Adobe developers announced further progress in support of hardware acceleration and new hard- ware accelerated 3D API[22]. This means both Silverlight and AIR applications can become potential gaming platforms in the near future. Situation in business area of use is more balanced. This is caused mainly by the fact that rich Internet application, web and also desktop deployed, are in early adoption state. These applications can be simply divided into two big groups. The first group delivers services to the end users or clients of a company the second group of applications is used internally in companies. Applications delivering services to end users usually need to be appealing. Nice de- sign and chrome customization is possible with both frameworks, although possibilities of Silverlight are more limited, than those offered by AIR. From the technical point of view, both application frameworks offer almost the same features, so companies can use either of them. Unless service delivery collides or overlaps with entertainment services, like video or audio streaming, both platforms offer very similar features. The second group of applica- tions focuses on internal business use. These applications pose different requirements than any other group previously mentioned. Use in mission critical applications means that both framework must provide reliable and secure environment, which they do. Also visualization components like various graphs or data grid components are provided by both frameworks. What can give Silverlight its advantage in field of business application is its rather strict se- curity policy, better integration with routines on Windows operating systems, and the fact that most of companies use operating systems as their primary desktop OS. Final area of use that will be examined is deployment on other systems than desktop computers. These systems give us a whole new perspective, of what needs to be, and what can be done. Adobe’s Open Screen Project is an initiative to team up with leading development com- panies like Google, HTC, NVIDIA, INTEL and many more to give AIR technological and competitive edge. Early announced results of this initiative are following: AIR runtime for Google Android OS, announce support of AIR on Samsung smart TV sets, or cooperation with RIM on deploying AIR applications on their new tablet. Silverlight in spite of its potential is not used anywhere except web and partially desktop deployment. Microsoft ignores the fact their technology could be very useful also on other platforms than their own. Silverlight was announced to be main development platform for Windows Phone 7 devices[12], but this is fairly not enough. Obviously Microsoft overlooks potential of out-of-browser rich Internet applications.

30 4.2. PORTABILITY

4.1.4 Conclusion

Although AIR is built on top of older and more mature technology, offered features are roughly the same as Silverlight’s. AIR has better integration options in cross-platform con- text, but they are balanced with Silverlight’s advanced integration options on Windows plat- form, which still remains the main operating system platform for personal computers. The requirement considering areas of use showed that both platforms target almost the same audience and have similar capabilities. The final score of both technologies is 4 points out of possible 5 both provide rich set of features and provide solid foundation for rich Internet application development.

4.2 Portability

In this part we will examine the portability of Silverlight and AIR applications. Big software companies often claim that their products are cross-platform compatible, but they are not always sincere. Let us imagine a framework in which we would be capable of creating truly cross-platform applications. If we had such framework, we would expect that applications created on top of it would run identically on any widespread operating system and device. However, this is quite impossible, because of specific platform and device features and limi- tations. Taking into account these facts, we can assume that cross-platform deployment will be narrower down only to some similar platforms and devices. In this part we will assess possibilities of examined frameworks.

4.2.1 Supported operating systems, devices and system requirements

Adobe AIR support all mainstream operating system including based Windows, Macin- tosh and Linux architectures[9]. Except these platforms it also supports mobile devices and Adobe announced that they are working on support of some “exotic” devices like TVs, Set- top boxes and Bluray/DVD players. Overview of minimal system requirements for current release (AIR 2.5 as of time of writing) is showed in Table 4.1 AIR supports even outdated platforms like Windows 2000 and PowerPC based Macs. Users can install and run AIR 1.5 applications, but are not be able to install or update to AIR 2.5. Support for these platforms will be ceased in the near future. Maybe more interest- ing fact is that Intel based Apple machines with Mac OS X version 10.4 are supported for running AIR 2.5 applications, but not for developing on them, this means that Adobe forces developers using Mac OS to update their operating system to latest release. When it comes to Linux operating systems, Adobe has a special list of required packages and environments it supports, so it is good to check it before running AIR applications, it can save a lot of trouble. AIR supports mobile devices too, but only limited to three platforms, Google Android, BlackBerry Tables OS and Apples iOS 3 or higher[9]. It may seem unrelated noting mobile devices, but in fact their operating systems can be considered as very customized and op-

31 4.2. PORTABILITY

Windows Linux Supported XP Home, Profes- Mac OS X v10.4.9 or Fedora Core 12, versions sional, Tablet PC later Ubuntu 9.10, or (SP2/SP3), Server openSUSE 11.2 2003, Vista (SP1) (excluding Home Basic), CPU Intel Pentium III Intel CoreTMDuo or Intel Pentium III processor (Pentium faster processor processor (Pentium 4 recommended) 4 recommended) RAM 512MB (1GB recom- 512MB (1GB recom- 1GB mended) mended)

Table 4.1: AIR supported operating systems and system requirements timized versions of desktop ones. On official pages only Android system requirements are noted and they are following: Google Android ver. 2.2 operating system, ARMv7-A proces- sor with vector FPU, OpenGL ES 2, H.264 and AAC hardware decoders, 256MB of RAM. In fact other supported mobile operating systems do not need system requirements specifi- cation, because they are bound to specific hardware vendor. And finally, thanks to Adobe’s initiative called Open Screen Project, Adobe announced future support of smart TVs, Blu- ray/DVD players and Set-top boxes. Microsoft claims that Silverlight is cross-browser and cross-platform framework[23], but when it comes to portability of Silverlight applications it gets little complicated. Silverlight uses different approach to deployment on desktop. Silverlight had its out-of-browser func- tionality added just recently, and it is still considered to be some sort of bonus provided for web-based rich Internet applications. Silverlight fully supports only Windows and Mac platform with requirements showed in Table 4.2

Windows Macintosh Supported versions XP (SP2, SP3), Server 2003, Macintosh OS 10.4.11+ Server 2008 (R2), Vista, Win- dows 7 CPU x86 or x64 1.6 (GHz) or higher Intel Core Duo 1.83 processor GHz or higher proces- sor RAM 512MB 512MB

Table 4.2: Silverlight supported operating systems and system requirements

Official support for Linux based system exists, but it is not provided by Microsoft. This is why both web-based and desktop-based Silverlight applications cannot be used, at least

32 4.2. PORTABILITY in a reasonable manner. Support should be provided by Moonlight runtime, however, it supports only Silverlight version 2. Being two versions behind it is totally useless. Noting the fact that out-of-browser features were added in version 3, it means desktop-enabled applications built in Silverlight cannot be deployed on Linux systems, in any way. Support of mobile devices is not good either. Silverlight is supported on Symbian S60 based smartphones, but only as an in-browser application. The only mobile operating sys- tem capable of out-of-browser deployment is Windows Phone 7. With XNA technology, Sil- verlight is supposed to bring rich Internet application experience to these devices. As of time of writing Windows Phone 7 is still in its early release phase[12], so there is not enough evidence to assess its capabilities.

4.2.2 Runtimes

Including runtime comparison in portability may seem bit strange, but when it comes to deployment, runtime needs to be examined. Runtimes are usually custom made for each operating system and device. It is the essential, but invisible, part of each rich Internet application on desktop. Even if application is well designed, appealing and precisely tar- geted, runtime related issues can ruin all the developer’s efforts. If we consider different approaches to desktop deployment of both platforms and limitations that are posed by re- spective runtimes, we will find out that describing and comparing runtimes gives sense. The fact that runtimes may support different features, or even behave in different manner on various systems, can influence application usability, and final decision when concerning portability. As mentioned before AIR stands for Adobe Integrated Runtime. Flash platform has dis- tinct runtimes for web-based applications and desktop-based applications. AIR uses WebKit HTML and Adobe Flash engine as runtime layer and works as a bridge between hosted con- tent and underlying operating system. Having both engines enables developers to build ap- plications using HTML, JavaScript, Flash or Flex. AIR supports these technologies equally, so AIR application can be developed in either way, delivering very similar features. AIR provides deep integration with host operating system, like full access to file system, unre- stricted full screen mode or direct network access. These features make applications both powerful and dangerous at the same time. In the worst case scenario user can install mali- cious application that can damage his or hers computer. Nevertheless these features enable developers to deliver real desktop experience. Adobe AIR exists only in 32 bit version, what is not a problem on Windows and Macin- tosh systems, but on Linux it can become a serious issue. Unofficial methods of how to install AIR on 64-bit Linux systems exist on the Internet, but it can cause unpredictable behaviour. On Linux, AIR also requires many additional packages to run properly. It may sound unbe- lievable, but on supported operating systems, AIR applications really work, if they are well designed and created. Furthermore applications work the way they should, except less or more serious issues that can occur on Linux system, usually due to wrong configuration of AIR or required software packages.

33 4.2. PORTABILITY

Silverlight, being primary a web platform, does not have a distinct desktop runtime. For Silverlight’s out-of-browser support on Windows and Mac OS X operating system it uses special launcher called sllauncher. On Windows sllauncher.exe process hosts the IE render- ing surface. Similarly, on Apple OS X, the process hosts the Safari/WebKit rendering surface and related libraries. Silverlight uses just browsers core functionality required to host Sil- verlight application inside the native operating system window chrome[20]. For developers it is important to know that using different browsers as a core for hosting can lead to slightly different performance. Current implementations of Safari use a plug-in compositing mode that is less efficient that one implemented in . Silverlight out-of-browser applications run in sandbox and can run in two modes. In normal or less privileged mode, applications are limited only to very basic functionality that would be expected from desk- top application. In Trusted mode (privileged) limitations are lifted, however, access to file system or other features are still quite limited or absent. In spite of all disadvantages and worse integration with host operating system, running sandboxed application has one big advantage. Limiting features and capabilities, of this type of application, results in higher se- curity. User is proactively protected against malicious application, but questionable remains at what cost. We have not mentioned Linux runtime in the beginning and there is a good reason. Run- time for Silverlight out-of-browser applications does not exist on Linux systems. It is because Silverlight should be supported by Moonlight runtime which is a part of Mono project[24]. Moonlight is currently two versions behind official release of Silverlight. Supporting only Silverlight in version 2.0 means that there is no support for out-of-browser applications, since out-of-browser support came in version 3.0. Moonlight developers promise to imple- ment at least partial support for out-of-browser applications in next release, but it is highly probable that it will not be very soon.

4.2.3 Conclusion

Silverlight fails drastically when it comes to portability, its architecture based on single plug- in used for both web and desktop runtime has many disadvantages. This type of tight inte- gration with browsers brings little bit inconsistent environment and can cause possible prob- lems. Also its support only for Mac and Windows operating systems is insufficient, and even on these systems it cannot be used with any browser user would wish for. Because these problems can influence portability and deployment capabilities of applications, Silverlight has earned only 3 points out of 5. AIR with true cross-platform portability shows, how a good and portable runtime should look like. AIR is built on top of mature and reliable tech- nologies, which bring consistent and reliable environment across all supported platforms. AIR shows excellence in portability and thus is awarded 5 out of 5 possible points.

34 4.3. DEVELOPMENT

4.3 Development

Platform vendors create seamless development ecosystems, offering many technologies and development resources. Their effort is made to keep developers using their platform. This creates tight competition and developers are bombed by various promotions and advertise- ments. This part focuses on analysis of development tools and learning resources. It should help developers to decide which technology to choose based on their skills and needs.

4.3.1 Software development kits

Software development kit (SDK) provides a technological entry point for chosen platform. To explain this statement, imagine we have a bunch of wooden planks and we want to build a table. What we essentially need are tools and maybe plan of how to build it. Exactly the same happens when we want to build applications. Framework gives us the base that we can build on and create applications on top of it. Software development kit gives us the required tools, libraries and application programming interface (API) definitions we need. Aim of this assessment is to describe and summarize tools that are provided and under what conditions they can be used.

4.3.1.1 AIR SDK and Flex SDK

Adobe AIR applications can be of two types, Flex/Flash or HTML based, this possibility is offered by AIR itself. Having this sort of support means that AIR must provide a platform for both approaches and its SDK cannot contain all the functionality to build whole application, so additional SDK are usually required. If we skip HTML or pure Flash based applications, which are out of scope of this work, we will find out that we need Flex SDK to build Flex based AIR applications. AIR applications can be developed with any integrated development environment or text editor using HTML, JavaScript, and/or Flash. Adobe AIR SDK is used to package the applications so they can be deployed on Adobe AIR. Contents of framework are described in following part. Framework for AIR APIs, it is set of libraries that enable AIR specific functionality. Templates and samples of application descriptor file, the seamless install fea- ture (called installation badge), and default AIR application icons. The Adobe AIR Debug Launcher (ADL) a command-line tool that allows running an AIR application without first packaging and installing it. The Adobe AIR Developer Tool (ADT) a command-line tool that packages application as an AIR executable. The AIR runtimes for desktop and the mo- bile devices used by ADL to launch AIR applications before they have been packaged or installed. As we mentioned earlier to be able to build Flex based applications, we need the Adobe Flex Software Development Kit. Flex SDK includes the Flex framework (component class library) and tools needed to build Flex applications like compiler, , AsDoc docu- mentation generator tool and other. It also contains samples and templates. Structure and

35 4.3. DEVELOPMENT offered tools are much the same as in AIR SDK. Flex SDK is partially licensed under open source MPL license and partially under Adobe’s proprietary license.

4.3.1.2 Silverlight 4 SDK and Expression Blend SDK

Information Microsoft provides about the Silverlight 4 SDK components and tools is very brief. As stated on official download page, it contains online documentation, online samples, libraries and tools for developing Silverlight 4 applications. However based on information provided on MSDN site[24], contents are very similar to those in AIR SDK. Namely SDK includes client and server libraries, the client libraries include Silverlight extensions and user controls the server libraries include Silverlight server controls. Tools include reference assemblies, build components, and building and packaging tools. And also SDK includes SDK license under which it is released. Another SDK that is provided for Silverlight development is Expression Blend Software Development Kit for Silverlight 4. This SDK contains redistributable components that are needed for building Expression Blend 4 applications. Microsoft Expression Blend 4 intro- duces Behaviors (reusable pieces of packaged code), which can be used to add interactivity to objects in applications without writing any code. SDK includes both components and documentation in form of examples. SDK contains the following redistributable compo- nents: SketchFlow Player, custom VSM for Fluid layout, font embedding enhancements, ef- fects and transition effects and shapes. Blend SDK is required to edit an Expression Blend 4 project that uses any of before mentioned components if Expression Blend 4 is not installed.

4.3.2 AIR development tools

Adobe is well known for its rich portfolio of professional authoring tools. Most professional visual designers use these products on daily basis. Adobe has taken the advantage of this fact and created an interconnected environment called (Adobe CS). All tools are connected directly or via import/export mechanisms, this enables continuous workflow and seamless transition between visual design and programming. This also al- lows high specialization of each tool, what brings state of art functionality, at least when we consider visual design process. These tools are all closed-source, developed exclusively by Adobe. Unlike visual design tools, Adobe’s Integrated Development Environment for Flex and AIR applications is built on top of free and open-source platform. This brings highly customizable development environment that can be fine tuned based on individual needs. In this review we will mention following tools: Dreamweaver, Flash Professional, Flash Catalyst and Flash Builder. All of these products can be purchased as part of one of Creative Suite’s bundles or standalone. CS5 is Adobe’s primary software for AJAX and HTML-based rich Internet application development. It evolved from plain web page editor to advanced au- thoring tool. AIR development support is not enabled by default and the Adobe AIR ex- tension for Dreamweaver has to be installed in order to enable it. This extension allows to

36 4.3. DEVELOPMENT package and preview AIR applications within Dreamweaver. Adobe Flash Professional CS5 may be the best known software that is used for creating Flash applications. It is an impressive authoring tool, but it is really not good for program- mers. It suffers and at the same time benefits from its original design and original purpose of Flash platform. In 1996 when both were created their forefathers were used as vector graph- ics and animations software. Much has changed since that time, but ideas behind endure. Although Flash Professional is not intended to be software for programmers it is good to know at least of how things work in it, sometimes it can help a lot. Not being the best option for programmers implies that it is aimed at visual designer, and truly when it comes to animations and graphics in flash, it is the best option. Flash professional is primary used when it is comes to support of AIR applications for mobile devices or TV sets. CS5 is software that bridges the gap between visual designers and programmers. It is a very potent tool in terms of collaboration. It specializes in converting artwork into functional applications. It can import , Adobe Illustrator and artworks, keeping their original structure and create functional user inter- face components out of them, add behaviours, animations or even dynamic data bindings. The revolutionary feature of this tool is that visual designers can switch between graph- ics editor and Catalyst tool to adjust original artwork and do not have to worry that they will break already created structure and implemented functionality. Furthermore, Catalyst projects use the same format as Flash builder does, so transition between user interface de- sign and business logic implementation is seamless. Adobe Flash Builder 4 is an Eclipse based integrated development environment. Before version four it was called Adobe Flex Builder and was primarily created for web based Flex rich Internet application development. As time passed and AIR was introduced, its support was included too. Flash Builder comes in two versions Standard and Premium. Adobe Flash Builder 4 (Standard) includes support for intelligent coding, debugging, visual design and basic testing tools. Flash Builder Premium adds tools such as profiler, network monitoring tool, an automated testing framework, integration with Flex unit testing, and command- line build support. It has support for various web services depending on version. Although it is the best option for Flex based application development it lacks many nice features of Microsoft’s Visual Studio, mainly when it comes to ease of use. However, Flash Builder has strong support for plug-in extensions. Flash Builder being built on top of the Eclipse IDE benefits from its big online community that contributes to this cause. So usually if you need to extend Flash Builder in some way, there is a good chance that appropriate plug-in will be available, and can be used free of charge.

4.3.3 Open-source AIR development tools

Adobe being a supporter of open-source movement, has released its SDK and other tools freely, so third party companies and groups of developers can build their own development tools and environments on top of it. Only one third party tool is mentioned on official AIR product page, it is Studio.

37 4.3. DEVELOPMENT

Aptana Studio is a free, open source, Eclipse based IDE. It primarily focused on Ajax- based web applications, thus it has great support for HTML, CSS, and JavaScript develop- ment. Support for AIR application development comes via plug-ins dependent on version. Developers can use their existing skills and knowledge gained in web application devel- opment. This means building applications on top of standard web technologies like HTML and JavaScript and deploying them as full featured desktop applications. Aptana Studio has rich tool set that includes debugger for JavaScript in AIR application, as well as profiler that can help with fine tuning of application’s memory usage. If someone is really fond of HTML based desktop applications running on AIR this is a really great IDE to use.

4.3.4 Silverlight development tools

When we start examining which development tools and environments can be used for Sil- verlight application development, we will find out that there are only few. Microsoft as a leading software company, with its tradition in application development, does not provide wide variety of development tools. What lack Microsoft’s portfolio in quantity gains on in quality. Long lasting focus on development and support of developers paid off and result can be observer in their development environment called 2010. Microsoft Visual Studio 2010 (Visual Studio) is a first class Integrated Development En- vironment, which without exaggeration supports everything that could developer need. It comes in four versions: Express Edition, Professional, Premium and Ultimate[27]. To put it all in context Visual Studio (Professional and higher) is a universal development environ- ment, it supports every programming language that is available on .NET platform, database development, testing tools and even more. Professional version is the essential tool for basic development tasks. It comes with in- tegrated support for test-driven development and debugging tools. It is aimed at individ- ual developers. Premium version is offering all features of Professional plus additional en- hancements, and is aimed at both individuals and development teams. And finally Ultimate version is the comprehensive suite, including tools for application life-cycle management, design and architecture and quality assurance. Professional and higher versions include Mi- crosoft Developer Network (MSDN) subscription. This subscription allows developers to access newest software, updates, news and support and learning resources. All version of Visual Studio come with default support of Silverlight 3. This is because it was released before release of Silverlight 4 and to open and work with Silverlight 4 projects in Visual Studio 2010 it is needed to install the Microsoft Silverlight 4 Tools for Visual Studio 2010. Visual Studio in Express edition is little bit different from previous ones. It is provided for free, thus it has limited set of features and is limited only to one target language. In spite of these facts it can be used for basic development and learning. Even in the “basic” Professional version, Visual Studio provides much better develop- ment environment in terms of comfort and offered tools than Adobe Flash builder. Microsoft Expression Blend 4 (Blend) is a design tool that in many ways resembles Adobe

38 4.3. DEVELOPMENT

Catalyst. It is a part of the Expression software suite, a designer oriented tool set developed by Microsoft. It can be obtained as standalone application or as a part of Expression Studio Ultimate. Blend is used for User Interface design for both web and desktop applications, utilizing the power of vector graphics, transition effects and quick prototyping. Expression Blend includes importers for both Adobe Photoshop and Adobe Illustrator too. This enables visual designers to use tools to which they are used to. Blend breaks down barriers between design and development by using SketchFlow pro- totypes. The SketchFlow prototype is a real Silverlight project. This means that SketchFlow prototypes can be reused in production. Visual designers create user interface and can add application functionality, called Behaviors, without knowing anything about programming. Behaviors are reusable elements that can encapsulate complex interaction models. As men- tioned before they can be refined visually without writing code. What is little bit disap- pointing SketchFlow tool is shipped with Blend only in Expression Studio Ultimate suite, otherwise it must be bought separately. Blend also allows use of all features of Silverlight framework, for example data binding that can connect the application interface to backend business services and databases. Blend and Visual Studio project formats are compatible, so designers and developers can work effectively together each with development tools they are comfortable with.

4.3.5 Open-source Silverlight development tools

Microsoft has never been too fond of open source software, so it is not surprising that almost all tools are commercial. There are only few tools that are open-source and to be honest all of them are useless, because all fully support only Silverlight in version 2.0. This means appli- cations with out-of-browser support cannot be developed, since this feature is supported in version 3.0 or higher. Each developer group claims that they will support Silverlight 3.0 and out-of-browser capabilities in the future, however, slow development pace does not indicate that it will be in near future. Maybe the best known IDE project is eclipse4sl (Eclipse for Sil- verlight). It is being developed by Soyatec in collaboration with Microsoft. It is a set of tools and Eclipse IDE plug-in. Another open-source candidate would be Lunar Eclipse which is part of Moonlight project. It’s a XAML designer, currently available as standalone desktop application. Promises of future integration with MonoDevelop (open source development environment for Mono – Novell’s implementation of .NET technology) development envi- ronment sound promising. Nevertheless, there is much work to be done until these tools will become usable for out-of-browser development. The Silverlight Toolkit adds new functionality for both designers and developers. It adds new visual components, themes and testing tools. It includes full open source code, samples and documentation for Silverlight 4 and the Windows Phone 7 as well[28]. More about de- veloper tools contained in this toolkit will follow in next subsection.

39 4.3. DEVELOPMENT

4.3.6 Testing and debugging Let us start with a little bit of theory. Testing and debugging are basic tasks that need to be done to deliver good and reliable software. Testing verifies that the application is error free and works according to requirements. Using testing tools and having a suite of tests can help to reveal bugs or other unwanted behaviour of application in an automated way. Good about automated testing is that every time all tests are performed and order of tests is always preserved. Doing user tests can result in skipping or breaking order of tests, what can result in unwanted behaviour or missed bugs. Testing also ensures that new bugs are not introduced after bug fixes or change in functionality. Three types of tests can be performed during development: • Unit testing – used for thorought tests of small units of code, usually components • Integration testing – testing used on unit-tested components, after they are inte- grated together it ensures that part or component they form works as expected • Regression testing – testing that occurs after bug fixes, it verifies that bug was fixed and it did not introduce any new bugs. Apart from development testing, quality assurance testing can be performed. Quality assurance tests are of two types, functional tests and usability tests. Functional test verifies that the application corresponds to its specifications. Usability test ensures that the applica- tion is well designed from a user interface perspective. Quality assurance tests can include any of development tests. The second part is aimed at debugging. During debugging process developers need to find and fix bugs in their applications, this requires effective tools and an effective problem- solving process. Except , various debug logs or tracers can be used. Even web developers are used to this process, so adoption of these tools is quicker and wider. From all above mentioned we can deduce requirements that should be considered. For testing we need a set of tools that will help developers to automate and easily visualize testing process. For debugging we need a set of tools that will provide enough information to easily locate and fix defects in applications. Frameworks should support command-line and visual debugging and testing tools. Command-line tools are essential for automation and visual ones provide convenient way of interpreting results.

4.3.6.1 Flash platform tools Flash platform and respective SDKs do not offer integrated testing tools, however, Adobe recommends using FlexUnit 4 framework. FlexUnit 4 was built on top of ideas from Flex- Unit 0.9 and Flunit test frameworks, combining and extending functionality of both. It uses similar techniques and offers similar tools as JUnit testing framework does for Java devel- opers. It provides support for unit testing, asynchronous testing; meta-data defined testing and support for integration-level testing. It also provides extensibility layer for definition of new types and methods of testing.

40 4.3. DEVELOPMENT

Except open-source FlexUnit 4 and older frameworks that it comprises, alternative tools exist. Nice example of alternative test tool is Flex Monkey. It is a tool which supports user interface testing. Another testing tool is RIATest, which is a GUI test automation tool for Flex applications. It can be integrated with any automation environment, for example ANT build system. Debugging support of AIR applications consists of two parts. Adobe AIR SDK provides AIR Debug Launcher (ADL). AIR Debug Launcher is quite simple tool that can print only stack traces, run-time errors and set some properties to AIR runtime, further more it has one important feature. AIR Debug Launcher can run AIR applications without packaging and provides connection to other debugging tools such as Flash Builder or command line Flash Debugger. Flash Builder provides visual debugger and Flash Debugger is a command line tool that can be used with other debugging environments. These two tools can be used for more advanced debugging.

4.3.6.2 Silverlight tools

Unit Test Framework is very similar to the testing framework used by Visual Studio, but the testing output is not by default integrated with it. It is worth noting that this framework is in Experimental Quality, that means it is still in development and has known issues. However, it is a robust unit testing framework supporting basic asynchronous testing and more. With the release of Visual Studio 2010 and Silverlight 4, there is an additional support for debug- ging out-of-browser applications. User interface automation testing can be performed by the UI Automation Library. It is a library that works for other types of Windows applications and can be used for Silverlight applications too. System Diagnostic tests can be performed too, via Microsoft .NET Framework System.Diagnostics namespace in its class library. As described Unit Test Framework in conjunction with core .NET testing capabilities forms a robust and feature rich testing environment. Debugging of Silverlight applications is performed in Visual Studio. Visual Studio can launch the out-of-browser application and attach the debugger automatically. But using this feature needs to run and install the application from the browser first. Class library that comes with the Silverlight provides some useful features, such as attributes to control the debugger, and a Debug class useful for sending output of the debugger and testing assump- tions within debug mode builds. Although Silverlight 4 has rich possibilities of testing and debugging, most of tutorials and how-to manuals provide information only for in-browser testing and debugging. But this may be caused by low adoption of Silverlight as an alternative framework for desktop application development.

4.3.7 Knowledge and skill reusability

This is a little bit tricky requirement. If we talk about knowledge and skill reusability, it is heavily influenced by two facts. The first fact is that both frameworks are rather complex,

41 4.3. DEVELOPMENT the second is that they are built on top of very different platforms, offering different features. Nevertheless, there are some common skills that are good to know and can be used in both platforms. Both platforms, being made for rich Internet application development, have some com- mon features. First of all, both use XML-based user interface definition languages, so having knowledge of HTML or XML is good to start with. In connection with graphical user inter- face, it is good to have some visual design skills and sense for usability. Another feature that is common among these frameworks is their event-drive architecture. This means that appli- cations are driven based on events that happen during application’s execution. It is a natural way to interact with users when we use graphical user interface. It is good to know how to use this programming model, because it is purposed for asynchronous and nondeterministic execution order in applications (e.g. programmers cannot know how user will interact with their application). Last but not least it is good to have some knowledge about desktop ap- plication development. End users pose different requirements on desktop applications than on browser-based ones. This implies the fact that it is good to have some previous desktop development experience, it makes developers aware of different limitations and possibilities that desktop applications can have and features users may require. When talking about pure programming skills and knowledge, we need to stress the fact that Flash and Silverlight platforms have very different foundations. They were designed in a different way and use different technologies. AIR applications being a part of Adobe’s Flash platform are internally designed in a similar way as Flash clips are[10]. So knowing how things work in Flash is a big advantage. Second thing to consider is the programming language. Flash platform uses ActionScript, ECMAScript1 compliant language. The similarity of name with JavaScript is not accidental. Both languages implement ECMAScript version 3 standard and additional extensions, thus JavaScript programmers will find ActionScript very familiar and can adopt it quickly. Nev- ertheless, ActionScript is an object oriented and typed programming language, so any pro- grammer knowing an object oriented language should not have problem to learn it quickly. Another set of skills that can be reused by web developers is connected with SQL. AIR applications use SQLite version 3 embedded databases as their primary persistent storage for larger datasets. Although this embedded database engine does not provide all features of stand-alone database servers, it serves its purpose well. Knowing SQL syntax and how to optimize queries can save developers much time, when dealing with complicated data ma- nipulation and tuning application’s performance. SQLite is implemented in a simple way, so having deeper knowledge of its capabilities can help, when developer needs to overcome some drawback posed by this fact. Most of this benchmark is focused on AIR applications built on top of Flash platform. However, AIR applications can be built using HTML, CSS and JavaScript. This fact means that most web developers do not need to know much about, ActionScript or how Flash works. They can leverage their existing skills and with create very engaging applications. Also Silverlight framework has its ancestor technologies, to which it is very similar. In fact Silverlight is derived from .NET and WPF and shares much of their code base and

42 4.3. DEVELOPMENT design[18]. Although it is relatively young framework, it utilizes most benefits of its older siblings. In fact it was designed to enable .NET developers a smooth transition from desktop application to web application development. So any knowledge and skills related to .NET can be useful. As mentioned in architecture description Silverlight uses Core Common Lan- guage Runtime, a stripped version of .NET’s Common Language Runtime. This enables building Silverlight applications in any of supported languages which are: #, and also dynamic languages IronPython or IronRuby (Microsoft’s versions of Python and Ruby). It uses a limited subset of WPF, to avoid cross platform compatibility issues, making graphical user interface development easier in many ways. Simply put core development skills needed to build Silverlight applications are tightly connected to development on .NET platform. Last to mention is code reusability. It seems not to be directly connected with skills and knowledge reusability, but quite the contrary. Possibility to reuse already available code or write the code once and target more platforms at one time must be considered. Silverlight applications can share code base with .NET desktop applications as men- tioned previously, but code needs to be restricted only to use of common libraries, as these two platforms are not fully compatible. Binary code is mostly not shareable between .NET and Silverlight applications. Although workarounds exist, it is not recommended to reuse binary library files, as they target different runtimes. An interesting fact to mention, is that Microsoft developers work on portability in Silverlight, .NET direction, and it is partially enabled, but the other way around is not supported yet. AIR applications can reuse code depending on what basis they are built on. HTML based applications can reuse HTML, CSS and JavaScript code, including reuse of some Flash assets. Flex based applications are able to reuse any Flash component. Except standard reusability of platform specific code and components, Adobe works on compiler which would be able to compile C or C++ code into ActionScript[29]. This would make C and C++ libraries available to run on ActionScript Virtual Machine on both web and desktop runtimes. The project is called Alchemy, and is still in Adobe Labs. This type of code reuse can be interesting possibility when publicly released. In this final part we will focus at development support. When a developer wants to learn a new technology or a platform, he needs to have good resources at hand. The better resources developer can have, steeper can be the learning curve. In these terms both plat- forms offer almost the same options. Many useful resources, technical documentation and news not only on RIA development are provided on Microsoft Developer Network and as video streams on Channel 9. Adobe provides similar web sites that support their developer base, namely Adobe Developer Connection and Adobe TV. Both companies also provide support of students and educational institutions, in form of free online courses and special discounts on their software and services.

43 4.4. USABILITY

4.3.8 Conclusion

What Silverlight lacks in portability capabilities, gains in development options. Microsoft used reliable technologies and tools, which have been developed for many years, and deliv- ers a first class tool set which is hard to compete. SDK, Visual Studio and related support is excellent and has earned Silverlight platform full 5 out of 5 points in development category. Adobe is famous for their best of breed visual authoring tools. Use of Eclipse provides universal and pluggable platform, but compared to Microsoft’s Visual Studio, it provides lesser user comfort and offers little bit worse experience. Nevertheless Flash Builder fulfils its purpose well and is sufficient for all development tasks. Adobe has a strong point in development support. It has built large community that shares knowledge and can be very helpful. According to all facts mentioned in this part AIR is awarded 4 points out of 5.

4.4 Usability

In the last part of our benchmark we will assess features closely connected with the usability of the applications built on top of examined frameworks. Skills and taste of end users vary greatly, so comparing features considering these aspects is always influenced by one’s taste. Nevertheless, common requirements and patterns of use exist. We will try to focus on some issues that need to be addressed, when we want to build appealing and usable desktop applications. In this part we will address distribution, and user experience. Each of these areas plays an important role in use of applications. Distribution is a very important and we will focus on installation and update process. Both play key role in user experience. If user is not able to obtain and install our application easily, it is highly probable that he will not use it at all. Update process is the second impor- tant thing in distribution process. Via updates we are able to deliver new features, enhance user’s experience, and keep user safe and using our application. So having both processes as simple as possible can give us a very good start and very good first impression on our user. The second part of usability section will be about experiences. Experience we provide to end users can bolster or ruin the overall impression we are trying to make on our users. Making a good impression is very important. Users will use our application on daily basis, so it is important to deliver pleasant and comfortable software. Desktop applications have different usage scenarios than browser-based applications and they are usually treated in a different way. They are expected to have different capa- bilities and also provide somehow different look and feel. Desktop oriented rich Internet applications can be built in two ways. One possibility is to build them in a way that they will resemble native operating system applications as much as possible, the other way is to build them fully customized in order to deliver branded experience (application is designed to support company’s marketing, for example user interface is in company’s colour). Using the right method can drastically improve the final experience.

44 4.4. USABILITY

4.4.1 Distribution

Distribution of our application is the first step in reaching end users, so it is essential to make it as easy as possible. Distribution scenario can be described in three steps, delivery, installation and optional maintenance (updating) of software. Preferred way of delivery of application is mainly about personal opinion and taste of developers or marketers respon- sible for this part of life cycle. Application can be delivered, either via specialized online software markets, or via vendor’s own web site or service. Assessing delivery methods is out of scope of this work, so we will continue to installation process. Next step after obtaining an application is usually installation. Installation process is crucial, if it is too complicated, users can get frustrated and have bad opinion about appli- cation even before they use it. Both compared frameworks simplify the installation process as much as possible, but each in its own way. Let us start with Silverlight’s installation. First of all, Silverlight applications do not have distinct runtime. It means, installation must be initiated from web browser[29]. The default way of installing a Silverlight application is to right click in the browser and from the context menu select install option. Process that follows is much the same for both applications with partial-trust and elevated-trust. The only difference can be seen in a dialog box that appears. Trusted application includes additional information and warning that user is going to install application with greater access to the computer. After confirming this dialog box application is installed and ready to use. Another way of installation may be a custom developed inter- face element (button, menu item, etc.), which will initiate the installation process. The rest of installation process is the same. Silverlight offers an easy way of updating as well[30]. The update routine can handle download automatically on the background. The update system of Silverlight will look for the new version of application at the origin URI (the address from which the application was installed) and when the download is finished it sets UpdateAvailable property to true. This indicates that new version is ready to use. Although Silverlight can handle downloads of application automatically on the background, user has to be notified, because application needs to be restarted in order to be updated. After restart new the version will be used. Sil- verlight would offer a perfect model, unless there was an exception. As a safety precaution, elevated-trust applications can use this update system, if and only if both the application and its update are signed by the same, valid, code-signing certificate, otherwise user has to uninstall and reinstall the application manually. Adobe AIR offers more traditional way of installation. Cross-platform AIR applications are distributed via installer files with .air extension[32]. They can be installed in two ways, by using seamless install badge or by downloading and opening the installer file directly. The direct download and install method is discouraged. Reason is that the user may not have AIR runtime installed, and will have to install it manually. If AIR runtime is installed, it handles the installation process. The seamless install badge is a Flash object hosted on distribution web page and handles proper download and possible runtime installation if needed. So the seamless install badge method is preferred one and offers smooth user expe-

45 4.4. USABILITY rience. The installation process itself is very similar to ordinary desktop application installa- tions. A dialog box with application information and possible certificate warning (if self signed or distrusted certificate is used) is displayed. User can choose, if he or she wants to continue with the installation. After installation confirmation, user is asked to adjust instal- lation options and the application is installed. The process may be a bit more complicated than one used in Silverlight, but is still simple enough. Adobe AIR provides almost the same auto update model as Silverlight does, the differ- ence is in better control of update process by user. The developer can use either automatic check, or can offer a user to check updates manually. AIR auto updater allows definition of custom update URIs. This capability allows the application to download its updates from specific URI, regardless of source of installation. It can be useful when AIR application is sold in online store, but updates are provided on developer’s site. A very nice feature is possibility to decline an update. User can decide whether to install an update or not, with- out being forced to use newer version, what in some cases can be a desired option.

4.4.2 User experience

The final criterion we will assess in this comparison is the user experience. To be honest, this is the hardest part of all. We need to think like users and point out what they want. Users have many different demands, which may not be easy to satisfy. Despite various demands, users usually want their applications to be good looking and responsive. Each user has its own taste, so talking about the right way to design the user inter- face is somewhat pointless. However, there may be some common patterns. In this part we will focus on capabilities, which allow customization of user interface. Undoubtedly both platforms offer rich set of components that can be skinned, modified, or totally redesigned to fit into desired visual concept. A little bit overlooked remains possibility of application chrome customization. It is right to ask, what custom chrome good for. The simplest answer is branded experience. The whole visual concept of application is aimed to support the expe- rience of brand. In application chrome customizability has AIR the upper hand. Silverlight offers only minimal ability to control chrome behaviour, and application design can be only rectangular. On the other hand AIR provides unlimited possibilities. AIR application chrome can be designed in any way and supports of transparency. It means that application design can use virtually any shape. Although these options can be used to deliver visually very impressive applications, we must not forget that by changing application chrome, we change the way user interacts with our application. If we forget about this essential rule, we may end up creating unusable applications. When considering user experience, accessibility can be very important. Many web devel- opers constantly ignore disabled people, although accessibility standards exist and are sup- ported by all major browsers. Situation gets different when develop desktop applications. There is no global standard considering accessibility in connection with features offered by rich Internet applications. With lack of special standards, platform vendors are free to com-

46 4.5. RESULTS ply with any standard they like[33]. AIR is compliant with United State’s Environmental Policy Agency’s Section 508 standards[34]. Silverlight on the other hand uses its own frame- work proposed by Microsoft and used in Windows operating systems[35]. Even though both platforms comply with different standards, they support at least minimal accessibility options, including tab sequencing, support of captions, or high contrast templates. In the final part we will have a look at responsiveness. This demand addresses applica- tion performance and efficiency. Although we are browser free, we should keep system re- quirements of our applications as minimal as possible. Wasting user’s computing resources can cause unpredictable problems, when more applications are running and destroy desired experience. The biggest concern is single threaded nature of AIR application user interface, which means the whole application, can get stuck and become unresponsive, if the main thread is involved in time consuming operation. AIR offers use of asynchronous operations that are carried out on the background and applications is notified when operation com- pletes. Silverlight on the other hand has limited support of multithreading[36] and seems to be able to provide better performance. Luckily threading problems can be avoided almost all the time.

4.4.3 Conclusion Both platforms offer capabilities that can greatly enhance user experience. In the case of Silverlight a better support of window chrome customization would surely help to deliver more appealing applications. On the other hand Silverlight supports multithreading and can bring more responsive applications even if complex computing tasks are required. Sil- verlight has a very good installation and update model, but security restrictions that appear in connection with applications running under elevated-trust mode degrade it in a way. AIR has a great support for chrome customization, and thus can deliver true branded experience and has great marketing potential. Even single threaded nature is not a great problem and does not pose any threats if application is designed and developed wisely. AIR’s update model is designed in a more traditional way than Silverlight’s and provides better options both for developers and users. According to all facts mentioned Silverlight is warded 3 and AIR 4 points out of 5 possible.

4.5 Results

First part of the benchmark showed that AIR platform offers better solution than Silverlight in most examined features. To sum up the results of our comparison and benchmark, tech- nologies have achieved scores as shown in table Table 4.3. Now we will use the weighting coefficients from the second part of benchmarking method to complete the benchmark. Weighted scores are shown in Table 4.5 for Adobe AIR and Table 4.4 for Microsoft Silverlight. Maximum possible score was 50 points and results are following: • In content distributor role AIR achieved 43 and Silverlight 35 points, what clearly

47 4.5. RESULTS

Microsoft Silverlight Adobe AIR Technology 4 4 maturity Portability 3 5 Development 5 4 Usability 3 4

Table 4.3: Benchmark base score of compared platforms

shows that AIR platform provides advantage if used as distribution channel of digi- tal content.

• Score from developer’s standpoint is very tight, 40.5 points for Silverlight and 42 points for AIR. Silverlight achieved its best score, because it provides excellent tools and support for developers.

• In end users category AIR beats Silverlight with its 42,5 points to 32,5 points. AIR provides excellent usability options, what dramatically favours it, if end users expe- rience is considered

Content provider Developer End user Technology 12 10 10 maturity Portability 9 6 7.5 Development 5 20 0 Usability 9 4.5 15 Total 35 40.5 32.5

Table 4.4: Role weighted results of Microsoft Silverlight

Content provider Developer End user Technology 12 10 10 maturity Portability 15 10 12.5 Development 4 16 0 Usability 12 6 20 Total 43 42 42.5

Table 4.5: Role weighted results of Adobe AIR

48 4.5. RESULTS

Results show that Adobe AIR is more mature platform, it has achieved a balanced score see Figure 4.1. With balanced features AIR can be used in all types of applications. Microsoft Silverlight is on the other hand still rather young technology. Significantly higher score of Silverlight achieved in development category clearly indicates that Silverlight may have big potential in the future.

Figure 4.1: Platform overal scores based on user roles

49 Chapter 5 Development of AIR video chat client

In this chapter we will look at development of a sample desktop rich Internet application. The most common technologies for rich Internet application development are HTML and AJAX. These interrelated technologies enable creation of interactive web pages. These pages can interact with user without page refresh, and simulate behaviour of traditional applica- tions. Basic problem of these applications is in their runtime. Applications need to run either in web browser or specialized browser based runtime, which usually allows only little in- tegration with the host operating system. Another option is to use the AIR platform as a foundation for these applications. AIR provides robust and very capable runtime and it is almost ideal solution, but it does not solve another problem that arises. This type of appli- cations cannot handle advanced multimedia features such as video displaying or playing sounds, not to mention advanced streaming features. But this is where platforms like Sil- verlight and Flex come to the scene and fill in the gap. Their features and capabilities in most cases supersede AJAX based platforms. To demonstrate the full potential of desktop rich Internet application we will build our application in Flex and deployed on AIR. The technology was chosen based on its better standing in case of user experience. Furthermore this framework offers better portability and integration with host operating system, which will be showed in the example in form of a fully cross-platform application. As an example application we will look at implementation of a user appealing video chatting client. Video chatting applications are still kind of a domain of the Flash technology. Video chatting application also poses some non trivial challenges that need to be overcome to achieve a fully functional product. This example will demonstrate that all of challenges can be solved in a rather elegant and potentially easy way. For sake of simplicity only basic functionality will be implemented. In fact we don’t need a fully functional application for demonstrational purposes and as we will show in this part that building a full featured cross-platform desktop application is not as trivial as it may seem.

5.1 Application analysis and design

As we mentioned in the introduction to this chapter we will implement a video chat client application in Flex framework that will be running in AIR. This type of application offers variety of challenges that need to be handled in order to accomplish our goal. To start with we will define basic requirements that our application needs to meet:

50 5.1. APPLICATION ANALYSIS AND DESIGN

• Multimedia capabilities • Local storage • Local file system access In order to meet these criteria and make the application usable we need to choose suitable technologies. We will start with text chat requirement. There are several possibilities how to implement this requirement. Easiest would be to build our own messaging server, or use open source solution. But this would break the usefulness requirement, and so a common yet open standard implementation must be used. The candidate is Extensible Messaging and Presence Protocol (XMPP), or better known as Jabber protocol. XMPP is mostly HTTP based protocol[37] that is a de facto standard and many big Internet companies use it in their services. Companies like Google or Facebook provide their own XMPP based chat services. Because of free nature of this environment our client can be used as a basic chat client for these services what makes it usable and reliable as well. Next requirement considers video chatting features. In this case we have to deal with two main problems, audio and video streaming and access to host computer peripheral devices (web camera and microphone). In case of media streaming we have more than one possibility of how to solve this problem too. First and the most straightforward would be use of Jingle protocol, XMPP’s native protocol for streaming[38], but unluckily, there is no open- source ActionScript implementation, so we need to use something different. The second choice could be Adobe’s proprietary Real Time Messaging Protocol, an audio and video streaming protocol, but it need proprietary server that would route the streams. A better solution provides another protocol developed by Adobe. It is Real Time Media Protocol(RTMFP), a protocol that enables AIR clients to communicate and stream me- dia directly with each other. Nevertheless we still need a negotiation and helper service that would manage identities of individual clients and help them to connect to each other, even when they are behind firewalls. Adobe offers a solution for this problem too. Hosting a Cir- rus development service, that can be used for demonstrational services, is precisely made for this. It is a publicly available service, which is intended to be used for demonstrational RTMFP applications. Furthermore RTMFP protocol uses UDP protocol[39], which is ideal for real time media streaming and also communication. This combination of technologies will allows us to implement a reliable streaming solution. Problems connected with use of peripheral devices and persistent storage, considering second requirement, can be handled directly by AIR, so we do not need to care about them specially. Behaviour and functionality that will be implemented can is visualized in a use case diagram Figure 5.1. It describes typical top level use cases of implemented application. In following part we will describe each use case and its responsibilities. Direct user interactions with the application are described in following use cases: • Login to XMPP Server use case is invoked after star-up of application, or after suc- cessful logout. It is responsible for user credential management and login sequence for XMPP and RTMFP services.

51 5.1. APPLICATION ANALYSIS AND DESIGN

• Interact with XMPP account use case is invoked whenever user wants to notify other users about his action, or needs to interact with XMPP server. Responsibilities of this use case are XMPP presence (user status) change management, management of information about user, user friend list management.

• Send and receive messages use case is invoked, when user opens a message window, types in a message and hits the send button, or when user receives a message. It is responsible for message sending message to a proper user. Furthermore it is respon- sible for proper message receiving, message output formatting and displaying it. It is also responsible for opening a messaging window, in case the proper messaging window is not open.

• Make a video call use case is invoked when local user makes an attempt to call re- mote user. This use case is responsible for proper partner user information extraction from XMPP data. It is also responsible for connection negotiation and establishment of peer-to-peer connection and streaming.

• Receive a video call use case is invoked when a remote partner attempts to make a call to local user. It is responsible for proper response to a call attempt, connection negotiation and streaming.

Following three use cases are not directly invoked by user, but are included in before mentioned ones. These use cases describe and provide distinctive routines or subroutines for user invoked functionality.

• XMPP service communication use case is invoked from almost all other use cases, except the Receive a video call use case. It is responsible for XMPP connection man- agement and XMPP message transformation to and from ActionScript objects.

• RTMFP service communication use case is invoked when application uses its video chat features and also on the background at login time. It is responsible for managing RTMFP connection to Cirrus server and obtaining Cirrus identifier.

• P2P communication use case is invoked when user invoked video call functionality and successful call is established. It is responsible for managing peer-to-peer com- munication.

Communication between clients is visualized in Figure 5.2 and works in the following way. Clients separately establish connection to XMPP and RTMFP server. After successful con- nection to the same XMPP server, clients can communicate with each other via standard XMPP messages. If client successfully connects to RTMFP server, a unique Cirrus identi- fier is assigned to it. Each client advertises its capabilities and eventually Cirrus identifier, if has obtained one. If client applications exchange their Cirrus Ids they are enabled to use

52 5.2. DEVELOPMENT AND DEPLOYMENT

Figure 5.1: AIR runtime architecture the video call functionality. In fact a connection to Cirrus server is used to signal and send control messages between the clients. The video call uses peer to peer connections. At call request, two unidirectional connections are established, one for incoming and one for out- going data. If clients signal each other that they can communicate together (recipient will accept video call from caller), audio and video data is streamed directly between clients. Now that we have overall idea of how is the application designed, we will continue to the next part and describe the implementation itself.

5.2 Development and deployment

The implementation of video chat application was made in Flash Builder 4 Premium. This IDE was chosen because it offers the best development capabilities for Flex/AIR projects. These include visual GUI builder, debugger, automatic packaging and many more. Project folder structure is based on standard Flex project structure. The sources are located in src folder and its subfolders, its structure is following:

• directly in src are . files that represent entry point for application and are the main application files for respective applications, ApplicationName-app. files containing application release build settings, some helper ActionScript files and mas-

53 5.2. DEVELOPMENT AND DEPLOYMENT

Figure 5.2: AIR runtime architecture

ter CSS file used for skinning purposes

• assets folder contains visual assets necessary for successful build of application

• components folder contains .mxml files representing various GUI components used in application, for example text chat window, video chat window, warning window and other

• cz/muni/fi/xmiko folder structure contains rest of sourced organized into folders, where each represents given class in corresponding package

5.2.1 Development From the development point of view, application uses standard framework libraries and additional XIFF library. It is an open source Flash library for instant messaging and presence clients using the XMPP protocol[40]. In this part we will look at code of persistent storage, auto updater and RTMFP session management, after that we will describe problems that appeared during development. In this example we will look at example of SQLite database access. The SQLite provides a method of persistent storage. Data will be saved in file on users disk and can be retrieved at any time, even after user closes and starts application again. The following code is simplified and merged version of code used in example application.

54 5.2. DEVELOPMENT AND DEPLOYMENT public function getAllFrom Table():Arraycollection { // create a connection object var connection:SQLConnection = new SQLConnection(); // create a file object that will point to a file on host filesystem var db:File = File.applicationStorageDirectory.resolvePath("storage.dat"); // try to open the file try { connection.open(db); } catch (sqle:SQLError) { Alert.show("Error occured!") return null; }

// create a new SQLStatement object and assign a connection to it var stmt:SQLStatement = new SQLStatement(); stmt.sqlConnection = connection

var query:String = "SELECT * FROM table";

// assign a sample query to statement object stmt.text = query;

// try to execute sample statement try { stmt.execute(); } catch (sqle:SQLError) { errorNotify(sqle); }

// get results from statement var rs:SQLResult stmt.getResult(); // return result data return new ArrayCollection(rs.data); }

As we can see the function creates a File object which will access storage.dat file. After that it tries to create a SQLconnection, it is a connection of AIR’s SQLite engine to specified file, if it does not exist, it is created. If everything is all right, a SQLStatement object is created and a SQL statement and previously created connection is assigned to it. At this point it is ready to execute the statement, if it succeeds a SQLResult object is returned and data can be retrieved via its data property. This method uses synchronous query execution. However, asynchronous execution is preferred, because this code is in fact executed synchronously, from the main thread of the application. This means if execution of SQL query gets stuck, it will render the whole appli- cation unresponsive. But for simple operations, that do not require manipulation with large amounts of that, described method suffices. Synchronous execution is also important when the application execution depends directly on stored data and further execution without it

55 5.2. DEVELOPMENT AND DEPLOYMENT is impossible. Now that we know how to store data in SQLite database we will continue to the next example. The following code is used in the video chat client application to handle auto updating. Although the code is very simple it serves its purpose very well public class AutoUpdate { private var appUpdater:ApplicationUpdaterUI

// constructor public function AutoUpdate() { appUpdater = new ApplicationUpdaterUI(); }

// publicly available function that invokes auto update check public function checkForUpdate():void { // Set URI to server-side XML update descriptor appUpdater.updateURL = "http://myURL/myupdate.xml"; // We won’t ask permission to check for an update // check for updates will be performed on the backgroud appUpdater.isCheckForUpdateVisible = false; // After initialized, run onUpdate appUpdater.addEventListener(UpdateEvent.INITIALIZED, onUpdate); // On error fallback appUpdater.addEventListener(ErrorEvent.ERROR, onError); // Initialize the update framework appUpdater.initialize(); }

// error handler private function onError(event:ErrorEvent):void { // show alert that something went wrong Alert.show(event.toString()); }

// after autoupdate framework is initialized, checks for updates private function onUpdate(event:UpdateEvent):void { // Check for an update now appUpdater.checkNow(); } }

As one can see the structure is simple, all that is needed is to instantiate the Applica- tionUpdaterUI class. An instance of ApplicationUpdaterUI must be configured properly to be able to connect to remote host, but all that is in fact needed is the URL that will target XML update descriptor file, and that is it. If we have an instance of this class in our code as showed in next example, we can call checkForUpdate() function on it. The auto-update framework will handle everything for us and we have easily resolved updating problem.

56 5.2. DEVELOPMENT AND DEPLOYMENT private var myUpdater:AutoUpdate = new AutoUpdate(); myUpdater.checkForUpdate();

The only thing left is to deploy updated binary file of our application to specified URL and add with it the myupdate.xml file, the filename can be arbitrary, but must match with the one we used in our code. Content of a sample myupdate.xml may look in a following way: version_number http://myURL/application.air

The url element must be pointing to application binary file to be downloaded. Purpose of other elements is fairly self explanatory. Each time we create an update, we will update this file as well and auto update framework will take care of the rest for us. Implementation of this example application showed that there are many features that can be handled very easily. However, there are also complications that are not obvious at the first sight. One of the biggest problems was poor support of XMPP in Flash, only usable library is XIFF and even this library does not fully support core XMPP functionality[40], thus some changes were needed to achieve desired functionality. In this case modification of the internal structure of library and replacement of class that represents XMPP user in Ac- tionScript. Except that carious minor issues appeared, for example in connection with peer- to-peer and XMPP integration, but these were solved, either by help of online resources, or by redesigning faulty code.

5.2.2 Deployment Final application can be distributed in two ways. Either via download web page with in- stall badge, which can resolve problems, if AIR is not installed, or via distribution of AIR installer file. The second option requires AIR to be installed otherwise installation will not be possible. Installation process itself is very easy and does not usually require any further adjust- ments made by the user. If applications are distributed in form of a native installer, installa- tion process resembles native installation process of respective platform. Worth noting is fact that only a single instance of an application can run on host com- puter at a time, it is not possible to run two instances of one application by default. This is a drawback of security model, which Adobe AIR uses. However, if applications have different application identifiers they are able to run simultaneously. This is the case of test applica- tion that is included in data appendix, it uses different application identifier thus two same applications can be installed and run on one host operating system.

57 5.2. DEVELOPMENT AND DEPLOYMENT

Deployment diagram of working solution can be seen in Figure 5.3. If we would like to deploy the whole system ourselves, except installation of client application, it is required to have XMPP and RTMFP servers deployed, or otherwise available and properly reconfigured application releases.

Figure 5.3: AIR runtime architecture

58 Chapter 6 Conclusion

This work described and compared selected important rich Internet application platforms, namely Adobe AIR and Microsoft Silverlight. The comparison was aimed at offered technol- ogy features, portability, development support and usability of applications created on top of these platforms. As compared features posed various requirements that needed to be as- sessed, a complex comparison and benchmark method was needed. Unluckily rich Internet applications deployed on desktop present young area and there are no methods that would cover comparison and evaluation of required features. As a result comparison and bench- marking method, covering these areas, was proposed. This method is based on common re- quirements of users and developers. Method covers before mentioned features of compared platforms, with respect to specific roles that users and developers can have. According to proposed method, comparison and benchmark was divided into two parts, comparison of offered features and refinement of these results based on user specific requirements. Obtained results show that Adobe AIR platform presents a better solution for desktop deployment, if any role is considered. AIR applications are in general more usable and offer better integration and customization options. Silverlight’s worse overall score is caused by its core design and designation. Microsoft prefers .NET platform to Silverlight as a in case of desktop application development and thus Silverlight’s out-of-browser support is rather limited. However, we must not forget the comparison will always introduce an aspect of subjec- tive judgement, and thus these results must be considered as an approximate evaluation. Proposed method in fact serves as a framework for complex comparisons. It describes areas and roles that need to be covered, but not exact list of features that must be assessed. Users can adjust this method according to their needs and based on them obtain results that will be specific to their use case. The secondary aim of work was practical demonstration of capabilities of rich Internet application built in Adobe Flex and deployed on Adobe AIR runtime. The video chat ap- plication demonstrates capabilities such as offline storage, multimedia device access and streaming. The Adobe AIR provides a powerful platform for rich Internet application development. Applications can be developed by combination of HTML and JavaScript, as well as use of Flash or Flex. AIR applications developed with use of JavaScript and HTML do not offer as many capabilities, as their Flash or Flex rivals. HTML-based AIR applications cannot handle multimedia content by themselves, as well as they cannot access devices like microphone

59 6. CONCLUSION or web camera and streaming is not supported either. Flex based application, provide rich multimedia capabilities, like video or music playback, provide predefined visual building blocks and built in streaming support. Generally Flex applications have better multimedia capabilities and provide more advanced functionality. Nevertheless, when we compare AIR applications to traditional desktop applications based on .NET or Java, we must say they provide usually less capabilities, and in some special cases worse performance. Despite these disadvantages, rich Internet applications provide following advantages: easy to learn framework, very good support of visual cus- tomization and shorter development process.

60 Bibliography

[1] Allaire, J.: Macromedia Flash MX—A next-generation rich client [online], Macro- media, Inc., March 2002 - [ret. 13.12.2010], Available online: . 1.2

[2] JavaFX | Rich Internet Applications Development | RIAs Java FX [online], Oracle Cor- poration, 2010 - [ret. 13.12.2010], Available online: . 1.4.2

[3] Canoo UltraLightClient: Technical Concepts, Background Info [online], Canoo Engi- neering AG, 2010 - [ret. 17.05.2010], Available online: . 1.4.3

[4] Fette, I.: Gears API Blog: Hello HTML5, Google Inc., 2/19/2010 04:13:00 PM - [ret. 20.10.2010], Available online: . 1.4.4

[5] Gears API - Google Code, Google Inc., 2010 - [ret. 18.5.2010], Available online: . 1.4.4

[6] Prism [online], Mozilla Labs, 2010 - [ret. 01.12.2010], Available online: . 1.4.5

[7] Fluidium - Open Source, Mac-Only Rich Internet Application Framework - Turn your web app into a Mac Desktop App. [online], Ditchendorf. Todd, 2010 - [ret. 17.05.2010], Available online: . 1.4.6

[8] rich Internet applications | Adobe AIR system requirements [online], Adobe Systems Incorporated, 2010 - [ret. 07.12.2010], Available online: . 2.1.1

[9] Adobe - AIR : Release Notes [online], Adobe Systems Incorporated, [ret. 5.1.2011], Available online: . 2.1.2, 4.2.1, 4.2.1

[10] Wagner, .: Adobe R AIRTMFor Dummies R , Wiley Publishing, Inc., 2009, ISBN 978-0- 470-39044-3. 2.1.3, 2.1.3, 4.3.7

[11] Download details: Microsoft R SilverlightTMRelease History [online], Microsoft Corporation, [ret. 5.1.2011], Available online: . 2.2.2

61 [12] Silverlight for Windows Phone : The Official Microsoft Silverlight Site [online], Microsoft Corporation, 2011 - [ret. 6.1.2011], Available online: . 2.2.2, 4.1.3, 4.2.1

[13] Silverlight Architecture [online], Microsoft Corporation, June 10, 2010 - [ret. 18.11.2010], Available online: . 2.2.3

[14] Security [online], Microsoft Corporation, 2010 - [ret. 20.10.2010], Available on- line: . 2.2.3, 3.2

[15] Christmann, S.: GUIMark 2: The rise of HTML5 [online], [ret. 4.4.2011], Available on- line: .

[16] Digital Rights Management (DRM) [online], Microsoft Corporation, 2010 - [ret. 17.10.2010], Available online: . 4.1.1

[17] content protection | Adobe Flash Access [online], Adobe Systems Incorporated, 2010 - [ret. 17.11.2010], Available online: . 4.1.1

[18] Gorton, B. and Taylor, R. and Yamada, J.: Adobe R AIR Bible, Wiley Publishing, Inc., 2008, ISBN 978-0-470-28468-1. 4.1.1, 4.3.7

[19] Ghoda, A.: Introducing Silverlight 4, Apress Media LLC, 2010, ISBN 978-1-4302-2991- 9. 4.1.1

[20] Brown, P.: Silverlight 4 in Action, Manning Publications Co., 2010, ISBN 978-1-9351- 8237-5. 4.1.2, 4.2.2

[21] Adobe Flash Platform * Communicating with native processes in AIR [online], Adobe Systems Incorporated, 2010 - [ret. 18.12.2010], Avail- able online: . 4.1.2

[22] APIs for and Adobe AIR - Adobe Labs [on- line], Adobe Systems Incorporated, 2010 - [ret. 18.12.2010], Available online: . 4.1.3

[23] Get Silverlight | Microsoft Silverlight [online], Microsoft Corporation, 2010 - [ret. 16.11.2010], Available online: . 4.2.1

62 [24] Start - Mono [online], Novell, 2010 - [ret. 8.12.2010], Available online: . 4.2.2, 4.3.1.2

[25] Silverlight Tools [online], Microsoft Corporation, 2010 - [ret. 10.12.2010], Avail- able online: .

[26] Aptana | Adobe AIR Plug-In for Aptana Studio, Aptana, Inc., 2010 - [ret. 10.12.2010], Available online: .

[27] Visual Studio R 2010 Editions | Microsoft R Visual Studio R [online], Microsoft Corpo- ration, 2010 - [ret. 11.11.2010], Available online: . 4.3.4

[28] Silverlight Toolkit - Home, Microsoft Corporation, 2010 - [ret. 19.11.2010], Available online: . 4.3.5

[29] Alchemy - Adobe Labs, Adobe Systems Incorporated, 2010 - [ret. 25.11.2010], Avail- able online: . 4.3.7, 4.4.1

[30] Out-of-Browser Support [online], Microsoft Corporation, 2010 - [ret. 20.10.2010], Available online: . 4.4.1

[31] Trusted Applications [online], Microsoft Corporation, 2010 - [ret. 20.10.2010], Avail- able online: .

[32] Adobe Flash Platform * Installing and updating desktop applications [online], Adobe Systems Incorporated, June 10, 2010 - [ret. 15.11.2010], Available online: . 4.4.1

[33] Adobe - Accessibility : Accessibility Best Practices for Flex [online], Adobe Systems Incorporated, 2010 - [ret. 18.10.2010], Available online: . 4.4.2

[34] Adobe AIR 2.0 - Section 508 [online], Adobe Systems Incorporated, 2010 - [ret. 18.10.2010], Available online: . 4.4.2

[35] Silverlight Accessibility Overview [online], Microsoft Corporation, 2010 - [ret. 20.10.2010], Available online: . 4.4.2

63 [36] Managed Threading [online], Microsoft Corporation, June 10, 2010 - [ret. 18.11.2010], Available online: . 4.4.2

[37] XMPP Technologies Overview - The XMPP Standards Foundation [online], The XMPP Standards Foundation, [ret. 3.1.2011], Available online: . 5.1

[38] XMPP Technologies: Jingle - The XMPP Standards Foundation [online], The XMPP Standards Foundation, [ret. 3.1.2011], Available online: . 5.1

[39] Cirrus | Real Time Media Flow Protocol (RTMFP) - Adobe Labs [online], Adobe Sys- tems Incorporated, [ret. 12.5.2010], Available online: . 5.1

[40] Ignite Realtime: XIFF API [online], Jive Software, [ret. 22.12.2010], Available online: . 5.2.1

64 Appendix A Content of attached CD

Attached CD contains configured Flex Builder project folder with all assets and source code required to successfully build the final release of video chat client application. Except that it contains binary release files of main and tester application, as well as README file contain- ing additional information on applications. The project file structure is following:

• bin-release folder contains binary releases of installers

• bin-debug folder contains debug binary files that can be used for debugging pur- poses

• libs folder contains additional required libraries

• src folder contains full source code and assets required for release builds

• .settings, .project folders and additional dot-prefixed files contain Flex project set- tings

65