looking at 1,000 employee records, the Profiler will report the records to be of the same
size, regardless of the sizes of last and first names. Only the size of the property pointing
to the string values is going to be reported within the object. Actual memory used by
strings will be reported separately, and it’s impossible to quantify it as belonging to
employee records.
The second problem is that with deferred garbage collection there are a lot of issues
with comparing memory snapshots of any sizable application. Finding holding refer-
ences as opposed to circular ones is a tedious task and hopefully will be simplified in
the next version of the tool.
As a result, it is usually impractical to check for memory leaks on the large application
level. Most applications incorporate memory usage statistics like 
System.totalMemory
into their logging facility to give developers an idea of possible memory issues during
the development process. A much more interesting approach is to use the Profiler as a
monitoring tool while developing individual modules. You also need to invoke
System.gc()
prior to taking memory snapshots so that irrelevant objects won’t sneak
into your performance analysis.
As far as using the Profiler for performance analysis, it offers a lot more information. It
will reveal the execution times of every function and cumulative times. Most impor-
tantly, it will provide insights into the true cost of excessive binding, initialization and
rendering costs, and computational times. You would not be able to see the time spent
in handling communications, loading code, and doing JIT and data parsing, but at least
you can measure direct costs not related to the design issues but to the coding
techniques.
Read about new Flash Builder 4 profiler features in the article by Jun
Heider at http://www.adobe.com/devnet/flex/articles/flashbuilder4_de
bugging_profiling.html?devcon=f7.
Performance Checklist
While planning for performance improvement of your RIA, consider the following five
categories.
Startup time
To reduce startup time:
• Use preloaders to quickly display either functional elements (logon, etc.) or some
business-related news.
• Design with modularization and optimization of .swf files (remove debug and
metadata information).
• Use RSLs, signed framework libraries.
A Grab Bag of Useful Habits s | | 437
.Pdf to jpg converter online - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
to jpeg; convert pdf file to jpg online
.Pdf to jpg converter online - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
change file from pdf to jpg on; change pdf file to jpg
• Minimize initially displayed UI.
• Externalize (don’t embed) large images and unnecessary resources.
• Process large images to make them smaller for the Web.
UI performance
To improve user interface performance at startup:
• Minimize usage of containers within containers (especially inside data grids). Most
of the UI performance issues are derived from container measurement and layout
code.
• Defer object creation and initialization (don’t do it in constructors). If you post-
pone creation of UI controls up to the moment they become visible, you’ll have
better performance. If you do not update the UI every time one of the properties
changes but instead process them together (
commitProperties()
), you are most
likely to execute common code sections responsible for rendering once instead of
multiple times.
• For some containers, use 
creationPolicy
in queues for perceived initialization
performance.
• Provide adaptive user-controlled duration of effects. Although nice cinemato-
graphic effects are fine during application introduction, their timing and enable-
ment should be controlled by users.
• Minimize update of CSS during runtime. If you need to set a style based on data,
do it early, preferably in the initialization stage of the control and not in the
creationComplete
event, as this minimizes the number of lookups.
• Validate performance of data-bound controls (such as 
List
-based controls) for
scrolling and manipulation (sorting, filtering, etc.) early in development and with
maximum data sets. Do not use the Flex 
Repeater
component with sizable data sets.
• Use the 
cacheAsBitmap
property for fixed-size objects, but not on resizable and
changeable objects.
I/O performance
To speed up I/O operations:
• Use AMF rather than web services and XML-based protocols, especially for large
(over 1 KB) result sets.
• Use strong data types with AMF on both sides for the best performance and mem-
ory usage.
• Use streaming for real-time information. If you have a choice, select the protocols
in the following order: RTMP, AMF streaming, long polling.
• Use lazy loading of data, especially with hierarchical data sets.
438 | | Chapter 8: Performance Improvement: Selected Topics
Online Convert PDF to Jpeg images. Best free online PDF JPEG
Online PDF to JPEG Converter. Download Free Trial. Convert a PDF File to JPG. Drag and drop your PDF in the box above and we'll convert the files for you.
convert pdf photo to jpg; convert multi page pdf to single jpg
Online Convert Jpeg to PDF file. Best free online export Jpg image
Online JPEG to PDF Converter. Download Free Trial. Convert a JPG to PDF. You can drag and drop your JPG file in the box, and then start
reader convert pdf to jpg; convert pdf pages to jpg online
• Try to optimize a legacy data feed; compress it on a proxy server at least, and
provide an AMF wrapper at best.
Memory utilization
To use memory more efficiently:
• Use strongly typed variables whenever possible, especially when you have a large
number of instances.
• Avoid using the XML format.
• Provide usage-based classes for nonembedded resources. For example, when you
build a photo album application, you do want to cache more than a screenful of
images, so that scrolling becomes faster without reloading already scrolled images.
The amount of utilized memory and common sense, however, should prevent you
from keeping all images loaded.
• Avoid unnecessary bindings (like binding used for initialization), as they produce
tons of generated code and live objects. Provide initialization through your code
when it is needed and has minimal performance impact.
• Identify and minimize memory leaks using the Flash Builder Profiler.
Code execution performance
For better performance, you can make your code JIT-compliant by:
• Minimizing references to other classes
• Using strong data types
• Using local variables to optimize data access
• Keeping code out of initialization routines and constructors
Additional code performance tips are:
• For applications working with a large amount of data, consider using the 
Vector
data type (Flash Player 10 and later) over 
Array
.
• Bindings slow startup, as they require initialization of supporting classes; keep it
minimal.
Summary
In this chapter, you learned how to create a small no-Flex logon (or any other) window
that gets downloaded very quickly to the user’s computer, while the rest of the Flex
code is still in transit.
You know how to create any application as a miniportal with a light main application
that loads light modules that:
Summary | | 439
C# Image Convert: How to Convert Adobe PDF to Jpeg, Png, Bmp, &
using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.pdf"; String outputFilePath = @"C:\output.jpg"; // Convert PDF to jpg.
best pdf to jpg converter; pdf to jpeg
C# Image Convert: How to Convert Dicom Image File to Raster Images
RasterEdge.XDoc.PDF.dll. using RasterEdge.XDoc.Converter; String inputFilePath = @"C:\input.dcm"; String outputFilePath = @"C:\output.jpg"; // Convert dicom to
convert pdf page to jpg; convert pdf photo to jpg
• Don’t have the information from services-config.xml engraved into their bodies
• Can be tested by a developer with no dependency on the work of other members
of the team
You won’t think twice when it comes to modifying the code of even such a sacred cow
as 
SystemManager
to feed your needs. Well, you should think twice, but don’t get too
scared if the source code of the Flex framework requires some surgery. If your version
of the modified Flex SDK looks better than the original, submit it as a patch to be
considered for inclusion in the future Flex build; the website is http://opensource.adobe
.com/wiki/display/flexsdk/Submitting+a+Patch.
While developing your enterprise RIA, keep a copy of the “Performance Check-
list” on page 437 handy and refer to it from the very beginning of the project.
If you’ve tried all the techniques that you know to minimize the size of a particu-
lar .swf file and you are still not satisfied with its size, as a last resort, create an Action-
Script project in Flash Builder and rewrite this module without using MXML. This
might help.
440 | | Chapter 8: Performance Improvement: Selected Topics
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
Features and Benefits. Powerful image converter to convert images of JPG Support a batch conversion of JPG to PDF with high speed; Get a compressed PDF file after
convert pdf image to jpg; convert multi page pdf to jpg
VB.NET PDF - Convert PDF with VB.NET WPF PDF Viewer
An advanced PDF converter tool, which supports to be integrated in .NET to image file formats with high quality, support converting PDF to PNG, JPG, BMP and
best convert pdf to jpg; pdf to jpg converter
CHAPTER 9
Working with Adobe AIR
First axiom of user interface design: Don’t make the user
look stupid.
—Alan Cooper
In this chapter, you’ll investigate Adobe Integrated Runtime (AIR), which is a valuable
addition to the arsenal of Flex developers for many reasons:
• AIR allows you to perform all I/O operation with the filesystem on the user’s
desktop.
• AIR allows you to sign applications and allows versioning of applications.
• AIR offers an updater that make it easy to ensure proper upgrades of the applica-
tions on the user’s desktop computer.
• AIR comes with a local database, SQLite, which is a great way to arrange a repo-
sitory of the application data (in clear or encrypted mode) right on the user’s
computer.
• AIR applications can easily monitor and report the status of the network
connection.
• The user can start and run an AIR application even when there is no network
connection available.
• AIR has better support for HTML content.
At the time of this writing, AIR 1.5 has been officially released and AIR 2.0 is in beta.
As you can see, AIR 1.5 is a significant step toward providing a platform for desktop
application development. However, AIR 1.5 is not a full-featured desktop development
environment because of the following limitations:
• It can’t make calls to the user’s native operating system.
• It can’t launch non-AIR applications on the desktop (except the default browser).
• It can’t instantiate a dynamic link library (DLL).
• It can’t directly access the ports (i.e., USB or serial) of the user’s computer.
441
JPG to GIF Converter | Convert JPEG to GIF, Convert GIF to JPG
Features and Benefits. High speed JPEG to GIF Converter, faster than other JPG Converters; Standalone software, so the user who is not online still can use
change pdf to jpg format; convert from pdf to jpg
VB.NET Create PDF from images Library to convert Jpeg, png images
Support create PDF from multiple image formats in VB.NET, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage. .NET converter control for
convert pdf image to jpg image; change pdf into jpg
AIR 2.0 introduces significant improvements that have received a warm welcome in
the developer community, such as:
• It can launch and communicate with native (non-AIR) applications.
• It lowers CPU and memory consumption.
• It supports the detection of mass storage devices (e.g., when a USB device or a
camera is connected or disconnected).
• It knows how to open files with default programs (e.g., PDF files are opened by
Acrobat Reader).
• It gives you access to uncompressed microphone data via the Microsoft Access API.
• It introduces multitouch functionality.
• It introduces UDP sockets, which are a great improvement for such real-time ap-
plications as online games or Voice over IP.
• It includes global error handling, which is guaranteed to catch all unhandled errors.
• It supports screen readers (Windows OS only) for visually impaired users.
• The sizes of the runtime installers are smaller than those in AIR 1.5.
• It can create applications for the iPhone.
In addition to the technical improvements of AIR, Adobe has created a central resource
that collects a growing set of AIR applications developed by third parties. It’s called
Adobe AIR Marketplace.
If you want to create, publish, and sell your own applications, get familiar with a service
code-named Shibuya, which is a monetization service for AIR developers (it’s currently
in beta).
Our message is simple: we highly recommend using AIR for development of desktop
applications.
To help you get started with AIR, this chapter provides a fast-paced review of the basics
of the AIR APIs that are not available in Flex. You’ll then move on to the more advanced
topic of data synchronization between the client and a BlazeDS-powered server. As an
alternative to using LCDS and its Data Management Services, this chapter offers a
synchronization solution with a subclass of 
DataCollection
(see Chapter 6) and
BlazeDS.
Finally, you’ll use AIR to build a small application for a salesperson at a pharmaceutical
firm who visits doctors’ offices, offering the company’s latest drug, Xyzin. During these
visits, the salesperson’s laptop is disconnected from the Internet, but the application
allows note-taking about the visit and saves the information in the local SQLite database
bundled into the AIR runtime. When the Internet connection becomes available, the
application automatically synchronizes the local data with a central database.
442 | | Chapter 9: Working with Adobe AIR
All code samples in this chapter were developed in AIR 1.5.
How AIR Is Different from Flex
You can think of AIR as a superset or a shell for the Flex, Flash, and AJAX programs.
First of all, AIR includes the API for working with files on the user’s computer; Flex
has very limited access to the disk (only file uploading and local shared objects via
advanced cookies). The user can run an AIR application installed on his desktop if it
has the AIR runtime. This runtime is installed pretty seamlessly with minimal user
interaction.
On the other hand, the very fact that AIR applications have to be installed on the user’s
computer forces us developers to take care of things that just don’t exist in Flex appli-
cations. For example, to release a new version of a Flex application, you need to update
the SWFs and some other files on a single server location. With AIR, each user has to
install a new version of your application on his computer, which may already have an
old version installed. The installer should take precautions to ensure that versioning of
the application is done properly and that the application being installed is not some
malicious program that may damage the user’s computer.
In the Flex world, if the user’s computer is not connected to the Internet, he can’t work
with your RIA. This is not the case with AIR applications, which can work in discon-
nected mode, too. Although Flex does not have language elements or libraries that can
work with a relational DBMS, AIR comes bundled with a version of SQLite that is
installed on the client and is used to create a local database (a.k.a. local cache) to store
application data in the disconnected mode. If needed, AIR can encrypt the data stored
in this local database. Consider the salesperson visiting customers with a laptop. Al-
though no Internet connection is available, she can still use the AIR application and
save the data in the local database. As soon as the Internet connection becomes avail-
able, the AIR application then synchronizes the local and remote databases.
Rendering of HTML is yet another area where AIR beats Flex hands down. AIR does
it by leveraging the open source web-browsing engine called WebKit. Loading a web
page into your AIR application is a simple matter of adding a few lines of code; you’ll
learn how to do it later in this chapter.
The inclusion of WebKit makes AIR an attractive environment not only
for Flex, but also for HTML/AJAX developers as well. If you are an AJAX
developer and your application works with WebKit, it’ll work inside
AIR, which opens a plethora of additional functionalities in any AJAX
program.
How AIR Is Different from Flex x | | 443
Hello World in AIR
The AIR SDK is free, so if you are willing to write code in Notepad (or your favorite
text editor) and compile and build your applications using command-line tools either
directly or hooked up to an IDE of your choice, you can certainly create AIR applications
without having to purchase any additional software. In particular, AIR comes with the
following tools:
ADL
The AIR Debug Launcher that you can use from a command line
ADT
The AIR Developer Tool with which you create deployable .air files
Most likely, you’ll work in the Flash Builder IDE, which includes the AIR project cre-
ation wizard. To get familiar with this method, try developing a HelloWorld application.
1.Create a new Flex project called HelloWorld in Flash Builder.
2.In the same window where you enter the project name, select the radio button
titled “Desktop application (runs in Adobe AIR).” Click the Finish button to see a
window similar to Figure 9-1.
3.Instead of the familiar 
<mx:Application>
tag, the root tag of an AIR application is
<mx:WindowedApplication>
. Add a line 
<mx:Label text="Hello World">
to the code
and run this application. Figure 9-2 shows the results.
Figure 9-1. An empty template of the AIR application
The src folder of your Flash Builder project now contains an application descriptor file
called HelloWorld-app.xmlExample 9-1 shows a fragment of this file. (If you don’t use
Flash Builder, you’ll have to write the file manually.)
444 | | Chapter 9: Working with Adobe AIR
Figure 9-2. Running the HelloWorld application
Example 9-1. Partial application descriptor file for HelloWorld
<application xmlns="http://ns.adobe.com/air/application/1.5.1">
<id>HelloWorld</id>
<!-- Used as the filename for the application. Required. -->
<filename>HelloWorld</filename>
<!-- The name that is displayed in the AIR application installer.
Optional. -->
<name>HelloWorld</name>
Required. -->
<version>v1</version>
The namespace that ends with 1.5.1 indicates the minimum required version of the
AIR runtime. AIR is forward compatible, however, so an application built in, say, AIR
1.0 can be installed on the machines that have any runtime with a version greater than
1.0.
Hello World in AIR R | | 445
You may run into an issue while trying to run an AIR application from
Flash Builder: it won’t start but doesn’t report any errors either. To fix
this issue, make sure that the namespace ends with 1.5.1 or whatever
the current version of AIR is that you use.
The application ID must be unique for each installed AIR application signed by
the same code-signing certificate. Hence using reverse domain notation, like
com.farata.HelloWorld
, is recommended.
To prepare a package for deploying your application:
1.Choose Project→Export Release Build, just as you would for deploying Flex appli-
cations. Flash Builder will offer to create an installer for the application, an AIR
file named HelloWorld.air. There is no need to create an HTML wrapper here as
with Flex applications.
2.Press the Next button. Flash Builder displays a window that asks for you to sign
this application using a precreated digital certificate or to export to an intermediate
file (with the .air name extension) that you can sign later. This second option is
useful if, for example, your firm enforces a special secure way of signing
applications.
3.If you don’t have a real digital certificate, click on the Create button to create a self-
signed certificate, which is good enough for the development stage of your AIR
application.
4.Fill out the creation form in Figure 9-3 and name the file testCertificate.p12.
You can purchase a digital certificate from ChosenSecurityGlobal
SignThawte, or VeriSign.
5.Click OK to save the file.
You’ll now see a window that specifies what to include in the HelloWorld.air file.
This simple example requires only two files: the application descriptor HelloWorld-
app.xml and the application file HelloWorld.swf.
Congratulations—you’ve created your first AIR application. Now what? How do users
run HelloWorld.air if their computers don’t have Flash Builder? They must download
and install the latest version of the AIR runtime (about 15 MB) from http://get.adobe
.com/air/.
When this is complete, they double-click on HelloWorld.air to start the installation of
the HelloWorld application and see the scary message in Figure 9-4.
446 | | Chapter 9: Working with Adobe AIR
Documents you may be interested
Documents you may be interested